前面提到ANOVA的F检验能够知道五种疗法有显著性差异,但是不知道哪一种疗法和其他疗法不同,多重比较可以解决这个问题。TukeyHSD()函数提供对各组均值差异的成对比较。但是TukeyHSD()函数与HH包存在不兼容性的问题,在调用TukeyHSD()函数时,要先从搜索路径中删除HH包,命令:detach("package::HH"),否则TukeyHSD()函数将会失效。
TukeyHSD成对组间比较:
> TukeyHSD(fit)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = response ~ trt)
$trt
diff lwr upr p adj
2times-1time 3.44300 -0.6582817 7.544282 0.1380949
4times-1time 6.59281 2.4915283 10.694092 0.0003542
drugD-1time 9.57920 5.4779183 13.680482 0.0000003
drugE-1time 15.16555 11.0642683 19.266832 0.0000000
4times-2times 3.14981 -0.9514717 7.251092 0.2050382
drugD-2times 6.13620 2.0349183 10.237482 0.0009611
drugE-2times 11.72255 7.6212683 15.823832 0.0000000
drugD-4times 2.98639 -1.1148917 7.087672 0.2512446
drugE-4times 8.57274 4.4714583 12.674022 0.0000037
drugE-drugD 5.58635 1.4850683 9.687632 0.0030633
> par(las=2)
> par(mar=c(5,8,4,2))
> plot(TukeyHSD(fit))
从结果显示可知,1times和2times的均值差异不显著(p=0.138),1times和4times之间的差异非常显著(p<0.001)
成对比较图形如下图:par(las=2)语句用来旋转轴标签,第二个par(mar=c(5,8,4,2))用来增大左边界的面积,可使得标签摆放更加美观。图形中置信区间包含0的说明两者之间的差异不明显,即2times-1time、4times-2times 、drugD-4times。
mulcomp包的ghlt()函数提供多重均值比较更全面的方法。适用于线性模型也适用于广义线性模型。
library(multcomp)
par(mar=c(5,4,6,2))
tuk <- glht(fit,linfct=mcp(trt="Tukey"))
plot(cld(tuk,level=.05),col="lightgrey")
par增大顶部边界面积,cld()函数的level选项设置使用显著性水平(0.05,即95%的置信区间),有相同字母的说明均值差异不显著,即2times-1time、4times-2times 、drugD-4times之间均有相同字母,故差异不显著。没有相同字母的差异明显。