After running a multilevel model in R using the **lme4** package, you may wish to extract information
to allow you to look at predicted values, check model assumptions, and
understand the results. After running a regression model in R using **glm**
or **lm**, the returned object is "glm" or "lm". There are numerous R
functions (**summary**, **anova**, **wfit**, **residuals**, **coeff**,
**effects**) that can be used with these objects. After running a
regression model using **lmer** in the **lme4** package, the returned
object is "mer". This object is not compatible with the R functions
designed for "lm" and "glm" objects and is generally less transparent than these
other model objects.

This page will demonstrate several approaches to the "mer" object that allow interesting components to be accessed and examined.

## Example 1: Checking Normality of Random Intercepts

Below, we fit a random intercept model. We may then wish to check the normality of the intercepts.

mlm1 <- lmer(mathach ~ female + (1 | id), data = hsb) summary(mlm1)Linear mixed model fit by REML Formula: mathach ~ female + (1 | id) Data: hsb AIC BIC logLik deviance REMLdev 47064 47092 -23528 47053 47056 Random effects: Groups Name Variance Std.Dev. id (Intercept) 8.1686 2.8581 Residual 38.8501 6.2330 Number of obs: 7185, groups: id, 160 Fixed effects: Estimate Std. Error t value (Intercept) 13.3450 0.2546 52.41 female -1.3590 0.1714 -7.93 Correlation of Fixed Effects: (Intr) female -0.350

We can *view* a list of the random intercepts from the model by entering ranef(mlm1),
but this is an object of class "ranef.mer". It is not considered a vector
of values.

remlm1 <- ranef(mlm1) class(remlm1)[1] "ranef.mer"hist(remlm1)Error in hist.default(y) : 'x' must be numeric

We can coerce it to be a vector of numeric values that can then be examined.

remlm1 <- as.vector(ranef(mlm1)[[1]])[,1] length(remlm1)[1] 160class(remlm1)[1] "numeric"

## Example 2: Generating predicted values based on fixed effects