TIMSS2011のデータで遊んでみる(1)


このお遊びの目的など

  • 学級規模や学年規模が教師や児童生徒に与える影響を検討する研究の練習をする。
  • さすがに私が集めたデータは公開したり共有したりは出来ないので,TIMSSの公開データを使う。
  • 学級規模による違いが出やすい小4を対象学年にする。
  • 学級規模と学習集団規模が一致するように理科を分析対象教科とする。

データの種類

データの種類 ファイル名 コードブック
学校質問紙 acgjpnm5 ACGTMSM5
算数理科調査 asajpnm5 ASATMSM5
児童質問紙 asgjpnm5 ASGTMSM5
家庭背景 ASHTMSM5
国内信頼性 asrjpnm5 ASRTMSM5
教師-児童リンクファイル astjpnm5 ASTTMSM5
教師質問紙 atgjpnm5 ATGTMSM5

データを取り込む

ここでは学校質問紙,算数理科調査,児童質問紙,教師-児童リンクファイル,教師質問紙のデータを取り込む。

acgjpnm5 <- read.csv("acgjpnm5.csv")
asajpnm5 <- read.csv("asajpnm5.csv")
asgjpnm5 <- read.csv("asgjpnm5.csv")
astjpnm5 <- read.csv("astjpnm5.csv")
atgjpnm5 <- read.csv("atgjpnm5.csv")

下ごしらえ

  • 公立学校だけを取り出す
# astjpnm5のデータを使う 
# 国私立学校はIDSCHOOLが1000以上のため
ko <- subset(astjpnm5, IDSCHOOL < 1000)
  • 対象を教員一人で教えている(学級規模と学習集団規模が一致)学校を特定する
# 行数(児童数ではない)は以下の通り
nrow(ko)
## [1] 6685
# この中のSCIWGT (WEIGHT FOR SCIENCE TEACHER DATA)とTOTWGT (*STUDENT WEIGHT*)が一致するものが学級規模と学習集団規模が一致するケース
# 仮に1学級2展開の少人数指導を行っている場合にはSCIWGT*2 = TOTWGTとなる

solo <- subset(ko, SCIWGT==TOTWGT)

# 学校が減っていることが分かる
nrow(solo)
## [1] 4211
  • 児童の重複を確認する
# table関数で簡単にデータを作る
con.mul <- table(solo$IDSTUD)
write.csv(con.mul,"con_mul.csv")
con.mul <- read.csv("con_mul.csv")
# IDSTUDに重複がないか
summary(con.mul$Freq)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1       1       1       1       1       1
  • 調査対象校の’IDSCHOOL’,調査対象教員の’IDTEACH’,調査対象児童の’IDSTUD’だけを並べたデータを作っておく
school_ <- solo[c("IDSCHOOL")]
teacher_ <- solo[c("IDTEACH")]
student <-  solo[c("IDSTUD")]
summary(school_)
##     IDSCHOOL     
##  Min.   :  1.00  
##  1st Qu.: 38.00  
##  Median : 73.00  
##  Mean   : 73.02  
##  3rd Qu.:106.00  
##  Max.   :150.00
summary(teacher_)
##     IDTEACH     
##  Min.   :  101  
##  1st Qu.: 3801  
##  Median : 7301  
##  Mean   : 7303  
##  3rd Qu.:10601  
##  Max.   :15001
summary(student)
##      IDSTUD       
##  Min.   :  10401  
##  1st Qu.: 380204  
##  Median : 730417  
##  Mean   : 730384  
##  3rd Qu.:1060116  
##  Max.   :1500131
## 大丈夫そうなのでschool_とteacher_については重複を取り除いてcsvで保存
write.csv(table(school_),"school_.csv")
school <- read.csv("school_.csv")
school <- school[c("school_")]
colnames(school) <- c("IDSCHOOL")
write.csv(school,"school.csv")

write.csv(table(teacher_),"teacher_.csv")
teacher <- read.csv("teacher_.csv")
teacher <- teacher[c("teacher_")]
colnames(teacher) <- c("IDTEACH")
write.csv(teacher,"teacher.csv")

write.csv(student,"student.csv")

余計なファイルを削除しておく

# ```{r eval=TRUE, error=FALSE, message=FALSE, results='hide'}
file.remove("con_mul.csv")
file.remove("school_.csv")
file.remove("teacher_.csv")

  • ここまでやっておくと,これらのデータを使って他のデータをマージする作業をして,学級規模と学習集団規模が一致している学校や学級(担任)を取り出した学力や教師質問紙,学校質問紙の分析が出来る。
  • 以降は次回に。