overdisp() checks generalized linear (mixed) models for overdispersion, while zero_count() checks whether models from Poisson-families are over- or underfitting zero-counts in the outcome.

overdisp(x, ...)

zero_count(x, tolerance = 0.05)

Arguments

x

Fitted model of class merMod, glmmTMB, glm, or glm.nb (package MASS).

...

Currently not used.

tolerance

The tolerance for the ratio of observed and predicted zeros to considered as over- or underfitting zero-counts. A ratio between 1 +/- tolerance is considered as OK, while a ratio beyond or below this treshold would indicate over- or underfitting.

Value

For overdisp(), information on the overdispersion test; for zero_count(), the amount of predicted and observed zeros in the outcome, as well as the ratio between these two values.

Details

For merMod- and glmmTMB-objects, overdisp() is based on the code in the GLMM FAQ, section How can I deal with overdispersion in GLMMs?. Note that this function only returns an approximate estimate of an overdispersion parameter, and is probably inaccurate for zero-inflated mixed models (fitted with glmmTMB).

The same code as above for mixed models is also used to check overdispersion for negative binomial models.

For Poisson-models, the overdispersion test is based on the code from Gelman and Hill (2007), page 115.

Note

For overdispersoion test, a p-value < .05 indicates overdispersion.

For zero_count(), a model that is underfitting zero-counts indicates a zero-inflation in the data, i.e. it is recommended to use negative binomial or zero-inflated models then.

References

Bolker B et al. (2017): GLMM FAQ.

Gelman A, Hill J (2007) Data Analysis Using Regression and Multilevel/Hierarchical Models. Cambridge, New York: Cambridge University Press

Examples

library(sjmisc) data(efc) # response has many zero-counts, Poisson models # might be overdispersed barplot(table(efc$tot_sc_e))
fit <- glm(tot_sc_e ~ neg_c_7 + e42dep + c160age, data = efc, family = poisson) overdisp(fit)
#> #> # Overdispersion test #> #> dispersion ratio = 1.5485 #> Pearson's Chi-Squared = 1371.9645 #> p-value = 0.0000 #>
#> Overdispersion detected.
zero_count(fit)
#> #> # Zero-Count overfitting #> #> Observed zero-counts: 397 #> Predicted zero-counts: 338 #> Ratio: 0.85 #>
#> Model is underfitting zero-counts (probable zero-inflation).
library(lme4) efc$e15relat <- to_factor(efc$e15relat) fit <- glmer(tot_sc_e ~ neg_c_7 + e42dep + c160age + (1 | e15relat), data = efc, family = poisson) overdisp(fit)
#> #> # Overdispersion test #> #> dispersion ratio = 1.5282 #> Pearson's Chi-Squared = 1350.8975 #> p-value = 0.0000 #>
#> Overdispersion detected.
zero_count(fit)
#> #> # Zero-Count overfitting #> #> Observed zero-counts: 396 #> Predicted zero-counts: 339 #> Ratio: 0.86 #>
#> Model is underfitting zero-counts (probable zero-inflation).