基本统计分析

时间:2021-09-18 07:24:42

描述性统计分析

关注于连续性变量的中心趋势、变化性和分布形状

> summary(object,...)
> # 返回最小值、最大值、四分位数和平均值
> sapply(x,FUN,options)
> library(Hmisc)
> describe(x,...)
> # 返回变量和观测的数量、缺失值和唯一值得数目、平均值、分位数,以及
# 五个最大和五个最小的值
> library(pastecs)
> stat.desc(x,basic=TRUE,desc=TRUE,norm=FALSE,p=0.95)
> # basic=TRUE:
# 所有值、空值、缺失值的数量, 最小值、最大值、值域、总和
# desc=TRUE:
# 中位数、平均值、平均值的标准误、平均值置信度为95%的置信区间、
# 方差、标准差以及变异系数
# norm=TRUE:
# 偏度、峰度以及它们的统计显著程度和Shapiro-Wilk正态检验结果

分组聚合

> library(doBy)
> summaryBy(var1+var2~group1+group2,data,FUN)
> library(psych)
> describe.by(y,g)
> library(reshape)
> dfm <- melt(dataframe,measure.vars=y,id.vars=g)
> cast(dfm,group1+group2+...+variable~.,FUN)

频数统计

> table(var1,var2,var3)
> xtab(~var1+var2+var3,data)
> prop.table(table,margins)
> margin.table(table,margins)
> addmargins(table,margins)
> ftable(table)

列联分析

两个标称变量之间的相关性

卡方独立性检验

H0 : x 和 y 独立

> mytable <- xtabs(~x+y,data)
> chisq.test(mytable)
> ##p_value < 0.05 => x和y不独立

Fisher精确检验

解决卡方检验由于有频数<5时算法不精确问题

> fisher.test(mytable)

Cochran-Mantel-Haenszel检验

H0 : 两个名义变量在第三个变量的每一层中都是条件独立的

> mytable <- xtabs(~x+y+z,data)
> chisq.test(mytable)
> ##p_value < 0.05 => x和y在z的每一水平下并不独立

相关性度量

度量相关性强弱

> assocstats(mytable)

相关

相关系数

pearson相关系数:衡量两个定量变量之间的线性相关程度
spearman相关系数:衡量两个定序变量之间的线性相关程度
kendall相关系数:衡量两个定序变量之间的线性相关程度的非参数方法

> cor(x,y=NULL,use="everything",method = c("pearson", "kendall", "spearman"))

相关性的显著性检验

H0 : 相关系数为0

> cor.test(x,y)
> library(psych)
> corr.test(x, y = NULL, use = "pairwise", method = "pearson")

两组间差异

H0 : 两组间差异不明显

t.test

独立样本

> t.test(y~x,data)
> t.test(y1,y2)

匹配样本,假定组间差异呈正态分布

> t.test(y1,y2,paired=TRUE) 

非参数检验

曼-惠特尼-威尔科克森检验

独立样本

> wilcox.test(y~x,data)
> wilcox.test(y1,y2)

威尔科克森符号秩检验

匹配样本,重复测量设计

> wilcox.test(y1,y2,paired=TRUE)

多组间差异

H0 : 多组间差异不明显

ANOVA

单因素方差分析

比较分类因子定义的两个或多个组别中的因变量均值

> library(doBy)
> summaryBy(y~A,data,FUN=function(x)(c(mean=mean(x),sd=sd(x)))
> fit <- aov(y~A,data)
> summary(fit)
> library(gplots)
> plotmeans(y~A,data,main='Mean Plot\nwith 95%CI')
> TukeyHSD(fit) #多重比较
> par(las=2,mar=c(5,8,4,2))
> plot(TukeyHSD(fit))
> library(multcomp)
> par(mar=c(5,4,6,2))
> tuk <- glht(fit,linfct=mcp(trt="Tukey"))
> plot(cld(tuk,level=.05),col='lightgrey') ##相同字母,均值差异不明显

待续

非参数方法

克鲁斯卡尔-沃利斯检验

独立样本

> kruskal.test(y~A,data)

Friedman检验

不独立,重复测量设计,随机区组设计

> friedman.test(y~A|B,data) ##y是结果变量,A是分组变量,B是区组变量

多组比较

> library(npmc)
> mydata <- df[c('y','A')]
> summary(npmc(mydata),type="BF")