Random slopes model

Following up from practical 2, we will continue to build up our multilevel model for school effects by adding a random slope for prior attainment.


Task 1: Fit a random slopes model

We have theoretical reasons to believe that the effect of KS2 varies across schools, since some schools do seem to make their pupils progress more than others. To test this hypothesis, we fit a random slopes model by running the following code:

m1_rs <- lmer(ks4stand ~ as.vector(scale(ks2stand))+
              (1 + as.vector(scale(ks2stand))|schoolID), data = valueadded, REML = F)

# Note that KS2 have been added like this "as.vector(scale(ks2stand))". This is done to prevent a convergence error. The function "scale" rescales KS2 scores to units of standard deviation, i.e. it "standardises".

summary(m1_rs)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: 
## ks4stand ~ as.vector(scale(ks2stand)) + (1 + as.vector(scale(ks2stand)) |  
##     schoolID)
##    Data: valueadded
## 
##      AIC      BIC   logLik deviance df.resid 
##  94083.5  94128.8 -47035.7  94071.5    14046 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.9474 -0.5315  0.0255  0.5764  4.5486 
## 
## Random effects:
##  Groups   Name                       Variance Std.Dev. Corr
##  schoolID (Intercept)                 8.964   2.994        
##           as.vector(scale(ks2stand))  1.295   1.138    0.50
##  Residual                            43.160   6.570        
## Number of obs: 14052, groups:  schoolID, 628
## 
## Fixed effects:
##                            Estimate Std. Error t value
## (Intercept)                -0.11737    0.13375  -0.877
## as.vector(scale(ks2stand))  6.42098    0.07797  82.353
## 
## Correlation of Fixed Effects:
##             (Intr)
## as.vct((2)) 0.282

Question

1.1. What is the correlation between the intercept and the slope?

Answer: The correlation is the second random effect reported in the model summary. This is 0.5

1.2. What sort of pattern is it?

Answer: A positive correlation between the intercept and the slope means there is a “fanning out” pattern. We will see this pattern very clearly in task 3.


Task 2: Compare the fit of the random slopes model to the random intercepts model

To compare the random intercepts models with the random slopes model, we first run the random intercepts model again

m1 <- lmer(ks4stand ~ ks2stand + (1|schoolID), data = valueadded, REML = F)
anova(m1, m1_rs)
## Data: valueadded
## Models:
## m1: ks4stand ~ ks2stand + (1 | schoolID)
## m1_rs: ks4stand ~ as.vector(scale(ks2stand)) + (1 + as.vector(scale(ks2stand)) | schoolID)
##       npar   AIC   BIC logLik deviance  Chisq Df Pr(>Chisq)    
## m1       4 94184 94215 -47088    94176                         
## m1_rs    6 94083 94129 -47036    94071 104.87  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

And then we compare using the anova function in R:

anova(m1, m1_rs)
## Data: valueadded
## Models:
## m1: ks4stand ~ ks2stand + (1 | schoolID)
## m1_rs: ks4stand ~ as.vector(scale(ks2stand)) + (1 + as.vector(scale(ks2stand)) | schoolID)
##       npar   AIC   BIC logLik deviance  Chisq Df Pr(>Chisq)    
## m1       4 94184 94215 -47088    94176                         
## m1_rs    6 94083 94129 -47036    94071 104.87  2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Question:

2.1. Is the random slope specification a significant addition to the model?

Answer: The results indicate that, even though more complex (2 extra parameters), the random slopes model has a significantly better fit than the random intercepts model.


Task 3: Visualising results

To plot the school predicted lines, we can retrieve the fitted values from the model m1_rs, as such:

valueadded2 <- filter(valueadded, !is.na(ks4stand) & !is.na(ks2stand)) # this filter is necessary to avoid issues with missing values

valueadded2$pred_rs<-fitted(m1_rs)

Then we can plot the predicted school results by typing:

