2

I'm running a glmmTMB with truncated count distributions, and am interested in predicting on the link scale and back-transforming the result. This is a follow-up to this question. The answer to the linked question addressed predicting from a glmmTMB with a truncated distribution on the response scale. I'm interested in predicting on the link scale and back-transforming, since my sample size is not large and the variability is high, so predicting on response scale results in lower CIs below 0.

As shown in the toy example, a simple exp() obviously is the wrong way to back-transform, since the resulting values do not account for the truncation. Any help would be appreciated!

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

set.seed(1)
df <- data.frame(Group = rep(c("a", "b"), each = 20),
                 N = rtpois(40, 1, a = 0))
m <- glmmTMB(N ~ Group, data = df, family = "truncated_poisson")

preds <- predict(m, type = "response", se.fit = TRUE)
df$PredResponse <- preds$fit
df$PredResponseLower <- preds$fit - 1.98*preds$se.fit
df$PredResponseUpper <- preds$fit + 1.98*preds$se.fit

preds <- predict(m, type = "link", se.fit = TRUE)
df$PredLink <- exp(preds$fit)
df$PredLinkLower <- exp(preds$fit - 1.98*preds$se.fit)
df$PredLinkUpper <- exp(preds$fit + 1.98*preds$se.fit)

df %>%
    group_by(Group) %>%
    mutate(Mean = mean(N)) %>%
    ggplot() +
    geom_point(aes(x = Group, y = Mean), size = 5) +
    geom_point(aes(x = Group, y = PredLink, colour = "Link")) +
    geom_point(aes(x = Group, y = PredResponse, colour = "Response")) +
    geom_errorbar(aes(x = Group, ymin = PredLinkLower, ymax = PredLinkUpper, colour = "Link")) +
    geom_errorbar(aes(x = Group, ymin = PredResponseLower, ymax = PredResponseUpper, colour = "Response"))
    
user2602640
  • 640
  • 6
  • 21

0 Answers0