In this post, I would like to introduce my new R package 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 Regression
We 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.
Assuming that the package has been loaded using library(“GLMMadaptive”), the call to fit the random intercepts logistic regression is:
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 Reading
The 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.
The development version of the package is available on the GitHub repository.