school_plot_rs<-ggplot(valueadded2, aes(x=ks2stand, y=pred_rs, group=factor(schoolID))) + 
  geom_smooth(method="lm", colour="black") +
  xlab("Standardised KS2 score") +
  ylab("Predicted KS4 score") +
  theme_bw()

school_plot_rs

Voilà! School predicted scores have varying slopes for the relationship between KS2 and GCSE scores. You can see that pupils in some schools make more progress than others on average and some make less.

Question

3.1. What sort of pattern is this?

Answer: Confirming what the model reported in task 1, we clearly see a “fanning out” pattern.



Task 4: Checking assumptions

We will check the assumptions for the random intercepts model (m1).

You can also plot the higher-level (school) residuals to check for normality

u0 <- ranef(m1, condVar = TRUE) # These are the residuals from model "m1"

hist(u0$schoolID$`(Intercept)`) # Histogram for school residuals

qqnorm(u0$schoolID$`(Intercept)`, pch = 1, frame = FALSE) # Q-Q plot for school residuals
qqline(u0$schoolID$`(Intercept)`, col = "steelblue", lwd = 2) # Q-Q plot for school residuals

You can also plot individual-level to check for normality

valueadded2$ind_resid <- residuals(m1)

hist(valueadded2$ind_resid)

qqnorm(valueadded2$ind_resid, pch = 1, frame = FALSE)
qqline(valueadded2$ind_resid, col = "steelblue", lwd = 2)

And finally, you can plot individual-level residuals against the predicted values:

valueadded2$pred <- fitted(m1) # retrieve predicted values from model m1

homoscedasticity <- ggplot(valueadded2, aes(y = ind_resid, x = pred)) + geom_point()

homoscedasticity

Questions

4.1. Is the normality assumption reasonable at the school level?

Answer: Residuals rarely ever look like a neat normal distribution. The right tail of the distribution seems longer than the left tail, which means that there may be variables that we still need to control for.

4.2. Is the normality assumption reasonable at the pupil level?

Answer: This time, the left tail of the distribution seems longer than the right tail, so again, that there may be variables that we still need to control for.

4.3. Is it reasonable to assume homoscedasticity?

Answer: The variability looks uneven. The right-hand side is narrower than the middle section. This is evidence of heteroscedasticity, but remember that this plot is generated from the residuals of the random intercepts model. The random slopes will suffer less from this issue because it allows for correlation between intercept and slope.

