5

我有一个数据集,我想用它来比较物种和栖息地对家庭范围大小的影响——同时在物种和栖息地内使用 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 的测试对于成对比较来说可能过于保守。有人可以帮助我采用一种方法,让我运行一个 ANOVA,考虑物种和栖息地对家庭范围的影响,具有 III 型错误,还允许对物种和栖息地进行不太保守的成对比较?

4

1 回答 1

6

您可以Anova在包“car”中设置报告类型 III 的平方和,并且HSD.test包中的“agricolae”应该能够将该模型对象作为输入。我认为您不能在数据不平衡的情况下合法地使用 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)

请注意,R 基础包的作者对 SAS 默认类型 III 平方和不屑一顾(有时甚至是彻底的嘲笑)(阅读​​此内容了解更多详细信息)。该方法在“汽车”包中的介绍主要是为了比较,而不是作为关于统计正确性的建议。

引用对接受 SAS 标准非常谨慎的原因: Frank Harrell 的评论 re: loss of powerBill Venables 在 r-help 的同一线程中的后来评论

于 2012-09-05T20:58:37.860 回答