I'm running a generalised linear mixed model with beta family on the effect of overhead cover (proportion ∈ (0,1)) on the proportion of birds scavenging from carrion left out in nature (proportion ∈ (0,1)), with Area as random factor (factor w/ 6 levels).

> myglmm <- glmmTMB(ProportionBirdsScavenging ~ OverheadCover + (1|Area), data = df_prop_birds_eating, beta_family(link = "logit"), weights = pointWeight_scaled)
> summary(myglmm)
Family: beta  ( logit )
Formula:          ProportionBirdsScavenging ~ OverheadCover + (1 | Area)
Data: df_prop_birds_eating
Weights: pointWeight_scaled

     AIC      BIC   logLik deviance df.resid 
    -5.3      0.8      6.7    -13.3       30 

Random effects:

Conditional model:
 Groups Name        Variance  Std.Dev. 
 Area   (Intercept) 1.198e-10 1.094e-05
Number of obs: 34, groups:  Area, 6

Overdispersion parameter for beta family (): 5.17 

Conditional model:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)     1.7869     0.7196   2.483 0.013017 *  
OverheadCover  -4.7387     1.2661  -3.743 0.000182 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The overdispersion parameter is 5.17. I have tried to find some information about this parameter for beta models, but I could not find much. Most of what I found was about the poisson or binomial distribution, and tests about significance e.g. DHARMa::testOverdispersion, performance::check_overdispersion, and AER::dispersiontest only test for Poisson GLMs. My question is whether this overdispersion parameter value of 5.17 is too high? Does this mean that the model assumptions are not met and the output can not be trusted? If so, is there a way of fixing this, so that my model yields reliable results?

About overdispersion in Poisson models I frequently read that adding a dispersion parameter would 'fix' the overdispersion, but in the beta model I am using there already is a dispersion parameter. Can somebody elaborate on this?


Using the word "overdispersion parameter" is maybe not an ideal choice by the glmmTMB developers - "dispersion parameter" may be more appropriate.

Overdispersion is when your residual variance is larger than what your fitted model assumes. It mainly only occurs in models that have a fixed dispersion (e.g. Poisson)

When you fit a model with variable dispersion (as you do here), your model adjusts the expected residual variance (=dispersion) during the fit. The dispersion parameter gives your feedback about this adjustment, but relative to this fitted dispersion, the model isn't overdispersed.

A dispersion test for a model with a dispersion parameter > 1 should therefore not indicate overdispersion (at least assuming that the residuals scatter with the estimated dispersion). See also https://github.com/florianhartig/DHARMa/issues/143. Also, There is no reason to put less trust in a model with a large estimated dispersion parameter.

Btw., DHARMa::testOverdispersion should work for the beta family. I have just tried this out, and we see exactly the behavior I describe above: estimated dispersion is around 4, but the dispersion test ist negative

x = runif(100,-1,1)
y = plogis(x + rnorm(100))


fit <- glmmTMB(y~x, family = beta_family())

res <-simulateResiduals(fit, plot = T)

enter image description here

  • $\begingroup$ Thanks for the elaborate answer. Idk why DHARMa::testOverdispersion didn't work before, must have done something wrong. When I run res <- simulateResiduals(myglmm) it returns Model family was recognized or set as continuous, but duplicate values were detected in the response. Consider if you are fitting an appropriate model. Should I be worried? When I then run testDispersion(res) it returns me data: simulationOutput ratioObsSim = 1.1511, p-value = 0.248 alternative hypothesis: two.sided, does this insignificant p value indicate that there is no overdispersion? $\endgroup$
    – Peter
    Feb 26 '20 at 14:47
  • $\begingroup$ a n.s. p-value indicates no overdispersion. The warning probably occurs because you have several 0 or 1 in the data. That can happen naturally in the beta, but if you want to be sure, you could test for 0 / 1 inflation (which frequently happens with the beta) $\endgroup$ Feb 26 '20 at 15:00
  • $\begingroup$ Thanks, I understand. For a similar other beta model I get a summary dispersion value of 27.4, and a DHARMa::testDispersio p-value of < 2.2e-16. Does this mean that this model is doomed? Can I fix the overdispersion in any way? I could provide some data if you think it's useful to take a look. $\endgroup$
    – Peter
    Feb 26 '20 at 15:29
  • 1
    $\begingroup$ One possible reason for this is that you have 0 or 1 inflation. Have you tried testing your model against a model with zero-inflation switched on? If you have mostly ones, you can transform your response to 1-y to get zeros. If that doesn't help, and you want to provide an example, ideally post it here github.com/florianhartig/DHARMa/issues $\endgroup$ Feb 26 '20 at 15:55
  • 1
    $\begingroup$ p.s. - sometimes, even with zero-inflation, dispersion for the beta doesn't fit. I have seen this before. I have normally interpreted this as some kind of problem in the distribution. $\endgroup$ Feb 26 '20 at 15:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.