在r中,如何运行使用III型错误的双向ANOVA并查看成对比较?

时间:2012-09-05 19:19:06

标签: r anova tukeyhsd

我有一个数据集,我想用它来比较物种和栖息地对家园范围大小的影响 - 同时使用物种和栖息地中的III型错误和成对比较。
这是数据的一个子集:

species<- c("a","b","c","c","b","c","b","b","a","b","c","c","a","a","b","b","a","a","b","c")
    habitat<-  c("x","x","x","y","y","y","x","x","y","z","y","y","z","z","x","x","y","y","z","z")
    homerange<-c(6,5,7,8,9,4,3,5,6,9,3,6,6,7,8,9,5,6,7,8)
    data1<-data.frame(cbind(species, habitat, homerange))
    data1$homerange<-as.numeric(as.character(data1$homerange))    

目前我正在分析这三个物种的数据,然后为每个物种运行单独的ANOVA,但我相信用一个ANOVA同时询问物种和栖息地更有意义。这是我为一个物种运行的ANOVA的一个例子:

data.species.a<-subset(data1, species=="a")
fit<-aov(homerange ~ habitat, data=data.species.a)
summary(fit)
TukeyHSD(fit)

aov()似乎使用了I类错误。 。 。我觉得不合适;另外我认为Tukey的测试对于成对比较可能过于保守。有人可以通过一种方法帮助我,这种方法允许我运行一个方差分析,既考虑物种和栖息地对家园范围的影响,还有III型错误,这也允许对物种和栖息地进行不太保守的成对比较?

1 个答案:

答案 0 :(得分:3)

您可以在'car'包中设置Anova来报告III型平方和,并且'agricolae'包中有一个HSD.test,它应该能够将该模型对象作为输入。我不认为你可以合法地使用aov(),你的数据是不平衡的,所以我用lm()拟合它。

fit<-lm(homerange ~ habitat, data=data.species.a)
require(car)
 Anova(fit, type="III")
require(agricolae)
comparison <- HSD.test(fit, "habitat", group=TRUE,
 main="Yield of sweetpotato\nDealt with different virus")

请注意,R基本软件包的作者(read this更多详细信息)蔑视(有时甚至是彻头彻尾的嘲笑)SAS的缺省类型-III的平方和。在“汽车”包中提供该方法主要是为了进行比较,而不是关于统计正确性的建议。

添加引用以了解接受SAS标准时非常谨慎的原因: Frank Harrell's comments re: loss of powerBill Venables' later comments in the same thread on r-help