0917 R for Multilevel Analysis Exercises-1

Huang En-Li

# data management and graphics package
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6      ✔ purrr   0.3.4 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.1 
## ✔ readr   2.1.2      ✔ forcats 0.5.2 
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(mlmRev)
## 載入需要的套件:lme4
## 載入需要的套件:Matrix
## 
## 載入套件:'Matrix'
## 
## 下列物件被遮斷自 'package:tidyr':
## 
##     expand, pack, unpack

input data

data(Gcsemv)
str(Gcsemv)
## 'data.frame':    1905 obs. of  5 variables:
##  $ school : Factor w/ 73 levels "20920","22520",..: 1 1 1 1 1 1 1 1 1 2 ...
##  $ student: Factor w/ 649 levels "1","2","3","4",..: 16 25 27 31 42 62 101 113 146 1 ...
##  $ gender : Factor w/ 2 levels "F","M": 2 1 1 1 2 1 1 2 2 1 ...
##  $ written: num  23 NA 39 36 16 36 49 25 NA 48 ...
##  $ course : num  NA 71.2 76.8 87.9 44.4 NA 89.8 17.5 32.4 84.2 ...

remove missing values

Gcsemv_r<-na.omit(Gcsemv)
str(Gcsemv_r)
## 'data.frame':    1523 obs. of  5 variables:
##  $ school : Factor w/ 73 levels "20920","22520",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ student: Factor w/ 649 levels "1","2","3","4",..: 27 31 42 101 113 1 7 9 15 16 ...
##  $ gender : Factor w/ 2 levels "F","M": 1 1 2 1 2 1 2 1 1 2 ...
##  $ written: num  39 36 16 49 25 48 46 28 43 29 ...
##  $ course : num  76.8 87.9 44.4 89.8 17.5 84.2 66.6 47.2 80.5 57.4 ...
##  - attr(*, "na.action")= 'omit' Named int [1:382] 1 2 6 9 29 38 39 47 55 60 ...
##   ..- attr(*, "names")= chr [1:382] "1" "2" "6" "9" ...

compute averages by school

Gcsemv2 <- Gcsemv_r %>%
        group_by(school) %>%
        summarize(ave_written = mean(written, na.rm=TRUE),
                  ave_course = mean(course, na.rm=TRUE))
str(Gcsemv2)
## tibble [73 × 3] (S3: tbl_df/tbl/data.frame)
##  $ school     : Factor w/ 73 levels "20920","22520",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ ave_written: num [1:73] 33 35.4 32 53.2 58.7 ...
##  $ ave_course : num [1:73] 63.3 57.5 81.4 72.9 72.2 ...

superimpose two plots

ggplot(data=Gcsemv_r, aes(x=written, y=course)) +
 geom_point(color="skyblue") +
 stat_smooth(method="lm", formula=y ~ x, se=F, col="skyblue") +
 geom_point(data=Gcsemv2, aes(ave_written, ave_course), color="steelblue") +
 stat_smooth(data=Gcsemv2, aes(ave_written, ave_course),
             method="lm", formula= y ~ x, se=F, color="steelblue") +
 labs(x="written score", 
      y="course score") +
 theme_bw()