[英]Predicting from glmmTMB with truncated counts
我正在運行具有各種截斷計數分布( truncated_poisson
、 truncated_compois
、 truncated_nbinom1
、 truncated_nbinom2
)的 glmmTMB model。 當我根據 model 進行預測時,這些值似乎低於預期,好像預測沒有考慮截斷。 我哪里錯了? 提供了一個玩具示例,顯示預測值低於觀察到的平均值。
任何意見,將不勝感激。 如果建議可以擴展到其他截斷計數分布(見上文),並且它顯示了如何在這些情況下正確地獲得估計值周圍的 95% 置信帶,則加分。
library(dplyr)
library( extraDistr)
library(glmmTMB)
set.seed(1)
df <- data.frame(Group = rep(c("a", "b"), each = 20), N = rtpois(40, 1, a = 0), ran = "a") %>%
mutate(N = ifelse(N == 0, 1, N))
m <- glmmTMB(N ~ Group + (1|ran), data = df, family = "truncated_poisson")
df %>% group_by(Group) %>% summarize(mean(N))
predict(m, newdata = data.frame(Group = c("a", "b"), ran = NA), type = "response")
我認為主要問題可能是您使用的是稍舊版本的glmmTMB
(< 1.1.5,修復了錯誤,請參見egeg https://github.com/glmmTMB/glmmTMB/issues/860 )。
略微簡化(我們不需要為此示例包含隨機效果),並添加截斷的 nbinom2。
library(dplyr)
library(extraDistr)
library(glmmTMB)
set.seed(1)
df <- data.frame(Group = rep(c("a", "b"), each = 20),
Np = rtpois(40, 1, a = 0))
## clunky trunc nbinom generator
tnb <- rep(0, 40)
z <- (tnb==0)
while(any(z)) {
tnb[z] <- rnbinom(sum(z), mu = 1, size = 1)
z <- (tnb==0)
}
df$Nnb <- tnb
## summarize
df %>% group_by(Group) %>% summarize(across(starts_with("N"), mean))
## Group Np Nnb
## 1 a 1.75 1.8
## 2 b 1.45 2.35
m1 <- glmmTMB(Np ~ Group, data = df, family = "truncated_poisson")
m2 <- update(m1, Nnb ~ ., family = truncated_nbinom2)
使用se.fit = TRUE
進行預測將為您提供預測的標准誤差,您可以從中計算置信區間(假設正態性/Wald 間隔/等等......)...
pfun <- function(m, level = 0.95) {
pp <- predict(m, newdata = data.frame(Group = c("a", "b")),
type = "response",
se.fit = TRUE)
list(est = unname(pp$fit),
lwr = unname(pp$fit + qnorm((1-level)/2)*pp$se.fit),
upr = unname(pp$fit + qnorm((1+level)/2)*pp$se.fit))
}
pfun(m1)
pfun(m2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.