Использование вмененных наборов данных из библиотеки mouses() для соответствия многоуровневой модели в R

Я новичок в пакетировании mice в R. Но я пытаюсь вычислить 5 наборов данных из popmis, а затем подобрать lmer() модель with() для каждого и, наконец, pool() для них.

Я думаю, что функция pool() в mice() не работает с вызовом lmer() из пакета lme4, верно?

Если это так, есть ли способ написать пользовательскую функцию, которая действует как 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?

person rnorouzian    schedule 08.11.2020    source источник


Ответы (1)


У меня есть решение для вас. Это так же просто, как 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

Бен Болкер — автор broom.mixed

person polkas    schedule 08.11.2020
comment
Но ubar, который относится к случайным эффектам в вашем решении, должен отображаться ТОЛЬКО для (intercept), а не для sex (поскольку модель имеет случайный эффект только для intercept), что здесь происходит? - person rnorouzian; 09.11.2020
comment
@BenBolker — автор broom.mixed. Для меня это выглядит нормально, хотя я не специалист по смешанным моделям. - person polkas; 09.11.2020