如何绘制glmmTMB包中GLMM的预测数据?

4

我有以下数据,并使用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)

很不幸,我得到了每个图形的输出,但是想要一个关于直径~植物密度的普遍预测。
我的目标是创建一个像这里的图形,但使用考虑随机效应的glmmTMB回归模型。
感谢您的帮助!

当你说“考虑随机效应”时,你是指希望对d$plot的不同水平使用不同的曲线吗? - SushiChef
嗨!不,我想根据测量的数据创建新数据(例如对于1到8000个植物),这样我就可以绘制一条线来显示总体情况。这些图只是我测量数据的三个区域(采样方法)。 - Schneiderhansl
1
这是你要找的吗:plot(ggeffects::ggpredict(glmm.model)) - SushiChef
谢谢你的提示,这正是我要找的。我想随机效应已经被考虑进去了 :-) - Schneiderhansl
最后一个问题:你能告诉我如何将x轴的限制从0改为20吗?我不知道如何在代码中包含它。 - Schneiderhansl
显示剩余2条评论
1个回答

4
"

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))


你可以根据自己的喜好随意对其进行修改,比如更改颜色、主题、比例尺等等。此外,该软件包还有一些很好的示例

感谢您的帮助!我至少想要从模型中预测值。我测量了1000到5000的密度,这有助于我创建模型。现在我想要预测密度值在0到10000之间的新植物直径。我尝试更改x轴,但R只显示给定密度的回归结果。 是否有任何方法可以使用该软件包解决此问题? - Schneiderhansl
我不确定我理解你的意思,如果你在询问新水平的预测区间:我认为这并不是那么简单,但即使使用predict(new_dat, type = interval)也很容易,这可能已经在SO的其他地方得到了回答,或者你可以提出另一个问题。 - SushiChef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接