Last chance! 50% off unlimited learning
Sale ends in
The predict
method for merMod
objects, i.e. results of lmer()
, glmer()
, etc.
# S3 method for merMod
predict(object, newdata = NULL, newparams = NULL,
re.form = NULL,
random.only=FALSE, terms = NULL,
type = c("link", "response"), allow.new.levels = FALSE,
na.action = na.pass,
se.fit = FALSE,
...)
a numeric vector of predicted values
a fitted model object
data frame for which to evaluate predictions.
new parameters to use in evaluating predictions,
specified as in the start
parameter for lmer
or glmer
-- a list with components theta
and/or
(for GLMMs) beta
.
(formula, NULL
, or NA
) specify which random effects to condition on when predicting. If NULL
,
include all random effects; if NA
or ~0
,
include no random effects.
(logical) ignore fixed effects, making predictions only using random effects?
a terms
object - unused at present.
character string - either "link"
, the default, or
"response"
indicating the type of prediction object returned.
logical if new levels (or NA values) in
newdata
are allowed. If FALSE (default), such new values in
newdata
will trigger an error; if TRUE, then the prediction
will use the unconditional (population-level) values for data with
previously unobserved levels (or NAs).
function
determining what should be done
with missing values for fixed effects in newdata
.
The default is to predict NA
: see na.pass
.
(Experimental) A logical value indicating whether the standard errors should be included or not. Default is FALSE.
optional additional parameters. None are used at present.
If any random effects are included in re.form
(i.e. it is not ~0
or NA
),
newdata
must contain columns
corresponding to all of the grouping variables and
random effects used in the original model, even if not all
are used in prediction; however, they can be safely set to NA
in this case.
There is no option for computing standard errors of
predictions because it is difficult to define an
efficient method that incorporates uncertainty in the
variance parameters; we recommend bootMer
for this task.
(gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 |herd), cbpp, binomial))
str(p0 <- predict(gm1)) # fitted values
str(p1 <- predict(gm1,re.form=NA)) # fitted values, unconditional (level-0)
newdata <- with(cbpp, expand.grid(period=unique(period), herd=unique(herd)))
str(p2 <- predict(gm1,newdata)) # new data, all RE
str(p3 <- predict(gm1,newdata,re.form=NA)) # new data, level-0
str(p4 <- predict(gm1,newdata,re.form= ~(1|herd))) # explicitly specify RE
stopifnot(identical(p2, p4))
# \dontshow{
## predict() should work with variable names with spaces [as lm() does]:
dd <- expand.grid(y=1:3, "Animal ID" = 1:9)
fm <- lmer(y ~ 1 + (1 | `Animal ID`), dd)
summary(fm)
isel <- c(7, 9, 11, 13:17, 20:22)
stopifnot(all.equal(vcov(fm)[1,1], 0.02564102564),
all.equal(unname(predict(fm, newdata = dd[isel,])),
unname( fitted(fm) [isel])))
# }
Run the code above in your browser using DataLab