Невозможно получить остатки для AOV в R - PullRequest
0 голосов
/ 27 мая 2018

У меня есть датафрейм в R.

Это часть головы DF:

Sujet  T  E  O  P  meanTR

1      1  0  0  0  0.97
1      1  0  0  0  1.44
2      0  1  0  1  0.94  
  • Sujet: от 1 до 12
  • T, E, O, P: 1 или 0
  • meanTR: Числовой

Я хочу получить таблицу anova, поэтому я попробовал это:

model_all <- aov(meanTR ~ E*O*P+ Error(Sujet/E*O*P), data = df)

После этого я хочу извлечь остатки моих моделей, чтобы построить их

Итак, я попробовал это:

res <- residuals(model_all) возвращает NULL

Итак, я нашел людейонлайн, предлагающее это решение:

model_all.pr <- proj(model_all)      
res <- model_all.pr[[3]][, "Residuals"]

Но это возвращает индекс из-за границы

res <- model_all.pr[[3]]["Residuals"]

Но это возвращает NA

Я не знаю, что я 'Я делаю неправильно.Я действительно в замешательстве

Любая помощь будет признательна.

Основная цель состоит в том, чтобы иметь возможность запустить это:

plot(res)

qqnorm(res)

1 Ответ

0 голосов
/ 27 мая 2018

С aov() вы получите атрибут $residuals верхнего уровня для некоторых подгонок, но не для других.

Например, для простой модели, подобной следующей, вы можете получить доступ к остаткам напрямую (используйтеstr() чтобы увидеть структуру объекта, укажите, какие атрибуты могут быть доступны):

fit1 <- aov(Sepal.Length ~ Sepal.Width, data=iris)

str(fit1$residuals)
## Named num [1:150] -0.644 -0.956 -1.111 -1.234 -0.722 ...
## - attr(*, "names")= chr [1:150] "1" "2" "3" "4" ...

Но в более сложной спецификации модели, которую вы используете (т.е. с явным / настраиваемым термином ошибки),в каждом из атрибутов верхнего уровня есть отдельные остаточные значения:

fit2 <- aov(Sepal.Length ~ Sepal.Width + Error(Species/Sepal.Length), data=iris)

fit2$residuals # NULL

names(fit2)
## [1] "(Intercept)"   "Species"   "Sepal.Length:Species"   "Within"

fit2$Species$residuals
## 2         3 
## -1.136219  5.179749 

str(fit2$Within$residuals)
## Named num [1:144] -1.83e-15 -2.49e-15 -1.90e-15 -2.55e-15 -2.89e-15 ...
## - attr(*, "names")= chr [1:144] "7" "8" "9" "10" ...
## ...
## ...

Я не думал о статистике достаточно, чтобы сказать, почему это так, но я уверен, что это разумно.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...