# Hierarchical Linear Modeling

# basic model fitting

apologies: since I don't know of a channel for discussing/providing feedback on requests for improvement, I'm going to put my question here. Please feel free to point out a better place for this! @DataTx states that this is "completely unclear, incomplete, or has severe formatting problems". Since I don't see any big formatting problems (😃 ), a little bit more guidance about what's expected here for improving clarity or completeness, and why what's here is unsalvageable, would be useful.

The primary packages for fitting hierarchical (alternatively "mixed" or "multilevel") linear models in R are nlme (older) and lme4 (newer). These packages differ in many minor ways but should generally result in very similar fitted models.

library(nlme)
library(lme4)
m1.nlme <- lme(Reaction~Days,random=~Days|Subject,data=sleepstudy,method="REML")
m1.lme4 <- lmer(Reaction~Days+(Days|Subject),data=sleepstudy,REML=TRUE)
all.equal(fixef(m1.nlme),fixef(m1.lme4))
## [1] TRUE

Differences to consider:

  • formula syntax is slightly different
  • nlme is (still) somewhat better documented (e.g. Pinheiro and Bates 2000 Mixed-effects models in S-PLUS; however, see Bates et al. 2015 Journal of Statistical Software/vignette("lmer",package="lme4") for lme4)
  • lme4 is faster and allows easier fitting of crossed random effects
  • nlme provides p-values for linear mixed models out of the box, lme4 requires add-on packages such as lmerTest or afex
  • nlme allows modeling of heteroscedasticity or residual correlations (in space/time/phylogeny)

The unofficial GLMM FAQ (opens new window) provides more information, although it is focused on generalized linear mixed models (GLMMs).