GLMMadaptive for fitting mixed-effects models for non-Gaussian grouped/clustered outcomes using marginal maximum likelihood.
Admittedly, there is a number of packages available for fitting similar models, e.g., lme4, glmmsr, glmmTMB, glmmEP, and glmmML among others; more information on other available packages can also be found in GLMM-FAQ. GLMMadaptive differs from these packages in approximating the integrals over the random effects in the definition of the marginal log-likelihood function using an adaptive Gaussian quadrature rule, while allowing for multiple correlated random effects.
An Example: Mixed Effects Logistic RegressionWe illustrate the use of the package in the simple case of a mixed effects logistic regression. We start by simulating some data:
We continue by fitting the mixed effects logistic regression for the longitudinal outcome y assuming random intercepts for the random-effects part. The primary model-fitting function in the package is the mixed_model(), and has four required arguments, namely,
- fixed: a formula for the fixed effects,
- random: a formula for the random effects,
- family: a family object specifying the type of response variable, and
- data: a data frame containing the variables in the previously mentioned formulas.
By default, 11 quadrature points are used, but this can be adjusted using the nAGQ control argument. We extend model fm1 by also including a random slopes term; however, we assume that the covariance between the random intercepts and random slopes is zero. This is achieved by using the `||` symbol in the specification of the random argument. We fit the new model and compare it with fm1 using the anova() function that performs a likelihood ratio test:
We further extend the model by estimating the covariance between the random intercepts and random slopes, and we use 15 quadrature points for the numerical integration:
Capabilities and Further ReadingThe package offers a wide range of methods for standard generic functions in R applicable to regression models objects and mixed models objects in particular (e.g., fixef(), ranef(), etc.); more information can be found in the Methods for MixMod Objects vignette. In addition, some highlights of its capabilities:
- It allows for user-defined family objects implementing not standardly available outcome distributions; more information can be found in the Custom Models vignette.
- It can calculate fixed effects coefficients with a marginal / population averaged interpretation using the function marginal_coefs().
- Function effectPlotData() calculates predictions and confidence intervals for constructing effect plots.