python - 是否可以使用 Python 绘制 R glmer 模型预测?

标签 python r plot lme4 sjplot

我在 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) 会产生下图:

enter image description here

但是,我不熟悉 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/

相关文章:

r - 我想用一个列表来计算去看每部电影的人的平均年龄

r - R 中 Shiny : How to set an input value to NULL after clicking on a button?

python - 图表 (pyqtgraph) 未在 QML 生成的窗口中绘制

python - pandas:如何将 groupby 行的子集聚合成一行?

python - 训练 MSE 损失大于理论最大值?

r - 为我的逻辑回归模型生成逻辑曲线

r - 如何在R中绘制球坐标

python - 计算 DataFrame 列中所有定义的值,其中另一列中的相应值在 pandas 中未定义

r - R 中计算线性回归的异方差稳健置信区间的函数

c# - WPF 中的图形绘制(功能)