一、单因素方差分析

检验目的:检验多个正态总体的均值是否都相同,进而判断各因素对试验指标的影响是否显著。
适用条件:每个总体独立,且都服从正态分布,方差未知且相同
代码示例:

  1. #组a来自N(0,1),组b来自N(1,1),组c来自N(10,1)
  2. data1 <- data.frame('x'=c(rnorm(10,0,1),rnorm(10,1,1),rnorm(10,10,1)),
  3. 'group'=c(rep('a',10),rep('b',10),rep('c',10)))
  4. fit1 <- aov(x~group,data = data1)
  5. summary(fit1)
  6. #两两比较均值差异
  7. TukeyHSD(fit1)
  8. #作图进行多重比较
  9. tukey <- as.data.frame(TukeyHSD(fit1)$group)
  10. tukey$pair <- rownames(tukey)
  11. ggplot(tukey, aes(colour=cut(`p adj`, c(0, 0.01, 0.05, 1),
  12. label=c("p<0.01","p<0.05","Non-Sig")))) +
  13. theme_bw(base_size = 15)+
  14. geom_hline(yintercept=0, lty="11", colour="grey30",size = 1) +
  15. geom_errorbar(aes(pair, ymin=lwr, ymax=upr), width=0.2,size = 1) +
  16. geom_point(aes(pair, diff),size = 2)+
  17. 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的差异很大,那么可以认为它们的位置参数不全相同,原假设不成立。
检验统计量为
image.png
N为总样本量,n为第i个总体的样本量
原假设成立的条件下,H近似服从自由度为k-1的卡方分布
代码示例:

  1. #三组数据都服从服从lambda=1得指数分布,但位置参数不相同
  2. data1 <- data.frame('x'=c(rexp(10,1),rexp(10,1)+0.5,rexp(10,1)+1),
  3. 'group'=c(rep('a',10),rep('b',10),rep('c',10)))
  4. #整体检验
  5. kruskal.test(x~group, data = data1)
  6. #两两比较
  7. library(PMCMRplus)
  8. kruskalmc(x~group, data=data1, probs=0.05)
  9. #上面这个函数看不到p值得具体大小,如果要看p值可以用下面这个函数
  10. library(rcompanion)
  11. pairwise.wilcox.test(data1$x,data1$group)