Усеченные пуассоновские прогнозы - недооценка - PullRequest
0 голосов
/ 26 марта 2020

Я использую модель, используя glmmTMB, где переменной отклика является размер группы (от 1 до 40). Поскольку размер моей группы не может быть равен 0, я понимаю, что мне следует использовать усеченное распределение Пуассона (или негбина), особенно в том, что размеры небольших групп очень распространены.

Однако, когда я делаю моделирование, прогнозы из усеченного Пуассона недооценивают истинные значения, особенно когда отклик меньше. Кажется, нет никакой разницы между этими двумя при прогнозировании больших значений. Я неправильно делаю прогнозирование (хотя я использую опцию type = "response"? Как мне справиться с этим?

Спасибо!

Игрушечный пример с подмножеством моих данных и упрощенная модель c. Пуассоновские прогнозы точны, но усеченные - недооценены, особенно для меньших значений.

library(glmmTMB)
library(ggplot2)
library(dplyr)

df <- structure(list(VarF = structure(c(4L, 5L, 5L, 2L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 5L, 5L, 1L, 4L, 2L, 3L, 4L,
5L, 3L, 5L, 3L, 5L, 4L, 2L, 5L, 4L, 4L, 4L, 3L, 4L, 4L, 5L, 4L, 4L, 4L, 1L, 4L, 3L, 4L), .Label = c("A", "B", "C", 
"D", "E"), class = "factor"), N = c(9, 1, 3, 5, 3, 2, 2, 2, 2, 2, 5, 2, 6, 1, 7, 2, 6, 7, 2, 4, 2, 5, 1, 2, 8, 2, 
2, 2, 8, 1, 2, 1, 6, 5, 2, 2, 5, 1, 2, 3)), row.names = c(NA, -40L), class = c("tbl_df", "tbl", "data.frame"))

mod <- glmmTMB(N ~ VarF, data = df, family=poisson)
mod1 <- glmmTMB(N ~ VarF, data = df, family=truncated_poisson)

df$Pred <- predict(mod, type = "response")
df$Pred1 <- predict(mod1, type = "response")

df %>%
  group_by(VarF) %>%
  summarize(Mean = mean(N),
            MeanPred = mean(Pred),
            MeanPred1 = mean(Pred1)) %>%
  ggplot() +
  geom_point(aes(x = VarF, y = Mean, colour = "Mean data value")) +
  geom_point(aes(x = as.numeric(VarF) - 0.1, y = MeanPred, colour = "Poisson")) +
  geom_point(aes(x = as.numeric(VarF) + 0.1, y = MeanPred1, colour = "Truncated Poisson")) 
...