使用库 mice() 中的估算数据集来拟合 R 中的多级模型

Using imputed datasets from library mice() to fit a multi-level model in R

我是 R 中打包 mice 的新手。但我正在尝试从 popmis 中估算 5 个数据集,然后分别拟合一个 lmer() 模型 with()最后 pool() 穿过它们。

我认为 mice() 中的 pool() 函数不适用于 lme4 包中的 lmer() 调用,对吗?

如果是这样的话,有没有办法为我下面的案例编写一个类似于 pool() 的自定义函数?

library(mice)
library(lme4)

imp <- mice(popmis, m = 5) # `popmis` is a dataset from `mice`

fit <- with(imp, lme4::lmer(popular ~ sex + (1|school))) # works fine.

pool(fit) # BUT this one fails, should I loop here?

我有适合您的解决方案。它就像 install.packages("broom.mixed") 一样简单,然后 library(broom.mixed)broom.mixed 包提供了正确的 glance 方法

# install.packages("broom.mixed")
library(mice)
library(lme4)
library(broom.mixed)
imp <- mice(popmis, m = 5) # `popmis` is a dataset from `mice`

fit <- with(data = imp, exp = lme4::lmer(popular ~ sex + (1|school)))

pool(fit) 

结果:

> pool(fit)
Class: mipo    m = 5 
         term m  estimate        ubar            b           t dfcom       df        riv     lambda        fmi
1 (Intercept) 5 4.9122016 0.007589694 0.0003823641 0.008048531  1996 743.8691 0.06045526 0.05700878 0.05953397
2         sex 5 0.8378947 0.001187606 0.0002937859 0.001540149  1996  72.7305 0.29685175 0.22890184 0.24926611

Ben Bolker is the author of broom.mixed