R语言进行组间的多重比较(Bonferroni 法)
在我们实际数据分析中,通常会碰到两组以上定量数据的比较,对于这种需求我们不能再进行t检验,因为这样会增加一类错误的概率。
t检验每次只能进行两组之间的比较,每次比较时犯一类错误的概率为α(0.05),假设有3组之间需要相互比较,一共需要比较3次,那么每次比较时不犯I类错误的概率为:0.95(1-0.05);那么比较三次均不犯错误的概率为为:0.95^3=0.857375;那么犯I类错误的概率为1-0.857375=0.142625,远大于设定的0.05,并且随比较次数的增多,这个概率还在增大,因此多个均数的比较不适合t检验。
多个样本均数的比较可以使用以下方法:Bonferroni 法、Dunnett法、Tukey的HSD检验法、SNK法、LSD法。
那么这些方法在R中如何实现呢?
近期整理了一些先放一波!—Bonferroni 法
Bonferroni 法
Bonferroni 法的实质是对检验水平进行调整,调整的检验水平为:α=0.05/调整的次数。Bonferr0ni 法比较保守,在比较次数小于10次时效果较好,大于10次时,其检验水平较低,结果偏于保守。为此Sidak(1967年)提出调整的检验水平:α,=1-
因此大家使用该法时可以使用该公式稍微调大一点自己每一次比较时的检验水准。 那么在R中我们如何实现呢? 我们可以先使用t检验,最后得到的p值不跟0.05比,而跟调整后的α比,但这样万一自己突然搞混了就惨了。因此我推荐pairwise.t.test函数进行多重t检验的比较,该函数能够返回调整后的P值。 函数用法:

Usage
pairwise.t.test(x, g, p.adjust.method = p.adjust.methods,
pool.sd = !paired, paired = FALSE,
alternative = c("two.sided", "less", "greater"),
...)

我们使用R自带的airquality数据进行展示,比较不同月份的航班数之间是否有区别
pairwise.t.test(airquality$Ozone, airquality$Month, p.adj = "bonf",data=airquality)

结果显示5月和7月、8月;6月和8月;7月和9月;8月和9月;之间的p值<0.05,差异具有显著性。
后期再为大家介绍其他方法在R中的实现!
最后编辑于 2022-10-09 · 浏览 1346