首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python绘制R模型预测是可能的吗?

用Python绘制R模型预测是可能的吗?
EN

Stack Overflow用户
提问于 2019-05-04 00:22:05
回答 1查看 948关注 0票数 2

我在R中有一个glmer模型,我想为它绘制预测图。我从plot_model库中找到了sjPlot函数,它工作得很好。

这是一个MWE:

代码语言:javascript
运行
复制
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源代码,找出它是如何绘制预测的,但也找不出答案。

EN

回答 1

Stack Overflow用户

发布于 2019-05-04 00:42:10

最简单的方法可能是使用ggeffects::ggpredict()

有点像

代码语言:javascript
运行
复制
library(ggeffects)
pred_frame <- ggpredict(myModel, term="evi_prev")

应该产生一个数据框架与预测,较低和较高的置信度水平。我不确定它是否会预测沿x轴均匀间隔的值(这会很好),或者如何欺骗它这样做。(如果你提供一个可重复的例子,我可以试一试。)

使用您发布的MWE确实表明很难对均匀间隔的值进行预测(或者更普遍地说,对于原始数据中没有的值);我尝试了一些类似于terms="size [1:35]"的方法,但这限制了预测值的范围,而不是填充它们。

更基本的是,可以使用用于merMod对象的内置的merMod方法(可能与newdata一起指定例如均匀间隔的值)来获得预测,使用type="response"来获得概率预测,而不是对数-赔率尺度;置信区间比较困难,但可以通过显示这里的配方生成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55978448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档