R中的边际ANOVA检验

时间:2014-02-20 02:51:14

标签: r anova

我正在尝试使用以下代码运行边缘(也称为类型III)ANOVA。不幸的是,我得到“错误:$运算符对原子向量无效”。谷歌搜索发现另一个人得到同样的错误(see here),但遗憾的是没有解决方案。

rm(list = ls())

data(iris)

iris.lm <- lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length , data = iris)
print(anova(object = iris.lm))
print(anova(object = iris.lm , type = "marginal"))

2 个答案:

答案 0 :(得分:3)

为了将来参考,包Anova中的函数car接受type参数(例如"III"3)。不要将此函数与标准anova库中的函数R混淆,后者不接受type参数。

答案 1 :(得分:2)

使用traceback可以本地化错误:

print(anova(object = iris.lm , type = "marginal"))
Error: $ operator is invalid for atomic vectors
> traceback()
7: deparse(x$terms[[2L]])
6: FUN(X[[2L]], ...)
5: lapply(objects, function(x) deparse(x$terms[[2L]]))
4: anova.lmlist(object, ...)
3: anova.lm(object = iris.lm, type = "marginal")
2: anova(object = iris.lm, type = "marginal")
1: print(anova(object = iris.lm, type = "marginal"))

因此,您尝试在不支持它的对象上调用terms,从而得到错误。这会重现错误:

 lapply(list(iris.lm,type='marginal'),terms)
 Error: $ operator is invalid for atomic vectors

或者只是:

terms('marginal')

但为什么你认为这有效?也许我会错过一些东西,但我认为没有提到anova可以将type作为一个论点。