【问题标题】:How to plot predicted data of a GLMM from the package glmmTMB?如何从包 glmmTMB 中绘制 GLMM 的预测数据?
【发布时间】:2022-01-06 23:42:06
【问题描述】:

我有以下数据,并使用 R 中的 glmmTMB 包创建了一个模型,用于植物直径〜植物密度(植物数量),具有随机图效应:

d <- data.frame (diameter = c(17,16,15,13,11, 19,17,15,11,11, 19,15,14,11,8),
                      plant_density = c(1000,2000,3000,4000,5000, 1000,2000,3000,4000,5000, 1000,2000,3000,4000,5000),
                      plot = c(1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3))

glmm.model <- glmmTMB(diameter ~  plant_density + (1|plot),
                        data = d,
                        na.action = na.omit,
                        family="gaussian",
                        ziformula = ~ 0)

我的目的是创建一个包含不同植物密度的预测直径数据的图,其中包含随机图效应。所以我尝试预测数据:

new.dat <- data.frame(diameter= d$diameter,
                      plant_density = d$plant_density,
                      plot= d$plot) 

new.dat$prediction <- predict(glmm.model, new.data = new.dat, 
                              type = "response", re.form = NA)

不幸的是,我得到了每个图的输出,但想要对直径〜植物密度进行广义预测。

我的目标是创建一个类似于here 的图,但使用来自 glmmTMB 的回归模型,该模型考虑了随机效应。

感谢您的帮助!

【问题讨论】:

  • 当你说“考虑随机效应”时——你的意思是你想要不同水平的 d$plot 不同的曲线吗?
  • 嗨!不,我想根据测量的数据(例如 1 到 8000 株植物)创建新数据,这样我就可以绘制一条线来显示一般背景。这些图只是我测量数据的三个区域(抽样方法)。
  • 这就是你要找的东西:plot(ggeffects::ggpredict(glmm.model))
  • 感谢您的提示。这就是我要找的。我认为考虑了随机效应:-)
  • 最后一个问题:你能告诉我如何将x轴的范围从0更改为20吗?我不知道如何将其包含在代码中?

标签: r plot regression mixed-models glmmtmb


【解决方案1】:

ggeffects 包使这种类型的东西很容易实现和定制。

例如

library('ggplot2')
library('glmmTMB')
library('ggeffects')
d <- data.frame (diameter = c(17,16,15,13,11, 19,17,15,11,11, 19,15,14,11,8),
                 plant_density = c(1000,2000,3000,4000,5000, 1000,2000,3000,4000,5000, 1000,2000,3000,4000,5000),
                 plotx = as.factor( c(1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3)))

glmm.model <- glmmTMB(diameter ~  plant_density + (1|plotx),
                      data = d,
                      family="gaussian")

# basically what your looking for
plot(ggpredict(glmm.model, terms = "plant_density"))

# with additional a change of limits on the y-axis
plot(ggpredict(glmm.model, terms = "plant_density")) + 
scale_y_continuous(limits = c(0, 20))

你真的可以从那里做任何你想做的事情,改变颜色、主题、比例,the package has some nice vignettes as well

【讨论】:

  • 感谢您的帮助!!至少我想从模型中预测值。我测量了从 1000 到 5000 的密度,这有助于我创建模型。现在我想预测 0 到 10000 之间密度值的新植物直径。我试图改变 x 轴,但 R 只显示给定密度的回归。有没有办法用那个包解决这个问题?
  • 如果您要求新级别的预测间隔,我不确定我是否跟随您:我认为它不是那么简单,但即使使用 predict(new_dat, type =间隔),它可能会在SO的其他地方得到回答,或者你可以问另一个问题
猜你喜欢
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2021-12-30
  • 2013-08-10
  • 2017-08-19
  • 2023-01-26
相关资源
最近更新 更多