3

我使用 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 对象获得汇集的边际效应?

非常感谢!

安杰

4

1 回答 1

0

认为这可能是由于从环境中检索数据的方式导致失败ggeffect()(基于效果包)。你可以试试ggemmeans(),这应该会给你同样的结果ggeffect()

于 2021-11-16T22:55:29.893 回答