使用sjPlot

时间:2018-12-19 16:49:10

标签: r graphics sjplot

过去,我使用了sjPlot软件包中的sjp.glmer来可视化广义混合效应模型中的不同斜率。但是,使用新程序包,我无法弄清楚如何绘制各个斜率,如上图所示,here

中按(随机)组级别显示的固定效果的概率

我认为,这里是应允许生成图形的代码。我似乎无法在新版本的sjPlot中得到它。

library(lme4)
library(sjPlot)
data(efc)
# create binary response
efc$hi_qol = 0
efc$hi_qol[efc$quol_5 > mean(efc$quol_5,na.rm=T)] = 1
# prepare group variable
efc$grp = as.factor(efc$e15relat)
# data frame for 2nd fitted model
mydf <- na.omit(data.frame(hi_qol = as.factor(efc$hi_qol),
                           sex = as.factor(efc$c161sex),
                           c12hour = as.numeric(efc$c12hour),
                           neg_c_7 = as.numeric(efc$neg_c_7),
                           grp = efc$grp))
# fit 2nd model
fit2 <- glmer(hi_qol ~ sex + c12hour + neg_c_7 + (1|grp),
              data = mydf,
              family = binomial("logit"))

我尝试使用以下代码来绘制模型图。

plot_model(fit2,type="re")
plot_model(fit2,type="prob")
plot_model(fit2,type="eff") 

我认为我可能会丢失一个标志,但是在阅读了文档之后,我找不到该标志可能是什么。

2 个答案:

答案 0 :(得分:2)

看起来像这样的人可能会做您想要的:

(pp <- plot_model(fit2,type="pred",
       terms=c("c12hour","grp"),pred.type="re"))
  • type="pred":绘制预测值
  • terms=c("c12hour", "grp"):在预测中包含c12hour(作为x轴变量)和grp
  • pred.type="re":随机效果

我还无法获得置信区间的彩带(尝试ci.lvl=0.9,但没有运气...)

pp+facet_wrap(~group)更加接近链接的博客文章中显示的情节(每个随机效应级别都有其自己的特征……)

enter image description here

答案 1 :(得分:1)

Ben已经发布了正确答案。 sjPlot将ggeffects-package用于边际效应图,因此另一种选择是直接使用ggeffects:

ggpredict(fit2, terms = c("c12hour", "grp"), type="re") %>% plot()

a new vignette描述了如何获得混合模型/随机效应的边际效应。但是,该图类型目前没有置信区间。

链接的博客文章中的type = "ri.prob"选项未针对协变量进行调整,这就是为什么我首先删除该选项,然后在ggeffects / sjPlot中(正确)重新实现该选项的原因。链接的博客文章中显示的置信区间也不正确。一旦确定了获取CI或预测间隔的方法,我还将添加此选项。