m2 <- lmer(MATH ~ 1 + ESCS + (1 + ESCS | CNTSCHID), data = pisa)Random Slope
Making Random Slope Model
See the result
summary(m2)Linear mixed model fit by REML ['lmerMod']
Formula: MATH ~ 1 + ESCS + (1 + ESCS | CNTSCHID)
Data: pisa
REML criterion at convergence: 13653.8
Scaled residuals:
Min 1Q Median 3Q Max
-2.8809 -0.6318 -0.0380 0.6109 4.1509
Random effects:
Groups Name Variance Std.Dev. Corr
CNTSCHID (Intercept) 2996.20 54.738
ESCS 61.09 7.816 0.79
Residual 1961.08 44.284
Number of obs: 1297, groups: CNTSCHID, 41
Fixed effects:
Estimate Std. Error t value
(Intercept) 367.305 9.069 40.503
ESCS 3.352 1.948 1.721
Correlation of Fixed Effects:
(Intr)
ESCS 0.682
Finding ICC
tab_model(m2)| MATH | |||
|---|---|---|---|
| Predictors | Estimates | CI | p |
| (Intercept) | 367.30 | 349.51 – 385.10 | <0.001 |
| ESCS | 3.35 | -0.47 – 7.17 | 0.086 |
| Random Effects | |||
| σ2 | 1961.08 | ||
| τ00 CNTSCHID | 2996.20 | ||
| τ11 CNTSCHID.ESCS | 61.09 | ||
| ρ01 CNTSCHID | 0.79 | ||
| ICC | 0.53 | ||
| N CNTSCHID | 41 | ||
| Observations | 1297 | ||
| Marginal R2 / Conditional R2 | 0.003 / 0.528 | ||
Making prediction plot
pisa$m1 <- predict(m2)
pisa %>%
ggplot(aes(ESCS, m1, color = CNTSCHID, group = CNTSCHID)) +
geom_smooth(se = F, method = lm) +
theme_bw() +
labs(x = "ESCS",
y = "Matematika",
color = "CNTSCHID")
QQ-Plot
qqmath(ranef(m2, condVar = TRUE))$CNTSCHID

Intercept vs Slope
koef_m2 <- coef(m2)
# print random effects and best line
koef_m2$CNTSCHID %>%
mutate(CNTSCHID = rownames(koef_m2$CNTSCHID)) %>%
ggplot(aes(ESCS, `(Intercept)`, label = CNTSCHID)) +
geom_point() +
geom_smooth(se = F, method = lm) +
geom_label(nudge_y = 0.15, alpha = 0.5) +
theme_bw() +
labs(x = "Slope", y = "Intersep")