我在R中有一个glmer模型,我想为它绘制预测图。我从plot_model库中找到了sjPlot函数,它工作得很好。
这是一个MWE:
library(lattice)
cbpp$response <- sample(c(0,1), replace=TRUE, size=nrow(cbpp))
gm1 <- glmer(response ~ size + incidence + (1 | herd),
data = cbpp, family = binomial)例如,调用plot_model(gm1, type = "pred", show.data = TRUE)会产生以下图:

然而,我对R并不熟悉,我很难控制情节美学,并将多个模型绘制成相同的图形(已经就这个问题这里提出了一个问题)。我熟悉Python和matplotlib,让这些图形在Python环境中工作对我来说要简单得多。
我猜想实现这一目标的一种方法是从R中获取y值(预测的火灾概率)并导出它们,这样我就可以用Python读取它们,以便在这个示例中针对每个协变量(evi )绘制它们。然而,我不知道如何做到这一点。此外,我试着阅读sjPlot源代码,找出它是如何绘制预测的,但也找不出答案。
发布于 2019-05-04 00:42:10
最简单的方法可能是使用ggeffects::ggpredict()。
有点像
library(ggeffects)
pred_frame <- ggpredict(myModel, term="evi_prev")应该产生一个数据框架与预测,较低和较高的置信度水平。我不确定它是否会预测沿x轴均匀间隔的值(这会很好),或者如何欺骗它这样做。(如果你提供一个可重复的例子,我可以试一试。)
使用您发布的MWE确实表明很难对均匀间隔的值进行预测(或者更普遍地说,对于原始数据中没有的值);我尝试了一些类似于terms="size [1:35]"的方法,但这限制了预测值的范围,而不是填充它们。
更基本的是,可以使用用于merMod对象的内置的merMod方法(可能与newdata一起指定例如均匀间隔的值)来获得预测,使用type="response"来获得概率预测,而不是对数-赔率尺度;置信区间比较困难,但可以通过显示这里的配方生成。
https://stackoverflow.com/questions/55978448
复制相似问题