Chapter 7 Multilevel
This section requires the nlme
and ggplot2
packages. The example uses one CONTINUOUS_OUTCOME
, two fixed effects, one FACTOR_PREDICTOR
and one CONTINUOUS_PREDICTOR
, and one random effect FACTOR_LEVEL
. Complete step by step guide available soon.
7.1 assessing the need for multilevel: random intercepts
7.1.1 same intercepts across FACTOR_LEVEL: the null model
interceptOnly <-gls(CONTINUOUS_OUTCOME ~ 1, data = DF, method = "ML")
summary(interceptOnly)
7.1.2 different intercepts across FACTOR_LEVEL: the hierarchical model
randomInterceptOnly <-lme(CONTINUOUS_OUTCOME ~ 1, data = DF, random = ~1|FACTOR_LEVEL, method = "ML")
summary(randomInterceptOnly)
7.1.3 comparing same vs different
anova(interceptOnly, randomInterceptOnly)
- code chuck with graphic representation of the
interceptOnly
andrandomInterceptOnly
models:
ggplot(DF, aes(FACTOR_LEVEL, CONTINUOUS_OUTCOME)) + # randomInterceptOnly model
stat_summary(fun.data = 'mean_se', geom = 'errorbar', width = 0.2) +
stat_summary(fun.data = 'mean_se', geom = 'pointrange') +
geom_point(alpha=0.10) +
scale_x_continuous(limit = c(0.5, 10.5), breaks = seq(1,10,1)) +
geom_hline(yintercept = mean(DF$CONTINUOUS_OUTCOME), linetype = "dotted") # interceptOnly model
7.2 adding the fixed effects: fixed effects and random intercepts
7.2.1 effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME with different intercepts across FACTOR_LEVEL
randomInterceptFACTOR_PREDICTOR <-lme(CONTINUOUS_OUTCOME ~ FACTOR_PREDICTOR, random = ~1|FACTOR_LEVEL, method = "ML", data = DF)
summary(randomInterceptFACTOR_PREDICTOR)
- code chuck with an tentative graphic representation of the
randomInterceptFACTOR_PREDICTOR
model:
ggplot(DF, aes(FACTOR_PREDICTOR, CONTINUOUS_PREDICTOR, colour = FACTOR_PREDICTOR)) + # effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME
stat_summary(fun = mean, geom = "point") +
stat_summary(fun.data = 'mean_se', geom = 'errorbar', width = 0.2) +
stat_summary(fun.data = 'mean_se', geom = 'pointrange') +
geom_point(alpha=0.2) +
geom_hline(yintercept = mean(DF$CONTINUOUS_OUTCOME), linetype = "dotted") +
facet_wrap( ~ FACTOR_LEVEL, nrow = 2) # different intercepts across FACTOR_LEVEL (intercepts not represented)
7.2.2 effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME controlling for CONTINUOUS_PREDICTOR with different intercepts across FACTOR_LEVEL
randomInterceptFAC&CONT_PREDICTORS <-lme(CONTINUOUS_OUTCOME ~ FACTOR_PREDICTOR + CONTINUOUS_PREDICTOR, random = ~1|FACTOR_LEVEL, method = "ML",data = DF)
summary(randomInterceptFAC&CONT_PREDICTORS)
- code chuck with an tentative graphic representation of the
randomInterceptFAC&CONT_PREDICTORS
model:
ggplot(DF, aes(CONTINUOUS_PREDICTOR, CONTINUOUS_OUTCOME, colour = FACTOR_PREDICTOR)) + # effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME controlling for CONTINUOUS_PREDICTOR
geom_point(alpha=0.4) +
facet_wrap( ~ FACTOR_LEVEL, nrow = 2) + # different intercepts across FACTOR_LEVEL (intercepts not represented)
geom_hline(yintercept = mean(DF$CONTINUOUS_OUTCOME), linetype = "dotted")
7.2.3 comparing adding fixed effects
anova(randomInterceptOnly, randomInterceptFACTOR_PREDICTOR, randomInterceptFAC&CONT_PREDICTORS)
7.3 adding random slopes: fixed effects and random slopes
7.3.1 effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME with different intercepts across FACTOR_LEVEL controlling for CONTINUOUS_PREDICTOR
addRandomSlope <- lme(CONTINUOUS_OUTCOME ~ FACTOR_PREDICTOR + CONTINUOUS_PREDICTOR, random = ~FACTOR_PREDICTOR|FACTOR_LEVEL, method = "ML", data = DF)
summary(addRandomSlope)
- code chuck with an tentative graphic representation of the
addRandomSlope
model:
ggplot(DF, aes(CONTINUOUS_PREDICTOR, CONTINUOUS_OUTCOME, colour = FACTOR_PREDICTOR)) + # effect of FACTOR_PREDICTOR on CONTINUOUS_OUTCOME controlling for CONTINUOUS_PREDICTOR
geom_point(alpha=0.4) +
geom_smooth(method = "lm", se = FALSE) +
geom_hline(yintercept = mean(DF$CONTINUOUS_OUTCOME), linetype = "dotted") +
facet_wrap( ~ FACTOR_LEVEL, nrow = 2) # with different intercepts across FACTOR_LEVEL
7.3.2 comparing adding random slopes
anova(randomInterceptFAC&CONT_PREDICTORS,addRandomSlope)