我使用lme4::lmer()计算了线性混合效果模型,这些模型是我使用mice软件包相乘推算的数据。在这些较大的对象上,我想应用ggeffects::ggeffect()来获得边际效果,然后我可以绘制均值、+1sd和-1sd的边际效果。
对于lm对象,pool_predictions function似乎非常适合,并且做得很好;但是,对于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对象获得池化边缘效果?
非常感谢!
安特杰
发布于 2021-11-16 22:55:30
我认为这可能是由于从环境中检索数据的方式,这对于ggeffect() (基于effects包)是失败的。您可以改为使用ggemmeans(),它应该会给出与ggeffect()相同的结果。
https://stackoverflow.com/questions/69739791
复制相似问题