library(lme4) library(lattice) dat <- read.table("data/hsbdataset.txt", header = TRUE) # Model 1 - null model with random intercepts m1 <- lmer(mathach ~ 1 + (1 | school), dat) # Plot with subsample of schools set.seed(1427) subdat <- subset(dat, dat$school %in% sample(unique(dat$school), size = 9)) pdf("figures/hsb_model1.pdf", height = 5, width = 5) xyplot(mathach + predict(m1, newdata = subdat) + predict(m1, re.form = NA, newdata = subdat) ~ cses | factor(school), subdat, pch = 16, cex = 0.4, type = c("p", "r", "r"), lwd = 2, xlab = "socioeconomic status", ylab = "math performance", distribute.type = TRUE, par.strip.text = list(cex = 0.8), col = c("gray80", "#91C86E", "#78004B")) dev.off() # Model 2 - random intercept model m2 <- lmer(mathach ~ cses + (1 | school), dat) xyplot(mathach + predict(m2) + predict(m2, re.form = NA) ~ cses | factor(school), dat, type = c("p", "r", "r"), distribute.type = TRUE, col = c("#91C86E", "#91C86E", "#78004B")) pdf("figures/hsb_model2.pdf", height = 5, width = 5) xyplot(mathach + predict(m2, newdata = subdat) + predict(m2, re.form = NA, newdata = subdat) ~ cses | factor(school), subdat, pch = 16, cex = 0.4, type = c("p", "r", "r"), lwd = 2, xlab = "socioeconomic status", ylab = "math performance", distribute.type = TRUE, par.strip.text = list(cex = 0.8), col = c("gray80", "#91C86E", "#78004B")) dev.off() # Model 3 - random slope model m3 <- lmer(mathach ~ cses + (cses | school), dat) xyplot(mathach + predict(m3) + predict(m3, re.form = NA) ~ cses | factor(school), dat, type = c("p", "r", "r"), distribute.type = TRUE, col = c("#91C86E", "#91C86E", "#78004B")) pdf("figures/hsb_model3.pdf", height = 5, width = 5) xyplot(mathach + predict(m3, newdata = subdat) + predict(m3, re.form = NA, newdata = subdat) ~ cses | factor(school), subdat, pch = 16, cex = 0.4, type = c("p", "r", "r"), lwd = 2, xlab = "socioeconomic status", ylab = "math performance", distribute.type = TRUE, par.strip.text = list(cex = 0.8), col = c("gray80", "#91C86E", "#78004B")) dev.off()