summary()

sapply(x,fun,options):对数据框或矩阵中的每一个向量进行统计

mean

sd:标准差

var:方差

min:

max:

median:

length:

range:

quantile:

vars <- c("mpg", "hp", "wt")
head(mtcars[vars])

summary(mtcars[vars])

mystats <- function(x, na.omit = FALSE) {

if (na.omit)
x <- x[!is.na(x)]  #去掉缺失值
m <- mean(x)
n <- length(x)
s <- sd(x)
skew <- sum((x - m)^3/s^3)/n #偏度
kurt <- sum((x - m)^4/s^4)/n - 3 #峰度
return(c(n = n, mean = m, stdev = s, skew = skew, kurtosis = kurt))
}

sapply(mtcars[vars], mystats)

#如结果,分布右偏(0.61),较正态分布稍平(-0.37)

#Hmisc包中的describe可返回变量和观测的数量,缺失值和唯一值的数目、平均值、分位数及五个最大的值和最小的值

library(Hmisc)
describe(mtcars[vars])

#pastects包中有一个stat.desc函数,可以计算各种描述性统计量

library(pastecs)
stat.desc(mtcars[vars])

#psych包的describe可以计算描述性统计量

library(psych)
describe(mtcars[vars])

#aggregate():分组获取描述性统计量

aggregate(mtcars[vars], by = list(am = mtcars$am), mean)
aggregate(mtcars[vars], by = list(am = mtcars$am), sd)

#by(data,indices,fun)

dstats <- function(x)(c(mean=mean(x), sd=sd(x)))
by(mtcars[vars], mtcars$am, dstats)

#doBy的summaryBy可以分组计算描述性统计量

library(doBy)
summaryBy(mpg + hp + wt ~ am, data = mtcars, FUN = mystats)

#psych中的desribe.by可以分组计算描述性统计量,但不允许指定任何函数。

library(psych)
describe.by(mtcars[vars], mtcars$am)

#使用reshape包

library(reshape)
dstats <- function(x) (c(n = length(x), mean = mean(x), sd = sd(x)))

#id.vars,按什么分组,measure看什么变量?
dfm <- melt(mtcars, measure.vars = c("mpg", "hp", "wt"), id.vars = c("am", "cyl"))
cast(dfm, am + cyl + variable ~ ., dstats)

table:使用N个类别型变量创建一个N维列联表

xtabs:根据一个公式和一个矩阵或数据框创建一个N维列联表

prop.table:将表中条目表示为分数形式

margin.table:计算表中条目的和

addmargins:将结果放入表中

ftable:创建一个紧凑的平铺式列联表

#一维列联表

mytable <- with(Arthritis, table(Improved))
mytable
prop.table(mytable)

#二维列联表

mytable <- xtabs(~ Treatment+Improved, data=Arthritis)
mytable

#计算边缘频数,1表示第一个变量
margin.table(mytable, 1)

#计算边缘比例,1表示第一个变量
prop.table(mytable, 1)
margin.table(mytable, 2)
prop.table(mytable, 2)
prop.table(mytable)

#每行和每列最后加sum
addmargins(mytable)
admargins(prop.table(mytable))

#仅添加各行的和
addmargins(prop.table(mytable, 1), 2)

