RによるTALIS2013の分析方法です。
データの読み込み
RによるTIMSSの分析を可能にするため、survey packageを利用する。また、途中でrecode関数を使うので、car packageも読み込む。
TALIS2013では、すべての参加国のデータをまとめてダウンロードできる。うち今回は、TALISが主たる調査対象としている前期中等教育(ISCED level 2)のデータファイル(ファイル名がBで始まる)を使う。
# 前準備 library(survey) library(car) # データの読み込み talis_t <- read.csv("BTGINTT2.csv") # 教員ファイル talis_p <- read.csv("BCGINTT2.csv") # 校長ファイル talis <- merge(talis_t, talis_p ,by=c("IDSCHOOL", "CNTRY", "IDCNTRY", "IDCNTRYR", "IDCNTPOP", "PISASCHOOLID")) # データを結合 # 分析で使用する変数の加工。欠損値の指定等を行う talis$TT2G33F[talis$TT2G33F >= 7] <- NA talis$TT2G33F <- factor(talis$TT2G33F) # 質的変数に設定。忘れると出力が変になる talis$TJOBSATS[talis$TJOBSATS==9998] <- NA talis$TPDPEDS[talis$TPDPEDS==9998] <- NA talis$TSELEFFS[talis$TSELEFFS==9998] <- NA talis$PSCMUTRS[talis$PSCMUTRS==9998] <- NA talis$men <- recode(talis$TT2G01, "2=0;1=1") # 教員の男性ダミー talis$year <- cut(talis$TT2G02, breaks=c(0,24,29,39,49,59,100), labels=c("~25","25~29","30~39","40~49","50~59","60~")) # 教員の年齢区分 # 国別ファイルの作成 aus <- subset(talis, talis$CNTRY=="AUS") # オーストラリア fin <- subset(talis, talis$CNTRY=="FIN") # フィンランド mex <- subset(talis, talis$CNTRY=="MEX") # メキシコ prt <- subset(talis, talis$CNTRY=="PRT") # ポーランド sgp <- subset(talis, talis$CNTRY=="SGP") # シンガポール jpn <- subset(talis, talis$CNTRY=="JPN") # 日本(参考まで。今回は使わない)
surveyによる分析
svrepdesignによる調査デザインの指定
surveyパッケージを使うときは、まずweight等をどう処理するかという調査デザインを設定しておく必要がある。
# 調査デザインの入力 svy.aus <- svrepdesign( data = aus, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) svy.fin <- svrepdesign( data = fin, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) svy.mex <- svrepdesign( data = mex, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) svy.prt <- svrepdesign( data = prt, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) svy.sgp <- svrepdesign( data = sgp, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) svy.jpn <- svrepdesign( data = jpn, repweights = "TRWGT[1-9]", weights = ~TCHWGT, combined.weights = T, type = "Fay", rho = (0.5), mse = TRUE, scale = 1, rscales = 1 ) # 日本については参考までに掲載。
度数分布
以下では、TALIS 2013のUser Guideにある分析結果のいくつかを再現する。User GuideはSPSSによる出力が示されているが、Rでも同じ結果を出力することが可能である。
# 度数分布およびSE(Figure 4.8に該当) table(aus$TT2G33F) svytotal(~TT2G33F ,svy.aus, na.rm = T) round(ftable(svymean(~TT2G33F ,svy.aus, na.rm = T)) * 100, 2)
グラフの描画
# 図(Figure 4.9に該当) a <- svymean(~TT2G33F ,svy.aus, na.rm = T) b <- svymean(~TT2G33F ,svy.fin, na.rm = T) c <- svymean(~TT2G33F ,svy.mex, na.rm = T) d <- svymean(~TT2G33F ,svy.prt, na.rm = T) e <- svymean(~TT2G33F ,svy.sgp, na.rm = T) fig1 <- cbind(rev(a), rev(b), rev(c), rev(d), rev(e))* 100 # User Guideと見た目を揃えるため逆にする。 col <- c("red","yellow","violet","bisque", "green", "blue") # 色指定はテキトー。 name <- c("AUS", "FIN", "MEX", "PRT", "SGP") text <- c("once a week or more","1-3 times a month","5-10 times a year","2-4 times a year","once year or less","Never") barplot(fig1, names.arg=name, col=col, legend=text, args.legend=list(x=ncol(fig1)+6 , y=100), xlim=c(0,ncol(fig1)+6))
回帰分析
# 回帰分析(Figure 4.16に該当) reg1 <- summary(svyglm(TJOBSATS ~ TPDPEDS + TSELEFFS + PSCMUTRS, design = svy.aus)) round(reg1$coefficient, 2) # 係数を出力
TALISに関する日本語書籍
例によって、本家報告書の要約なので、ほとんど必要ない。ただ、巻末に質問紙の日本語訳があるので・・・。