Learn R Programming

lme4 (version 1.1-7)

glmer: Fit Generalized Linear Mixed-Effects Models

Description

Fit a generalized linear mixed model (GLMM)

Usage

glmer(formula, data = NULL, family = gaussian,
    control = glmerControl(), start = NULL, verbose = 0L,
    nAGQ = 1L, subset, weights, na.action, offset,
    contrasts = NULL, mustart, etastart,
    devFunOnly = FALSE, ...)

Arguments

family
a GLM family, see glm and family.
nAGQ
integer scalar - the number of points per axis for evaluating the adaptive Gauss-Hermite approximation to the log-likelihood. Defaults to 1, corresponding to the Laplace approximation. Values greater than 1 produce greater accuracy in the evalua
start
a named list of starting values for the parameters in the model, or a numeric vector. A numeric start argument will be used as the starting value of theta. If start is a list, the theta element
mustart
optional starting values on the scale of the conditional mean, as in glm; see there for details.
etastart
optional starting values on the scale of the unbounded predictor as in glm; see there for details.
...
other potential arguments. A method argument was used in earlier versions of the package. Its functionality has been replaced by the nAGQ argument.
formula
a two-sided linear formula object describing both the fixed-effects and fixed-effects part of the model, with the response on the left of a ~ operator and the terms, separated by + operators, on the right. Random-effects
data
an optional data frame containing the variables named in formula. By default the variables are taken from the environment from which lmer is called. While data is optional, the package authors strongly
control
a list (of correct class, resulting from lmerControl() or glmerControl() respectively) containing control parameters, including the nonlinear
verbose
integer scalar. If > 0 verbose output is generated during the optimization of the parameter estimates. If > 1 verbose output is generated during the individual PIRLS steps.
subset
an optional expression indicating the subset of the rows of data that should be used in the fit. This can be a logical vector, or a numeric vector indicating which observation numbers are to be included, or a character vector of the r
weights
an optional vector of prior weights to be used in the fitting process. Should be NULL or a numeric vector.
na.action
a function that indicates what should happen when the data contain NAs. The default action (na.omit, inherited from the 'factory fresh' value of getOption("na.action")) strips any observations with any missi
offset
this can be used to specify an a priori known component to be included in the linear predictor during fitting. This should be NULL or a numeric vector of length equal to the number of cases. One or more
contrasts
an optional list. See the contrasts.arg of model.matrix.default.
devFunOnly
logical - return only the deviance evaluation function. Note that because the deviance function operates on variables stored in its environment, it may not return exactly the same values on subsequent calls (but the results should always

Value

  • An object of class glmerMod, for which many methods are available (e.g. methods(class="glmerMod"))

concept

GLMM

Details

Fit a generalized linear mixed model, which incorporates both fixed-effects parameters and random effects in a linear predictor, via maximum likelihood. The linear predictor is related to the conditional mean of the response through the inverse link function defined in the GLM family.

The expression for the likelihood of a mixed-effects model is an integral over the random effects space. For a linear mixed-effects model (LMM), as fit by lmer, this integral can be evaluated exactly. For a GLMM the integral must be approximated. The most reliable approximation for GLMMs with a single grouping factor for the random effects is adaptive Gauss-Hermite quadrature. The nAGQ argument controls the number of nodes in the quadrature formula. A model with a single, scalar random-effects term could reasonably use up to 25 quadrature points per scalar integral.

With vector-valued random effects the complexity of the Gauss-Hermite quadrature formulas increases dramatically with the dimension. For a 3-dimensional vector-valued random effect nAGQ=5 requires 93 evaluations of the GLM deviance per evaluation of the approximate GLMM deviance. For 20-dimensional evaluations of the GLM deviance per evaluation of the approximate GLMM deviance.

The default approximation is the Laplace approximation, corresponding to nAGQ=1.

See Also

lmer (for details on formulas and parameterization); glm

Examples

Run this code
## generalized linear mixed model
library(lattice)
xyplot(incidence/size ~ period|herd, cbpp, type=c('g','p','l'),
       layout=c(3,5), index.cond = function(x,y)max(y))
(gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
              data = cbpp, family = binomial))
## using nAGQ=0 only gets close to the optimum
(gm1a <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
               cbpp, binomial, nAGQ = 0))
## using  nAGQ = 9  provides a better evaluation of the deviance
## Currently the internal calculations use the sum of deviance residuals,
## which is not directly comparable with the nAGQ=0 or nAGQ=1 result.
(gm1a <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
               cbpp, binomial, nAGQ = 9))

## GLMM with individual-level variability (accounting for overdispersion)
## For this data set the model is the same as one allowing for a period:herd
## interaction, which the plot indicates could be needed.
cbpp$obs <- 1:nrow(cbpp)
(gm2 <- glmer(cbind(incidence, size - incidence) ~ period +
    (1 | herd) +  (1|obs),
              family = binomial, data = cbpp))
anova(gm1,gm2)

## glmer and glm log-likelihoods are consistent
gm1Devfun <- update(gm1,devFunOnly=TRUE)
gm0 <- glm(cbind(incidence, size - incidence) ~ period,
           family = binomial, data = cbpp)
## evaluate GLMM deviance at RE variance=theta=0, beta=(GLM coeffs)
gm1Dev0 <- gm1Devfun(c(0,coef(gm0)))
## compare
stopifnot(all.equal(gm1Dev0,c(-2*logLik(gm0))))

Run the code above in your browser using DataLab