首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在缺少数据的回归模型上使用anova()?

如何在缺少数据的回归模型上使用anova()?
EN

Stack Overflow用户
提问于 2019-09-25 21:57:16
回答 1查看 544关注 0票数 0

我正在尝试对具有200-400个观测值的回归模型(LMERs)运行anovas,所以我不想丢弃基于任何丢失数据的观测值。

这就是我面临的问题,简单且可重现:

代码语言:javascript
运行
复制
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的变化是否具有统计学意义。有没有办法在不丢失数据的情况下运行这些回归和方差分析?

EN

回答 1

Stack Overflow用户

发布于 2019-09-25 23:02:27

免责声明:我更喜欢贝叶斯,并不喜欢NHST的世界观。

就像@denis一样,我很确定答案是“不”。ANOVA被设计用于相同的数据,因为它是基于比较平方和误差的名义上的。

最明显的选择是排除相同的行:

代码语言:javascript
运行
复制
d2 <- na.omit(dats[,c('x','y','z')])

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

anova(f1, f2)

这显然会丢弃数据,或者您可以归因于丢失的数据:

代码语言:javascript
运行
复制
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)

但这将低估方差。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58100118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档