【问题标题】:How to plot multiple glmer models into one single plot?如何将多个 glmer 模型绘制成一个图?
【发布时间】:2019-05-04 00:05:08
【问题描述】:

我有两个 glmer 模型,每个模型都有两个协变量,我试图将它们绘制成一个图形。

MWE

## generalized linear mixed model
library(lattice)

cbpp$response <- sample(c(0,1), replace=TRUE, size=nrow(cbpp))
gm1 <- glmer(response ~ size + incidence + (1 | herd),
              data = cbpp, family = binomial)

cbpp$obs <- 1:nrow(cbpp)
gm2 <- glmer(response ~ size + incidence + (1 | herd) +  (1|obs),
              family = binomial, data = cbpp)

我正在尝试针对每个模型的每个协变量绘制预测值。我找到了sjPlot 库和plot_model 函数,它们可以在使用type = "pred" 时绘制这些预测。在每个模型上单独调用此函数效果很好,并且为每个模型生成两个单独的数字:

但是我不熟悉 R,而且我很难在同一个图上绘制 4 个图。

plot_model 函数有一个grid 参数,该参数仅适用于具有泊松分布的模型。对于gm1gm2,当我调用plot_model(gm1, type = "pred", grid = TRUE) 时出现以下错误:

Error in if (attr(x, "logistic", exact = TRUE) == "1" && attr(x, "is.trial",  : missing value where TRUE/FALSE needed

无论如何,我无法使用它在一个图中绘制三个模型,所以我尝试了三种不同的方法。首先,我看到了plot_models 函数,它接受多个模型作为输入。当我尝试将这两个模型作为参数传递时,调用plot_models(gm1, gm2) 我收到以下错误:

Error: $ operator not defined for this S4 class

其次,我尝试使用par 函数设置mfrow,然后再次调用plot_model,但没有成功。我没有收到任何错误,但图表一直显示为单独的数字。

第三,我尝试使用gridExtra 库。调用

p1 <- plot_model(gm1, type = "pred")
p2 <- plot_model(gm2, type = "pred")
grid.arrange(p1, p2)

导致以下错误:

Error in gList(list(ppt = list(data = list(x = c(-2, -1, 0, 1, 2, 3, 4,  : only 'grobs' allowed in "gList"

有人对此有见解吗?

编辑

【问题讨论】:

  • 请编辑您的帖子以包含可重现的示例数据和代码,以便为我们提供工作。在不了解导致错误的数据的情况下,很难(即不可能)帮助解决“我收到错误 XYZ”形式的问题。我建议看看如何提供minimal reproducible example/attempt

标签: r lme4 sjplot


【解决方案1】:

这似乎有效:

pp1 <- plot_model(gm1,type="pred")
pp2 <- plot_model(gm2,type="pred")
plot_grid(c(pp1,pp2))

【讨论】:

  • 这里只是一个评论,对我有用的语法是“plot_grid(list(pp1,pp2))”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多