Я пытаюсь выполнить маргинальный (также называемый типом III) ANOVA, используя следующий код. К сожалению, я получаю сообщение «Ошибка: оператор $ недействителен для атомарных векторов». Поиск в Google обнаружил, что другой человек получил ту же ошибку (
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"))
Маргинальный тест ANOVA в R
Ответы (2)
Для дальнейшего использования функция Anova
из пакета car
принимает аргумент type
(например, "III"
или 3
). Эту функцию не следует путать с функцией anova
из стандартной библиотеки R
, которая не принимает аргумент type
.
person
Stirling
schedule
20.02.2014
Итак, на самом деле ответ на этот вопрос состоит в том, что плакат хочет использовать
Anova()
из cars
пакета, а не anova()
из базы. Я тоже совершил эту ошибку! Приятно столкнуться с этим комментарием, потому что я чувствую, что это, вероятно, случается часто!
- person duHaas; 24.03.2014
Используя 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
в качестве аргумента.
person
agstudy
schedule
20.02.2014
nlme::anova.lme
? - person rawr   schedule 20.02.2014