#仅添加各列的和
addmargins(prop.table(mytable, 2, 1)

#可以用gmodels的CrossTable生成二维列联表

library(gmodels)
CrossTable(Arthritis$Treatment, Arthritis$Improved)

#独立性检验

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
chisq.test(mytable)

#以上代码结果p值为0.001,存在某种关系
mytable <- xtabs(~Improved+Sex, data=Arthritis)
chisq.test(mytable)

#以上代码结果p值为0.08,没关系

#以下代码结果p值为0.001,有关系

mytable <- xtabs(~Treatment+Improved, data=Arthritis)
fisher.test(mytable)

#以下代码p值为0.0006,假设不存在三阶交互作用

mytable <- xtabs(~Treatment+Improved+Sex, data=Arthritis)
mantelhaen.test(mytable)

#以下为相关性度量,值越大相关性越强

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
assocstats(mytable)

#cor函数:计算Pearson相关系数,Spearman相关系数,Kendall相关系数

#cov函数:计算协方差

states <- state.x77[, 1:6]

#以下代码计算方差和协方差
cov(states)

#以下代码计算Pearson积差相关系数
cor(states)

#以下代码计算Spearman等级相关系数
cor(states, method="spearman")

#可以看出收入和高中毕业率之间存在强正相关,文盲率和预期寿命之间存在很强的负相关

#设定行列,可以得出更直观的结果

x <- states[, c("Population", "Income", "Illiteracy", "HS Grad")]
y <- states[, c("Life Exp", "Murder")]
cor(x, y)

#相关性检验

cor.test(states[, 3], states[, 5])

#一次检验多个

library(psych)
corr.test(states, use = "complete")

#独立样本t检验

library(MASS)
t.test(Prob ~ So, data=UScrime).

#非独立样本t检验

library(MASS)
sapply(UScrime[c("U1", "U2")], function(x) (c(mean = mean(x),
sd = sd(x))))
with(UScrime, t.test(U1, U2, paired = TRUE))

#组间差异的非参数检验,wilcox.test适用于两组成对数据和无法保证正态性假设的情境

with(UScrime, by(Prob, So, median))

wilcox.test(Prob ~ So, data=UScrime)

#paired设为TRUE,配对检验

sapply(UScrime[c("U1", "U2")], median)
with(UScrime, wilcox.test(U1, U2, paired = TRUE))

#多于两组的检验

states <- as.data.frame(cbind(state.region, state.x77))
kruskal.test(Illiteracy ~ state.region, data=states)

R语言实战读书笔记(七)基本统计分析的更多相关文章

  1. R语言实战读书笔记(二)创建数据集

    2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...

  2. R语言实战读书笔记(三)图形初阶

    这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...

  3. R语言实战读书笔记1—语言介绍

    第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...

  4. R语言实战读书笔记2—创建数据集(上)

    第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...

  5. R语言实战读书笔记(八)回归

    简单线性:用一个量化验的解释变量预测一个量化的响应变量 多项式:用一个量化的解决变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性:用两个或多个量化的解释变量预测一个量化的响应变量 多变量: ...

  6. R语言实战读书笔记(五)高级数据管理

    5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...

  7. R语言实战读书笔记(四)基本数据管理

    4.2 创建新变量 几个运算符: ^或**:求幂 x%%y:求余 x%/%y:整数除 4.3 变量的重编码 with(): within():可以修改数据框 4.4 变量重命名 包reshape中有个 ...

  8. R语言实战读书笔记(一)R语言介绍

    1.3.3 工作空间 getwd():显示当前工作目录 setwd():设置当前工作目录 ls():列出当前工作空间中的对象 rm():删除对象 1.3.4 输入与输出 source():执行脚本

  9. R语言实战读书笔记(十三)广义线性模型

    # 婚外情数据集 data(Affairs, package = "AER") summary(Affairs) table(Affairs$affairs) # 用二值变量,是或 ...

随机推荐

  1. mysql 的 case when 用法

    正确的格式: case when condition then result when condition then result when condition then result else re ...

  2. Linux异常处理体系结构

    arm11处理器裸机的异常与中断处理参考: [OK6410裸机程序]异常处理 [OK6410裸机程序]按键中断 另外参考一篇:Linux中断体系结构 在ARM V4及V4T以后的大部分处理器中,中断向 ...

  3. DP刷题记录(长期更新)

    bzoj 2748 一个吉他手,有一个初始音量,有一个音量最大值max. 给定n个音量变化量,从第一个变化量开始,可以选择加上或者减去变化量.途中音量不能低于0,不能超过max. 求最后能达到的最大音 ...

  4. 使用sprunge粘贴文字

    在irc里面请教的时候,需要输出很多文本,irc禁止输入多行文字. 使用sprunge可以返回一个网址,省去复制粘贴的麻烦. 1> 简单使用: command | curl -F "s ...

  5. JAVA-基础(二) java.lang

    1.String类提供了许多从String对象中截取字符的方法 1.1 char charAt(int where) 1.2 void getChars(int sourceStart, int so ...

  6. MySQL数据库详解(一)执行SQL查询语句时,其底层到底经历了什么?

    一条SQL查询语句是如何执行的? 前言 ​ 大家好,我是WZY,今天我们学习下MySQL的基础框架,看一件事千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MyS ...

  7. 链表中倒数第k个结点 【微软面试100题 第十三题】

    题目要求: 输入一个链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针. 参考资料:剑指offer第15题 题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走 ...

  8. ogre3D学习基础6---场景管理器的使用

    场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World).父节点空间(Parent)以及本地空间(Local). 1.世界空间 就是物体所存在的地方,当我们 ...

  9. 大数据学习——scala数组

    package com import scala.collection.mutable.ArrayBuffer /** * Created by Administrator on 2019/4/8. ...

  10. Educational Codeforces Round 37 (Rated for Div. 2)

    我的代码应该不会被hack,立个flag A. Water The Garden time limit per test 1 second memory limit per test 256 mega ...