Skip to content
Prev 17674 / 20628 Next

GLMER vs. MCMCglmm - difference in model results - Poisson model with offset term

Hi Bernd,

I think there are two problems. 

1. 
If your response is a number of successes (RESP) out of a number of trials (PRED1), it should be modelled with the binomial distribution. In glmer this would take the form cbind(RESP, PRED1 - RESP) ~ ? . (If the proportion is low, you?ll likely find this makes little difference.)

2. 
The two Poisson models aren?t comparable because your glmer Poisson model has no residual term, i.e. no random effect to mop up variation not explained by the fixed effects and the Poisson distribution, while MCMCglmm fits this by default. You can see this in the glmer output in the residual deviance being much larger than the residual df, and in the wide spread of the standardised residuals. The basic problem is that a pure Poisson GLMM assumes that all the variation in your model can be explained, except for the very limited degree of random variation allowed by the Poisson distribution. This is hardly ever a sensible starting assumption when modelling messy biological count data (which is what most of us are doing). It?s a very common error and quite dangerous because it tends to generate spuriously significant results, as you appear to have found. The same applies to comparing binomial models (provided n trials > 1) between glmer and MCMCglmm. If you add an observation-level random intercept to the glmer model (whether binomial or Poisson) then the two models will be comparable, i.e. (1 | obs) where obs is factor(1:nrow(data)). You can also model overdispersion with a negative binomial using glmer.nb, but there?s no comparable method in MCMCglmm.

Al the best,
Paul 

PS as an aside, you can spot overdispersion in the standard residuals-by-fitted diagnostic scatter plot by comparing it with a plot simulated from the fitted model:

library(devtools)
install_github("pcdjohnson/GLMMmisc")
library(GLMMmisc)
library(lme4)

# Poisson-lognormal model with random effect to model overdispersion (INDEX)
fit.poisln <-
  glmer(TICKS ~ YEAR + scale(HEIGHT) + (1 | BROOD) + (1 | LOCATION) + (1 | INDEX),
        family = "poisson", data = grouseticks)
# pure Poisson model with no random effect to model overdispersion
fit.pois <-
  glmer(TICKS ~ YEAR + scale(HEIGHT) + (1 | BROOD) + (1 | LOCATION),
        family = "poisson", data = grouseticks)

par(mfrow = c(1, 2))
sim.residplot(fit.pois)
title("Pure Poisson GLMM")
sim.residplot(fit.poisln)
title("Poisson-lognormal GLMM")

# if you run the plotting lines a few times you'll see that the simulated residuals 
# tend to look simular to the real residuals from the Poisson-lognormal GLMM
# (a good sign) but much less spread out than the real residuals from the 
# pure Poisson model, a sign that the latter model is failing to account for
# a substantial amount of variation in the responses.
# NB the DHARMa package does something similar but in a more formal and
# sophisticated way