如何在显示成对分组的表格中获得Tukey HSD事后测试的结果?


13

我希望在使用R进行双向Anova后执行TukeyHSD事后测试,以获得包含按显着性差异分组的排序对的表格。(很抱歉,我仍然不熟悉统计数据。)

我想要这样的东西:

在此处输入图片说明

因此,按星号或字母分组。

任何想法?我HSD.test()agricolae程序包中测试了该功能,但似乎无法处理双向表。

Answers:


22

agricolae::HSD.test函数正是这样做的,但是您需要让它知道您对交互作用术语感兴趣。这是一个Stata数据集的示例:

library(foreign)
yield <- read.dta("http://www.stata-press.com/data/r12/yield.dta")
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

结果如下所示:

Groups, Treatments and means
a        2.1     51.17547 
ab       4.1     50.7529 
abc      3.1     47.36229 
 bcd     1.1     45.81229 
  cd     5.1     44.55313 
   de    4.0     41.81757 
    ef   2.0     38.79482 
    ef   1.0     36.91257 
     f   3.0     36.34383 
     f   5.0     35.69507 

它们与我们将通过以下命令获得的内容相匹配:

. webuse yield
. regress yield fertilizer##irrigation
. pwcompare fertilizer#irrigation, group mcompare(tukey)

-------------------------------------------------------
                      |                           Tukey
                      |     Margin   Std. Err.   Groups
----------------------+--------------------------------
fertilizer#irrigation |
                 1 0  |   36.91257   1.116571    AB    
                 1 1  |   45.81229   1.116571      CDE 
                 2 0  |   38.79482   1.116571    AB    
                 2 1  |   51.17547   1.116571         F
                 3 0  |   36.34383   1.116571    A     
                 3 1  |   47.36229   1.116571       DEF
                 4 0  |   41.81757   1.116571     BC   
                 4 1  |    50.7529   1.116571        EF
                 5 0  |   35.69507   1.116571    A     
                 5 1  |   44.55313   1.116571      CD  
-------------------------------------------------------
Note: Margins sharing a letter in the group label are
      not significantly different at the 5% level.

multcomp包还提供了可视化的象征(“紧凑信显示”,看到算法契约书显示:比较与评价有详细介绍)显著两两比较的,虽然它不以表格的形式呈现出来。但是,它具有一种绘制方法,可以使用盒形图方便地显示结果。演示顺序也可以更改(选项decreasing=),并且它具有更多的选项可用于多个比较。还有一个multcompView软件包,扩展了这些功能。

这是使用进行分析的相同示例glht

library(multcomp)
tuk <- glht(amod, linfct = mcp(tx = "Tukey"))
summary(tuk)          # standard display
tuk.cld <- cld(tuk)   # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)

共享同一字母的处理在所选级别(默认值为5%)上没有显着差异。

在此处输入图片说明

顺便说一句,目前有一个新项目托管在R-Forge上,该项目看起来很有希望:factorplot。它包括基于行和字母的显示,以及所有成对比较的矩阵概览(通过电平图)。可以在这里找到工作文件:factorplot:改进GLM中简单对比度的表示


非常感谢您提供详尽的答案!几分钟后,我将尝试这些不同的方法。干杯!
stragu

我尝试了multcomp包函数,当我使用“ cld()”函数时出现错误“错误:sapply(split_names,length)== 2并非全为真”知道为什么吗?
stragu'7

1
@chtfn变量标签似乎有问题。快速查看源代码表明此错误消息是从中insert_absorb()尝试提取一对处理方法的。您也许可以尝试更改用于对交互项进行编码的分隔符?没有有效的示例,很难说出发生了什么。
chl 2012年

我弄清楚了:我的基因型和治疗方法名称中有点,并且由于qlht()使用点将对名称分开,所以它吓坏了。非常感谢您的所有帮助,CHL!:)
stragu

3
今天我注意到,现在我要补充console=TRUEHSD.test(),以获得表格,万一有人尝试这一点,并认为没有结果。可能是的更新agricolae
stragu

2

TukeyHSD根据帮助文件,有一个函数被称为,该函数针对具有指定覆盖范围的因素的因子水平的均值之间的差异计算一组置信区间。间隔基于学生化范围统计量(Tukey的“诚实显着性差异”方法)。这是您想要的吗?

http://stat.ethz.ch/R-manual/R-patched/library/stats/html/TukeyHSD.html


谢谢您的答复。是的,我尝试了此功能,但它为我提供了比较的原始列表。我想要看到的是将它们分组为问题图像中的图像,以清楚地了解哪个组与哪个组不同,并最终在图上添加组名(例如:a,ab,abc,bc ,c)
stragu 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.