我在 R 中有一个 glmer
模型,我想为其绘制预测。我从 sjPlot 库中找到了 plot_model 函数,它工作正常。
这是一个 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,而且我很难尝试控制情节美学并将多个模型绘制到同一个图形中(已经问过有关该问题的问题 here )。我熟悉 Python 和 matplotlib,让这些图形在 Python 环境中工作对我来说要简单得多。
我猜想实现这一点的一种方法是从 R 中获取 y 值(预测的火灾概率)并导出它们,这样我就可以在 Python 中读取它们,以便根据每个协变量(evi prev)绘制它们例子。但是,我不确定该怎么做。此外,我试图阅读 sjPlot
源代码以弄清楚它是如何绘制预测结果的,但也无法弄清楚。
最佳答案
最简单的方法可能是使用 gfeffects::ggpredict()
。
有点像
library(ggeffects)
pred_frame <- ggpredict(myModel, term="evi_prev")
应生成具有预测、较低和较高置信水平的数据框。我不确定它是否会预测沿 x 轴的均匀分布值(这很好),或者如何欺骗它这样做。 (如果您提供可重现的示例,我可能会试一试。)
玩弄您发布的 MWE 确实表明很难预测均匀间隔的值(或者更一般地说,对于不在原始数据中的值);我尝试了 terms="size [1:35]"
之类的方法,但这限制了预测值的范围而不是填充它们。
更基本的,可以使用 merMod
对象的内置 predict()
方法(可能与 newdata
一起指定,例如均匀间隔values) 来获得预测 [使用 type="response"
来获得关于概率而不是对数比值的预测];置信区间更难,但可以使用显示的方法生成 here
关于python - 是否可以使用 Python 绘制 R glmer 模型预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978448/