基于R语言的七种多重比较方法
一花视界
百家号10-1403:18
多重比较的方法很多,根据试验设计的目的不同有不同的应用。
若试验设计之初,便明确要比较某几个组均数间是否有差异,称为事前比较。常用的事前比较方法有LSD、Bonferroni和Dunnett法。
若研究目的是方差分析有统计学差异后,想知道哪些组间的均数有差异,便是事后比较。事后比较的常用方法有SNK、Turkey、Scheffe 和 Bonferroni法.
本文仅介绍7种方法及R语言函数,可解决绝大部分多重比较问题。
LSD法即最小显著差法;该法一般用于计划好的多重比较。它其实只是t检验的一个简单变形,并未对检验水准做出任何校正,只是为所有组的均数统一估计了一个更为稳健的标准误。
LSD法比较效果较为灵敏,在R语言中可利用agricolae包中的LSD。test函数实现,其调用格式为:
LSD。test(y, trt, DFerror, MSerror, alpha = 0。05, =c("none",";holm",";hommel", "hochberg", "bonferroni", ";BH", "BY";, ";fdr"), …)
其中y为方差分析对象,trt为要进行多重比较的分组变量,p。adj可以选定P值矫正方法。=”none”时,为LSD法,p。adj=";bonferroni"时为Bonferroni法。
R代码:
library(agricolae)
# sweetpotato为agricolae自带数据集
data(sweetpotato)
#进行方差分析,分组变量为virus
model
#进行多重比较,不矫正P值
out <;— (model,";virus&quot;,=";" =&quot;none&quot; )
#结果显示:标记字母法
out$group
#可视化
plot(out)
程序运行结果:
从运行结果看,四个处理,oo和ff处理无差异,与cc和fc彼此差异显著。下图是可视化结果.
2. Bonferroni法
它是Bonferroni校正在LSD法上的应用. ";bonferroni";即为Bonferroni法。
R代码:
library(agricolae)
# sweetpotato为agricolae自带数据集
data(sweetpotato)
#进行方差分析,分组变量为virus
model
#进行多重比较,不矫正P值
out <— (model,&quot;virus&quot;,=&quot;&quot; p。adj="; bonferroni&quot; )
#结果显示:标记字母法
out$group
#可视化
plot(out)
运行结果与LSD法类似,不再展示。
3。 Dunnett检验
用于多个试验组与一个对照组间的比较。R语言中可利用multcomp包中的glht()函数进行包括Dunnett检验在内的多种检验,其调用格式为:
glht(model, linfct, alternative = c("";, &quot;less&quot;, &quot;greater&quot;), .。.)
其中model为方差分析对象,linfct设置要进行多重比较的分组变量和方法。
R代码:
library(multcomp)
rht &lt;— glht(model,=";&quot; linfct=";mcp(virus&quot; =="&quot; "dunnett&quot;),alternative=";"; )
#model是方差分析对象
#virus是分组变量
#方法为Dunnett
summary(rht)
#可视化
plot(rht)
程序运行结果:
结果表明:三个处理均与对照cc差异显著。下图为可视化结果:
4. SNK法(Student-Newman-Keuls)
实质上是根据预先制定的准则将各组均数分为多个子集, 利用Studentized Range分布来进行假设检验。推荐
基于R语言多重比较方法 来自淘豆网m.daumloan.com转载请标明出处.