множественное вменение, lmer и объединение объектов ggeffects

#r #lme4 #r-mice #marginal-effects

Вопрос:

Я вычислил линейные модели со смешанными эффектами, используя lme4::lmer() на данных, которые я умножил на вмененные с помощью пакета mice. К этим объектам lmer я хочу применить ggeffects::ggeffect(), чтобы получить предельные эффекты, которые я затем могу построить для среднего, 1sd и -1sd.

Функция pool_predictions кажется идеально подходящей и отлично справляется с объектами lm; однако для объектов lmer функция ggeffect() не работает. ggpredict() по какой-то причине работает, но я хочу получить маргинальные, а не условные эффекты.

Вот минимальный воспроизводимый пример, который я адаптировал из ссылки pool_predictions() (смешанная модель не имеет смысла, это просто для создания примера):

 if (!require("pacman")) install.packages("pacman")
pacman::p_load(mice,stats,lme4,ggeffects)
  data("nhanes2")

#First, the working example from the pool_predictions() reference, using an lm object and ggpredict():

  imp <- mice(nhanes2, printFlag = FALSE)
  predictions1 <- lapply(1:5, function(i) {
    m1 <- lm(bmi ~ age   hyp   chl, data = complete(imp, action = i))
    ggpredict(m1, "age")
  })
  pool_predictions(predictions1)

#Now the same example, but using ggeffect() on the lm object, which also works:

  predictions2 <- lapply(1:5, function(i) {
    m2 <- lm(bmi ~ age   hyp   chl, data = complete(imp, action = i))
    ggeffect(m2, "age")
  })
  pool_predictions(predictions2)


#It also seems to work for lmer objects, at least when using ggpredict():
    
    predictions3 <- lapply(1:5, function(i) {
        m3 <- lmer(bmi ~ age   chl   (1|hyp), data = complete(imp, action = i))
        ggpredict(m3, "age")
    })
    pool_predictions(predictions3)
    
#But when I use ggeffect() instead of ggpredict(), this doesn't work anymore for lmer objects.


  predictions4 <- lapply(1:5, function(i) {
    m4 <- lmer(bmi ~ age   chl   (1|hyp), data = complete(imp, action = i))
    ggeffect(m4, "age")
  })
  pool_predictions(predictions4)
 

У кого-нибудь есть идея, почему это происходит, или есть какие-либо советы, как я могу получить объединенные предельные эффекты для моего объекта lmer?

Большое спасибо!

Antje

Ответ №1:

Я думаю, это может быть связано с тем, как данные извлекаются из среды, что приводит к сбою ggeffect() (который основан на пакете эффектов). Вы могли бы попробовать ggemmeans() вместо этого, что должно дать вам те же результаты, ggeffect() что и does.