我目前正在使用 lme4 估计分层线性模型 (HLM)。我的整个数据集有 367 个观察值。 lme4 使用 341 个观测值估计了我的模型 - 我假设一些观测值由于缺失数据而被丢弃。然而,当我对模型变量的完整案例进行求和时,我最终得到了 337 个观察值。当模型的长度与数据集不同时,这使得测试假设变得困难。
完整案例与 lme4“使用”的观察结果之间存在差异。
如上所述,假设 lme4 按列表删除案例,我尝试从主数据集中删除丢失的数据。我尝试检查每个变量是否缺失,以查看 lme4 是否只是测试某个变量,但没有一个与 lme4 的输出估计值 341 匹配。
如果需要,我可以提供匿名数据集 - 但希望有一些我不知道的简单内容!
library(lme4)
ss <- sleepstudy
ss$Days[c(1, 4, 10)] <- NA
ss$extra <- 1
ss$extra[c(4, 20, 25)] <- NA
nrow(ss) ## 180
sum(complete.cases(ss)) ## 175
m <- lmer(Reaction ~ Days + (1|Subject), ss, na.action = na.omit)
mf <- model.frame(m)
nrow(mf) ## 177
删除了哪些行?两种检查方法:
attr(mf, "na.action")
1 4 10
1 4 10
attr(,"class")
[1] "omit"
setdiff(rownames(ss), rownames(mf))
[1] "1" "4" "10"
相当于内部代码的是
nrow(model.frame(Reaction ~ Days + Subject, ss)) ## 177
(公式经过处理,以便随机效应分组变量也包含在公式中,以排除不完整的情况)