LS0tDQp0aXRsZTogIkludHJvIHRvIE1MTTogUHJhY3RpY2FsIDQiDQphdXRob3I6IFBhdHJpY2lvIFRyb25jb3NvIGFuZCBBbmEgTW9yYWxlcy1Hw7NtZXoNCmRhdGU6ICJKdW5lIDIwMjQiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGhpZ2hsaWdodGVyOiBudWxsDQogICAgdGhlbWU6IGNvc21vDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIGZvbnRzaXplOiAxMnB0DQotLS0NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KbGlicmFyeShoYXZlbikNCmxpYnJhcnkobG1lNCkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQp5cGU8LXJlYWRfc2F2KCJodHRwczovL2dpdGh1Yi5jb20vQS1tb3JhL01MTV9zdW1tZXItc2Nob29sL3Jhdy9tYWluL2RhdGEvbHN5cGVfMTUwMDBfZmluYWxfMjAxMV8wNV8wNC5zYXYiKQ0KdmFsdWVhZGRlZCA8LSBzZWxlY3QoeXBlLCBwdXBpbGlkLCBzY2hvb2xJRCwgDQogICAgICAgICAgICAgICAgICAgICBrczJzdGFuZCwga3M0c3RhbmQsIGdlbmRlciwgDQogICAgICAgICAgICAgICAgICAgICBmc20pDQpgYGANCg0KIyBSYW5kb20gc2xvcGVzIG1vZGVsDQoNCkZvbGxvd2luZyB1cCBmcm9tIHByYWN0aWNhbCAyLCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGJ1aWxkIHVwIG91ciBtdWx0aWxldmVsIG1vZGVsIGZvciBzY2hvb2wgZWZmZWN0cyBieSBhZGRpbmcgYSByYW5kb20gc2xvcGUgZm9yIHByaW9yIGF0dGFpbm1lbnQuDQoNCioqKg0KDQojIFRhc2sgMTogRml0IGEgcmFuZG9tIHNsb3BlcyBtb2RlbA0KDQpXZSBoYXZlIHRoZW9yZXRpY2FsIHJlYXNvbnMgdG8gYmVsaWV2ZSB0aGF0IHRoZSBlZmZlY3Qgb2YgS1MyIHZhcmllcyBhY3Jvc3Mgc2Nob29scywgc2luY2Ugc29tZSBzY2hvb2xzIGRvIHNlZW0gdG8gbWFrZSB0aGVpciBwdXBpbHMgcHJvZ3Jlc3MgbW9yZSB0aGFuIG90aGVycy4gVG8gdGVzdCB0aGlzIGh5cG90aGVzaXMsIHdlIGZpdCBhIGByYW5kb20gc2xvcGVzIG1vZGVsYCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29kZTogDQoNCmBgYHtyLCB3YXJuaW5nPUYsIG1lc3NhZ2U9Rn0NCg0KbTFfcnMgPC0gbG1lcihrczRzdGFuZCB+IGFzLnZlY3RvcihzY2FsZShrczJzdGFuZCkpKw0KICAgICAgICAgICAgICAoMSArIGFzLnZlY3RvcihzY2FsZShrczJzdGFuZCkpfHNjaG9vbElEKSwgZGF0YSA9IHZhbHVlYWRkZWQsIFJFTUwgPSBGKQ0KDQojIE5vdGUgdGhhdCBLUzIgaGF2ZSBiZWVuIGFkZGVkIGxpa2UgdGhpcyAiYXMudmVjdG9yKHNjYWxlKGtzMnN0YW5kKSkiLiBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBhIGNvbnZlcmdlbmNlIGVycm9yLiBUaGUgZnVuY3Rpb24gInNjYWxlIiByZXNjYWxlcyBLUzIgc2NvcmVzIHRvIHVuaXRzIG9mIHN0YW5kYXJkIGRldmlhdGlvbiwgaS5lLiBpdCAic3RhbmRhcmRpc2VzIi4NCg0Kc3VtbWFyeShtMV9ycykNCmBgYA0KDQojIyMgUXVlc3Rpb24NCg0KMS4xLiBXaGF0IGlzIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBpbnRlcmNlcHQgYW5kIHRoZSBzbG9wZT8NCg0KKipBbnN3ZXI6KiogVGhlIGNvcnJlbGF0aW9uIGlzIHRoZSBzZWNvbmQgcmFuZG9tIGVmZmVjdCByZXBvcnRlZCBpbiB0aGUgbW9kZWwgc3VtbWFyeS4gVGhpcyBpcyAwLjUNCg0KMS4yLiBXaGF0IHNvcnQgb2YgcGF0dGVybiBpcyBpdD8NCg0KKipBbnN3ZXI6KiogQSBwb3NpdGl2ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBpbnRlcmNlcHQgYW5kIHRoZSBzbG9wZSBtZWFucyB0aGVyZSBpcyBhICJmYW5uaW5nIG91dCIgcGF0dGVybi4gV2Ugd2lsbCBzZWUgdGhpcyBwYXR0ZXJuIHZlcnkgY2xlYXJseSBpbiB0YXNrIDMuDQoNCioqKg0KDQojIFRhc2sgMjogQ29tcGFyZSB0aGUgZml0IG9mIHRoZSByYW5kb20gc2xvcGVzIG1vZGVsIHRvIHRoZSByYW5kb20gaW50ZXJjZXB0cyBtb2RlbA0KDQpUbyBjb21wYXJlIHRoZSBgcmFuZG9tIGludGVyY2VwdHMgbW9kZWxzYCB3aXRoIHRoZSBgcmFuZG9tIHNsb3BlcyBtb2RlbGAsIHdlIGZpcnN0IHJ1biB0aGUgcmFuZG9tIGludGVyY2VwdHMgbW9kZWwgYWdhaW4NCg0KYGBge3IsIHdhcm5pbmc9RiwgbWVzc2FnZT1GfQ0KbTEgPC0gbG1lcihrczRzdGFuZCB+IGtzMnN0YW5kICsgKDF8c2Nob29sSUQpLCBkYXRhID0gdmFsdWVhZGRlZCwgUkVNTCA9IEYpDQphbm92YShtMSwgbTFfcnMpDQpgYGANCg0KQW5kIHRoZW4gd2UgY29tcGFyZSB1c2luZyB0aGUgYGFub3ZhYCBmdW5jdGlvbiBpbiBSOg0KDQpgYGB7ciwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQphbm92YShtMSwgbTFfcnMpDQpgYGANCg0KIyMjIFF1ZXN0aW9uOg0KDQoyLjEuIElzIHRoZSByYW5kb20gc2xvcGUgc3BlY2lmaWNhdGlvbiBhIHNpZ25pZmljYW50IGFkZGl0aW9uIHRvIHRoZSBtb2RlbD8NCg0KKipBbnN3ZXI6KiogVGhlIHJlc3VsdHMgaW5kaWNhdGUgdGhhdCwgZXZlbiB0aG91Z2ggbW9yZSBjb21wbGV4ICgyIGV4dHJhIHBhcmFtZXRlcnMpLCB0aGUgYHJhbmRvbSBzbG9wZXMgbW9kZWxgIGhhcyBhIHNpZ25pZmljYW50bHkgYmV0dGVyIGZpdCB0aGFuIHRoZSBgcmFuZG9tIGludGVyY2VwdHMgbW9kZWxgLg0KDQoqKioNCg0KIyBUYXNrIDM6IFZpc3VhbGlzaW5nIHJlc3VsdHMNCg0KVG8gcGxvdCB0aGUgc2Nob29sIHByZWRpY3RlZCBsaW5lcywgd2UgY2FuIHJldHJpZXZlIHRoZSBmaXR0ZWQgdmFsdWVzIGZyb20gdGhlIG1vZGVsIGBtMV9yc2AsIGFzIHN1Y2g6DQoNCmBgYHtyLCB3YXJuaW5nPUYsIG1lc3NhZ2U9Rn0NCnZhbHVlYWRkZWQyIDwtIGZpbHRlcih2YWx1ZWFkZGVkLCAhaXMubmEoa3M0c3RhbmQpICYgIWlzLm5hKGtzMnN0YW5kKSkgIyB0aGlzIGZpbHRlciBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgaXNzdWVzIHdpdGggbWlzc2luZyB2YWx1ZXMNCg0KdmFsdWVhZGRlZDIkcHJlZF9yczwtZml0dGVkKG0xX3JzKQ0KYGBgDQoNClRoZW4gd2UgY2FuIHBsb3QgdGhlIHByZWRpY3RlZCBzY2hvb2wgcmVzdWx0cyBieSB0eXBpbmc6DQoNCmBgYHtyLCB3YXJuaW5nPUYsIG1lc3NhZ2U9Rn0NCnNjaG9vbF9wbG90X3JzPC1nZ3Bsb3QodmFsdWVhZGRlZDIsIGFlcyh4PWtzMnN0YW5kLCB5PXByZWRfcnMsIGdyb3VwPWZhY3RvcihzY2hvb2xJRCkpKSArIA0KICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIiwgY29sb3VyPSJibGFjayIpICsNCiAgeGxhYigiU3RhbmRhcmRpc2VkIEtTMiBzY29yZSIpICsNCiAgeWxhYigiUHJlZGljdGVkIEtTNCBzY29yZSIpICsNCiAgdGhlbWVfYncoKQ0KDQpzY2hvb2xfcGxvdF9ycw0KYGBgDQoNClZvaWzDoCEgU2Nob29sIHByZWRpY3RlZCBzY29yZXMgaGF2ZSB2YXJ5aW5nIHNsb3BlcyBmb3IgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEtTMiBhbmQgR0NTRSBzY29yZXMuIFlvdSBjYW4gc2VlIHRoYXQgcHVwaWxzIGluIHNvbWUgc2Nob29scyBtYWtlIG1vcmUgcHJvZ3Jlc3MgdGhhbiBvdGhlcnMgb24gYXZlcmFnZSBhbmQgc29tZSBtYWtlIGxlc3MuIA0KDQojIyMgUXVlc3Rpb24NCg0KMy4xLiBXaGF0IHNvcnQgb2YgcGF0dGVybiBpcyB0aGlzPw0KDQoqKkFuc3dlcjoqKiBDb25maXJtaW5nIHdoYXQgdGhlIG1vZGVsIHJlcG9ydGVkIGluIHRhc2sgMSwgd2UgY2xlYXJseSBzZWUgYSAiZmFubmluZyBvdXQiIHBhdHRlcm4uDQoNCjxicj4NCg0KKioqDQoNCiMgVGFzayA0OiBDaGVja2luZyBhc3N1bXB0aW9ucw0KDQpXZSB3aWxsIGNoZWNrIHRoZSBhc3N1bXB0aW9ucyBmb3IgdGhlIGByYW5kb20gaW50ZXJjZXB0c2AgbW9kZWwgKCoqbTEqKikuIA0KDQpZb3UgY2FuIGFsc28gcGxvdCB0aGUgaGlnaGVyLWxldmVsIChzY2hvb2wpIHJlc2lkdWFscyB0byBjaGVjayBmb3Igbm9ybWFsaXR5DQoNCmBgYHtyLCB3YXJuaW5nPUYsIG1lc3NhZ2U9Rn0NCnUwIDwtIHJhbmVmKG0xLCBjb25kVmFyID0gVFJVRSkgIyBUaGVzZSBhcmUgdGhlIHJlc2lkdWFscyBmcm9tIG1vZGVsICJtMSINCg0KaGlzdCh1MCRzY2hvb2xJRCRgKEludGVyY2VwdClgKSAjIEhpc3RvZ3JhbSBmb3Igc2Nob29sIHJlc2lkdWFscw0KDQpxcW5vcm0odTAkc2Nob29sSUQkYChJbnRlcmNlcHQpYCwgcGNoID0gMSwgZnJhbWUgPSBGQUxTRSkgIyBRLVEgcGxvdCBmb3Igc2Nob29sIHJlc2lkdWFscw0KcXFsaW5lKHUwJHNjaG9vbElEJGAoSW50ZXJjZXB0KWAsIGNvbCA9ICJzdGVlbGJsdWUiLCBsd2QgPSAyKSAjIFEtUSBwbG90IGZvciBzY2hvb2wgcmVzaWR1YWxzDQpgYGANCg0KWW91IGNhbiBhbHNvIHBsb3QgaW5kaXZpZHVhbC1sZXZlbCB0byBjaGVjayBmb3Igbm9ybWFsaXR5DQoNCmBgYHtyLCB3YXJuaW5nPUYsIG1lc3NhZ2U9Rn0NCg0KdmFsdWVhZGRlZDIkaW5kX3Jlc2lkIDwtIHJlc2lkdWFscyhtMSkNCg0KaGlzdCh2YWx1ZWFkZGVkMiRpbmRfcmVzaWQpDQoNCnFxbm9ybSh2YWx1ZWFkZGVkMiRpbmRfcmVzaWQsIHBjaCA9IDEsIGZyYW1lID0gRkFMU0UpDQpxcWxpbmUodmFsdWVhZGRlZDIkaW5kX3Jlc2lkLCBjb2wgPSAic3RlZWxibHVlIiwgbHdkID0gMikNCg0KYGBgDQoNCkFuZCBmaW5hbGx5LCB5b3UgY2FuIHBsb3QgaW5kaXZpZHVhbC1sZXZlbCByZXNpZHVhbHMgYWdhaW5zdCB0aGUgcHJlZGljdGVkIHZhbHVlczoNCg0KYGBge3IsIHdhcm5pbmc9RiwgbWVzc2FnZT1GfQ0KDQp2YWx1ZWFkZGVkMiRwcmVkIDwtIGZpdHRlZChtMSkgIyByZXRyaWV2ZSBwcmVkaWN0ZWQgdmFsdWVzIGZyb20gbW9kZWwgbTENCg0KaG9tb3NjZWRhc3RpY2l0eSA8LSBnZ3Bsb3QodmFsdWVhZGRlZDIsIGFlcyh5ID0gaW5kX3Jlc2lkLCB4ID0gcHJlZCkpICsgZ2VvbV9wb2ludCgpDQoNCmhvbW9zY2VkYXN0aWNpdHkNCg0KYGBgDQoNCiMjIyBRdWVzdGlvbnMNCg0KNC4xLiBJcyB0aGUgbm9ybWFsaXR5IGFzc3VtcHRpb24gcmVhc29uYWJsZSBhdCB0aGUgc2Nob29sIGxldmVsPw0KDQoqKkFuc3dlcjoqKiBSZXNpZHVhbHMgcmFyZWx5IGV2ZXIgbG9vayBsaWtlIGEgbmVhdCBub3JtYWwgZGlzdHJpYnV0aW9uLiBUaGUgcmlnaHQgdGFpbCBvZiB0aGUgZGlzdHJpYnV0aW9uIHNlZW1zIGxvbmdlciB0aGFuIHRoZSBsZWZ0IHRhaWwsIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUgbWF5IGJlIHZhcmlhYmxlcyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY29udHJvbCBmb3IuICANCg0KNC4yLiBJcyB0aGUgbm9ybWFsaXR5IGFzc3VtcHRpb24gcmVhc29uYWJsZSBhdCB0aGUgcHVwaWwgbGV2ZWw/DQoNCioqQW5zd2VyOioqIFRoaXMgdGltZSwgdGhlIGxlZnQgdGFpbCBvZiB0aGUgZGlzdHJpYnV0aW9uIHNlZW1zIGxvbmdlciB0aGFuIHRoZSByaWdodCB0YWlsLCBzbyBhZ2FpbiwgdGhhdCB0aGVyZSBtYXkgYmUgdmFyaWFibGVzIHRoYXQgd2Ugc3RpbGwgbmVlZCB0byBjb250cm9sIGZvci4NCg0KNC4zLiBJcyBpdCByZWFzb25hYmxlIHRvIGFzc3VtZSBob21vc2NlZGFzdGljaXR5Pw0KDQoqKkFuc3dlcjoqKiBUaGUgdmFyaWFiaWxpdHkgbG9va3MgdW5ldmVuLiBUaGUgcmlnaHQtaGFuZCBzaWRlIGlzIG5hcnJvd2VyIHRoYW4gdGhlIG1pZGRsZSBzZWN0aW9uLiBUaGlzIGlzIGV2aWRlbmNlIG9mIGhldGVyb3NjZWRhc3RpY2l0eSwgYnV0IHJlbWVtYmVyIHRoYXQgdGhpcyBwbG90IGlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXNpZHVhbHMgb2YgdGhlIHJhbmRvbSBpbnRlcmNlcHRzIG1vZGVsLiBUaGUgcmFuZG9tIHNsb3BlcyB3aWxsIHN1ZmZlciBsZXNzIGZyb20gdGhpcyBpc3N1ZSBiZWNhdXNlIGl0IGFsbG93cyBmb3IgY29ycmVsYXRpb24gYmV0d2VlbiBpbnRlcmNlcHQgYW5kIHNsb3BlLiANCg0K