Как использовать anova () на регрессионных моделях с отсутствующими данными? - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь запустить ановас на регрессионных моделях (LMER) с 200-400 наблюдениями, поэтому я не хочу отбрасывать наблюдения на основе каких-либо пропущенных данных.

Вот проблема, с которой я сталкиваюсь,упрощенный и воспроизводимый:


dats <- data.frame(y = c(5, 3, 7, 4, 8, 4, 7, 3, 6, 3),
                   x = c(1, 2, 1, 2, 1, 1, 2, 1, 2, 1),
                   z = c(NA, 5, 6, 7, 8, 5, 4, 3, 2, 2))

fit1 <- lm(y ~ x, data = dats, na.action = "na.omit")
fit2 <- lm(y ~ x + z, data = dats, na.action = "na.omit")

anova(fit1, fit2)

И ошибка, с которой я сталкиваюсь:

Error in anova.lmlist(object, ...) : models were not all fitted to the same size of dataset

В основном мне нужно запустить эти ANOVA, чтобы узнать, есть ли изменения в предельномR ^ 2 в LMER являются статистически значимыми.Есть ли способ запустить эти регрессии и ANOVA, не отбрасывая наблюдения с отсутствующими данными?

1 Ответ

0 голосов
/ 25 сентября 2019

Отказ от ответственности: я больше человек Байеса и мне не очень нравится мировоззрение NHST.

Как и @denis, я почти уверен, что ответ "нет".ANOVA предназначен для использования с теми же данными, что и условно, на основе сравнения ошибок суммы квадратов.

Очевидные варианты - исключить те же строки:

d2 <- na.omit(dats[,c('x','y','z')])

f1 <- lm(y ~ x, data=d2)
f2 <- lm(y ~ x + z, data=d2)

anova(f1, f2)

, которыеочевидно, выбрасывает данные, иначе вы можете вменить недостающие данные:

i <- na.action(d2)
d3 <- dats
d3$z[i] <- predict(lm(z ~ x*y, dats), dats[i,])

f1 <- lm(y ~ x, data = d2)
f2 <- lm(y ~ x + z, data = d2)

anova(f1, f2)

, но это будет недооценивать дисперсию.

...