我已经使用R包glmmTMB构建了一系列glmm,它们全部具有固定(分类和连续)效果,随机效果,偏移量,并且其中一些具有单个零膨胀项。
出于映射的目的,我正在使用这些模型进行推断预测。作为此过程的一部分,我想为预测生成相应的不确定性图,这需要计算预测值的置信区间。我能找到的唯一方法是在线性预测变量(与之比较的demo.glmmTMB)和相关CI值的计算中不考虑偏移量。我想以合理的比例报告响应,相对于它所测量的响应,即偏移量。
根据我的理解,一旦预测值和置信区间达到响应范围,就不能将它们相乘。我的问题是,如何将偏移量纳入预测变量的手动计算和配置项的估计中?
我尝试阅读各种glmmTMB文档,并在this paper的附录中找到了一个布局合理的示例方法。但是,本文中的示例使用的模型没有偏移。
此外,我发现了一个非常similar question,并遵循了其中提供的指向其他信息源的链接。最终,这些信息使我回到了上面描述的初始论文,而没有回答我的问题。
## From the example in the appendix of Brooks et al (2017):
library("glmmTMB")
library(MASS)
data("Salamanders")
## Build Model
zinbm3 = glmmTMB(count~spp * mined +(1|site),
zi=~spp * mined,
Salamanders,
family=nbinom2)
## Create new dataset for predictions
newdata0 = unique(Salamanders[,c("mined","spp")])
## Make Predictions
X.cond = model.matrix(lme4::nobars(formula(zinbm3)[-2]), newdata0)
#### The line above is where the offset is dropped.
beta.cond = fixef(zinbm3)$cond
pred.cond = X.cond %*% beta.cond
ziformula = zinbm3$modelInfo$allForm$ziformula
X.zi = model.matrix(lme4::nobars(ziformula), newdata0)
beta.zi = fixef(zinbm3)$zi
pred.zi = X.zi %*% beta.zi
pred.ucount = exp(pred.cond)*(1-plogis(pred.zi))
## Simulate and estimate 95% confidence intervals
set.seed(101)
pred.condpar.psim = mvrnorm(1000,mu=beta.cond,Sigma=vcov(zinbm3)$cond)
pred.cond.psim = X.cond %*% t(pred.condpar.psim)
pred.zipar.psim = mvrnorm(1000,mu=beta.zi,Sigma=vcov(zinbm3)$zi)
pred.zi.psim = X.zi %*% t(pred.zipar.psim)
pred.ucount.psim = exp(pred.cond.psim)*(1-plogis(pred.zi.psim))
ci.ucount = t(apply(pred.ucount.psim,1,quantile,c(0.025,0.975)))
ci.ucount = data.frame(ci.ucount)
## Combine predicted value and CI values at response scale
pred.ucount = data.frame(newdata0, pred.ucount, ci.ucount)
在此手动计算预测的响应和置信区间的哪个点上,可以像predict.glmmTMB那样考虑偏移量?