一、单因素方差分析
检验目的:检验多个正态总体的均值是否都相同,进而判断各因素对试验指标的影响是否显著。
适用条件:每个总体独立,且都服从正态分布,方差未知且相同
代码示例:
#组a来自N(0,1),组b来自N(1,1),组c来自N(10,1)
data1 <- data.frame('x'=c(rnorm(10,0,1),rnorm(10,1,1),rnorm(10,10,1)),
'group'=c(rep('a',10),rep('b',10),rep('c',10)))
fit1 <- aov(x~group,data = data1)
summary(fit1)
#两两比较均值差异
TukeyHSD(fit1)
#作图进行多重比较
tukey <- as.data.frame(TukeyHSD(fit1)$group)
tukey$pair <- rownames(tukey)
ggplot(tukey, aes(colour=cut(`p adj`, c(0, 0.01, 0.05, 1),
label=c("p<0.01","p<0.05","Non-Sig")))) +
theme_bw(base_size = 15)+
geom_hline(yintercept=0, lty="11", colour="grey30",size = 1) +
geom_errorbar(aes(pair, ymin=lwr, ymax=upr), width=0.2,size = 1) +
geom_point(aes(pair, diff),size = 2)+
labs(colour="Conclusion")
二、非正态时的方差分析
(非参数Kruskal Wallis秩和检验)
检验目的:检验多个独立总体分布的位置参数是否都相同,就是说分布函数的形状相同,但可能位置不同,如N(0,1)和N(10,1)
适用条件:总体不服从正态分布,无法使用一般的方差分析;各个总体的分布连续,且分布形状相似
检验思路:
假设有k个总体,每个总体的分布函数为F,
H0:F=F=…=F=F(x) ←→ H1:F=F(x+θ),θ不全相同
将各个总体的所有样本混合起来排序,记录来自各个总体的样本秩之和R,如果这些R的差异很大,那么可以认为它们的位置参数不全相同,原假设不成立。
检验统计量为
N为总样本量,n为第i个总体的样本量
原假设成立的条件下,H近似服从自由度为k-1的卡方分布
代码示例:
#三组数据都服从服从lambda=1得指数分布,但位置参数不相同
data1 <- data.frame('x'=c(rexp(10,1),rexp(10,1)+0.5,rexp(10,1)+1),
'group'=c(rep('a',10),rep('b',10),rep('c',10)))
#整体检验
kruskal.test(x~group, data = data1)
#两两比较
library(PMCMRplus)
kruskalmc(x~group, data=data1, probs=0.05)
#上面这个函数看不到p值得具体大小,如果要看p值可以用下面这个函数
library(rcompanion)
pairwise.wilcox.test(data1$x,data1$group)