如何使用Anova命令(汽车包)进行Tukey HSD测试

时间:2011-10-11 21:02:18

标签: r lm anova r-car tukeyhsd

我正在处理不平衡的设计/样本,最初学习aov()。我现在知道,对于我的ANOVA测试,我需要使用Type III平方和,其中涉及使用lm()而不是aov()使用拟合。

问题是使用lm()进行事后测试(特别是Tukey的HSD)。我所做的所有研究都表示在simint包中使用multcomp会起作用,但现在已经更新了该命令似乎无法使用。它似乎依赖于通过aov()来计算。

基本上我为R找到的所有Tukey HSD测试都假设您使用aov()进行比较,而不是lm()。为了获得我必须使用的不平衡设计所需的III型平方和:

mod<-lm(Snavg~StudentEthnicity*StudentGender)

Anova(mod, type="III")

如何使用lm()对我的mod使用Tukey HSD测试?或者相反,使用Type III计算我的ANOVA并且仍然能够进行Tukey HSD测试?

谢谢!

3 个答案:

答案 0 :(得分:7)

HSD.test

中试试agricolae
library(agricolae)
data(sweetpotato)
model<-lm(yield~virus, data=sweetpotato)
comparison <- HSD.test(model,"virus", group=TRUE,
main="Yield of sweetpotato\nDealt with different virus")

<强>输出

Study: Yield of sweetpotato
Dealt with different virus

HSD Test for yield 

Mean Square Error:  22.48917 

virus,  means

      yield  std.err replication
cc 24.40000 2.084067           3
fc 12.86667 1.246774           3
ff 36.33333 4.233727           3
oo 36.90000 2.482606           3

alpha: 0.05 ; Df Error: 8 
Critical Value of Studentized Range: 4.52881 

Honestly Significant Difference: 12.39967 

Means with the same letter are not significantly different.

Groups, Treatments and means
a        oo      36.9 
ab       ff      36.33333 
 bc      cc      24.4 
  c      fc      12.86667 

答案 1 :(得分:1)

我遇到了同样的问题,HSD.test什么都没打印出来。您需要将console=TRUE放在函数内部,以便自动打印出来。

例如:

HSD.test(alturacrit.anova, "fator", console=TRUE).
Hope it helps!

答案 2 :(得分:1)

我发现HSD.test()对于您构建lm()aov()模型的方式也非常细致。

当我使用以下HSD.test()编码的想法时,lm()没有输出我的数据:

    model<-lm(sweetpotato$yield ~ sweetpotato$virus)  
    out <- HSD.test(model,"virus", group=TRUE, console=TRUE)

仅输出:

    Name:  virus 
    sweetpotato$virus 

aov()

使用相同的逻辑时输出同样不好
    model<-aov(sweetpotato$yield ~ sweetpotato$virus)

获取HSD.test() lm()的输出 (或者如果模型使用aov()) 必须严格使用MYaseen208答案中提供的逻辑构建:

    model <- lm(yield~virus, data=sweetpotato)

希望这可以帮助那些无法从HSD.test()获得正确输出的人。