| lmer | R Documentation |
Fit a linear mixed-effects model (LMM) to data, via restricted maximum likelihood (REML) or maximum likelihood.
lmer(formula, data = NULL, REML = TRUE, control = lmerControl(),
start = NULL, verbose = 0L, subset, weights, na.action,
offset, contrasts = NULL, devFunOnly = FALSE)
formula |
a two-sided linear formula object describing both the
fixed-effects and random-effects part of the model, with the
response on the left of a
|
data |
an optional data frame containing the variables named in
|
REML |
logical scalar - Should the estimates be chosen to optimize the REML criterion (as opposed to the log-likelihood)? |
control |
a list (of correct class, resulting from
|
start |
a numeric vector or a named list with one optional
component named |
verbose |
integer scalar. If |
subset |
an optional expression indicating the subset of the rows
of |
weights |
an optional vector of ‘prior weights’ to be used
in the fitting process. Should be |
na.action |
a function that indicates what should happen when the
data contain |
offset |
this can be used to specify an a priori known
component to be included in the linear predictor during
fitting. This should be |
contrasts |
an optional list. See the |
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 be within machine tolerance). |
If the formula argument is specified as a character
vector, the function will attempt to coerce it to a formula.
However, this is not recommended (users who want to construct
formulas by pasting together components are advised to use
as.formula or reformulate); model fits
will work but subsequent methods such as drop1,
update, etc. may fail.
When handling perfectly collinear predictor variables
(i.e. fixed-effect design matrices of less than full rank),
[gn]lmer is not as sophisticated
as modeling frameworks such as
lm and glm. While it does
automatically drop collinear variables (with a message
rather than a warning), it does not automatically fill
in NA values for the dropped coefficients;
these can be added via fixef(fitted.model, add.dropped=TRUE).
This information can also be retrieved via
attr(getME(fitted.model, "X"), "col.dropped").
the deviance function returned when devFunOnly is
TRUE takes a single numeric vector argument which defines
the scaled variance-covariance matrices of the random effects.
In the case of unstructured covariances, this vector
is directly mapped to the theta vector, which represents
the unique non-zero values in the Cholesky factor of the
(scaled) covariance matrix. For models with only simple
(intercept-only) random effects, par (and thus
theta) is a vector of the
standard deviations of the random effects. For more complex or
multiple random effects, running getME(.,"par") or
(equivalently) getME(., "theta") to retrieve the
theta
vector for a fitted model and examining
the names of the vector is probably the easiest way to determine
the correspondence between the elements of the theta vector
and elements of the lower triangles of the Cholesky factors of the
random effects.
For structured covariances, the getTheta method
translates the parameter vector to the theta
(Cholesky-factor element) scale for internal use. The parameter
vector is usually composed of a set of standard-deviation values
(one if hom = TRUE or many if hom = FALSE),
followed by one or more parameters that determine the correlation matrix.
An object of class merMod (more specifically,
an object of subclass lmerMod), for which many methods
are available (e.g. methods(class="merMod"))
In earlier version of the lme4 package, a method argument was
used. Its functionality has been replaced by the REML argument.
Also, lmer(.) allowed a family argument (to effectively
switch to glmer(.)). This has been deprecated in summer 2013,
and been disabled in spring 2019.
lm for linear models;
glmer for generalized linear; and
nlmer for nonlinear mixed models.
plot.merMod for plot diagnostics.
## linear mixed models - reference values from older code
(fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy))
summary(fm1) # (with its own print method; see class?merMod % ./merMod-class.Rd
plot(fm1) # plotting the model diagnostics; see ?plot.merMod
str(terms(fm1))
stopifnot(identical(terms(fm1, fixed.only=FALSE),
terms(model.frame(fm1))))
attr(terms(fm1, FALSE), "dataClasses") # fixed.only=FALSE needed for dataCl.
## Maximum Likelihood (ML), and "monitor" iterations via 'verbose':
fm1_ML <- update(fm1, REML=FALSE, verbose = 1)
(fm2 <- lmer(Reaction ~ Days + (Days || Subject), sleepstudy))
anova(fm1, fm2)
sm2 <- summary(fm2)
print(fm2, digits=7, ranef.comp="Var") # the print.merMod() method
print(sm2, digits=3, corr=FALSE) # the print.summary.merMod() method
## Fit sex-specific variances by constructing numeric dummy variables
## for sex and sex:age; in this case the estimated variance differences
## between groups in both intercept and slope are zero ...
data(Orthodont,package="nlme")
Orthodont$nsex <- as.numeric(Orthodont$Sex=="Male")
Orthodont$nsexage <- with(Orthodont, nsex*age)
lmer(distance ~ age + (age|Subject) + (0+nsex|Subject) +
(0 + nsexage|Subject), data=Orthodont)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.