Я построил серию glmm с использованием пакета glmmTMB R, каждый из которых имеет фиксированные (категориальные и непрерывные) эффекты, случайный эффект, смещение, а некоторые из них имеют один член с нулевой инфляцией.
Я использую эти модели для выведения логических выводов с целью составления карт.В рамках этого процесса я хотел бы создать соответствующие карты неопределенности для прогнозов, для этого необходимо рассчитать доверительные интервалы для прогнозируемых значений.Единственный метод, который я могу найти, не учитывает смещение при вычислении линейного предиктора (по сравнению с Предикатом.glmmTMB, который делает) и связанных значений CI.Я хотел бы сообщить ответ в разумном масштабе, относительно того, в котором он измерен, то есть смещение.
Насколько я понимаю, нельзя просто умножить прогнозируемое значение и доверительные интервалы, как только они достигнутмасштаб ответа.Мой вопрос заключается в том, как можно включить смещение в ручной расчет предиктора и оценку КИ?
Я попытался прочитать различные документы по glmmTMB и нашел хорошо выложенный пример метода в приложении.из этой бумаги .Однако в примере, приведенном в статье, используется модель без смещения.
Кроме того, я обнаружил очень аналогичный вопрос и перешел по ссылкам, предоставленным там, на другие источники информации.Эта строка информации в конечном итоге привела меня к первоначальной статье, описанной выше, не отвечая на мой вопрос.
## 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)
В какой момент в этом ручном расчете прогнозируемого отклика и доверительных интервалов можно было бы учесть смещение, какделается в Foregt.glmmTMB?