我正在尝试对具有200-400个观测值的回归模型(LMERs)运行anovas,所以我不想丢弃基于任何丢失数据的观测值。
这就是我面临的问题,简单且可重现:
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来了解LMERs中边际R^2的变化是否具有统计学意义。有没有办法在不丢失数据的情况下运行这些回归和方差分析?
发布于 2019-09-25 23:02:27
免责声明:我更喜欢贝叶斯,并不喜欢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)但这将低估方差。
https://stackoverflow.com/questions/58100118
复制相似问题