# [R-sig-ME] How do I interpret linear mixed model contrast estimates from multcomp::glht()?

Matthew Van Scoyoc scoyoc at gmail.com
Fri Dec 12 18:23:04 CET 2014

```How do the rows in the summary (e.g. "1 == 0") correspond to the model? The
answer is buried *contrast::contrast()*, but I can't figure it out.
Consider this modified example I stole from here
<https://stat.ethz.ch/pipermail/r-sig-mixed-models/2009q4/003061.html>...

> options(contrasts = c(factor = "contr.SAS", ordered = "contr.poly"))
> library("mlmRev")
> library("lme4")
> library("lmerTest")
> library("contrast")
> library("multcomp")
>
> data("egsingle")
> # Linear mixed model
> math.lmm <- lmer(math ~ year * size + female + (1|childid) +
(1|schoolid), egsingle)
> # Linear model
> math.lm <- lm(math ~ year * size + female, data = egsingle)
> # Calculate contrast matrix
> cc<-contrast(math.lm, a = list(year = c(0.5, 1.5, 2.5), size = 380,
female = levels(egsingle\$female)), +
b = list(year = c(0.5, 1.5,
2.5), size = 800, female = levels(egsingle\$female)))
> # Calculate estimates
> summary(glht(math.lmm, linfct = cc\$X))

Simultaneous Tests for General Linear Hypotheses

Fit: lme4::lmer(formula = math ~ year * size + female + (1 | childid) +
(1 | schoolid), data = egsingle)

Linear Hypotheses:
Estimate   Std. Error   z value   Pr(>|z|)
1 == 0  0.12774    0.08020     1.593     0.1272
2 == 0  0.15322    0.08066     1.900    0.0669 .
3 == 0  0.17870    0.08178     2.185    0.0341 *
4 == 0  0.12774    0.08020     1.593    0.1273
5 == 0  0.15322    0.08066     1.900    0.0669 .
6 == 0  0.17870    0.08178     2.185    0.0342 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)

The row names correspond to the levels of *year* and *female,* and are
probably Female:0.5, Female:1.5, Female:2.5, and so on. But how do I pull
that out of the contrast() object *cc?* It might be simple with 3 main
effects, but my current project has 5 main effects, four 2-way
interactions, and one 3-way interaction, and the summary table has 24 rows.
Ultimately I would like to create a dataframe so I can plot the contrasts,
something like this...

> x = summary(glht(math.lmm, linfct = cc\$X))
> # Contrast data frame
> math.contr = data.frame(Effect.Interaction = reference.something.in.cc,
Estimate =
x[["test"]]\$coefficients, Std.Error = x[["test"]]\$sigma)

Thanks for the help!
Cheers,
MVS
=====
Matthew Van Scoyoc