日々の記録簿

日々のできごとの記録

TIMSS

RによるTIMSS2011の分析(学校・教員ファイルを使う)

投稿日:

RによるTIMSS2011の分析方法(その2)です。今回は、学校・教員ファイルを使った分析を行います。

データの読み込み

RによるTIMSSの分析を可能にするため、例によってintsvy packageを利用する。

ここでは、日本のTIMSS2011を例にとる。分析に使用するデータは、asgjpm5.sav(児童質問紙), acgjpm5.sav(学校質問紙), astjpnm5.sav(児童・教員リンクファイル), atgjpnm5.sav(教員質問紙)である。

# intsvy packageを使うと、read.spss関数は使用可能になるため、library(foreign)は不要。
library(intsvy) 
library(car) # 後の分析で使う

jp11stu <- read.spss("asgjpnm5.sav", use.value.labels=F, to.data.frame=T, use.missing=T)
jp11sch <- read.spss("acgjpnm5.sav", use.value.labels=F, to.data.frame=T, use.missing=T)
jp11lin <- read.spss("astjpnm5.sav", use.value.labels=F, to.data.frame=T, use.missing=T)
jp11tea <- read.spss("atgjpnm5.sav", use.value.labels=F, to.data.frame=T, use.missing=T)

データの結合

TIMSSは、基本的には、学校/教室という2段階抽出法を利用している。注意が必要なのは、TIMSSの教員質問紙は「調査対象となった児童・生徒に算数(数学)・理科を教えている教員」が対象になっているという点である。

第一の注意点は、TIMSSでは教員が無作為に抽出されていないという点である。教員質問紙は、常に児童・生徒を中心に解釈しなければならない。

TIMSSでは、「第4学年の教員のうち、教員経験20年以上の教員が○割である」という分析はできない。できるのは、「教員経験20年以上の教員に教えられている第4学年の児童の割合は、第4学年の児童のうち○割である」という分析である。

第二の注意点は、必ずしも児童・学級と教員が1対1で対応しているわけではないという点である。複数の教員が同一のクラスを教えている場合、1学級に複数の教員が対応するケースがある。

TIMSSでは、児童(生徒)・教員リンクファイルと、教員weightを使うことで、このことを再現している。教員質問紙を使って分析を行う場合は、必ず教員weight(TCHWGT, MATWGT, SCIWGT)のいずれかを使用しなければならない。intsvyのデフォルトは、児童・生徒weight(TOTWGT)なので、分析時には注意が必要である。

以下では、学校質問紙を使う場合のデータ結合(jp11SCH)、児童・教員・学校質問紙を使う場合のデータ結合(jp11TEA)、教員質問紙を使う場合のデータ結合(jp11TEA2)の三種類の結合方法を示す。

教員質問紙のみに興味があるというケースは少ないと思うので、現実的には、jp11SCHかjp11TEAのいずれかを使用することになるだろう。

# 児童・学校質問紙を利用する場合
jp11SCH <- merge(jp11stu, jp11sch, by=c("IDCNTRY", "IDSCHOOL", "IDGRADE","IDPOP",
                                     "IDGRADER","IDSTRATE","IDSTRATI","WGTADJ1",
                                     "WGTFAC1","DPCDATE"))

# 児童・教員・学校質問紙を利用する場合
jp11LIN <- merge(jp11stu, jp11lin, by=c("IDCNTRY", "IDBOOK","IDSCHOOL","IDCLASS","IDSTUD",
                                        "IDGRADE","IDPOP","IDGRADER","IDSTRATE","IDSTRATI",
                                        "TOTWGT","JKZONE","JKREP",
                                        "ASMMAT01","ASMMAT02","ASMMAT03","ASMMAT04","ASMMAT05",
                                        "ASSSCI01","ASSSCI02","ASSSCI03","ASSSCI04","ASSSCI05",
                                        "ASMDAT01","ASMDAT02","ASMDAT03","ASMDAT04","ASMDAT05",
                                        "ASMGEO01","ASMGEO02","ASMGEO03","ASMGEO04","ASMGEO05",
                                        "ASMNUM01","ASMNUM02","ASMNUM03","ASMNUM04","ASMNUM05",
                                        "ASSEAR01","ASSEAR02","ASSEAR03","ASSEAR04","ASSEAR05",
                                        "ASSLIF01","ASSLIF02","ASSLIF03","ASSLIF04","ASSLIF05",
                                        "ASSPHY01","ASSPHY02","ASSPHY03","ASSPHY04","ASSPHY05",
                                        "ASMKNO01","ASMKNO02","ASMKNO03","ASMKNO04","ASMKNO05",
                                        "ASMAPP01","ASMAPP02","ASMAPP03","ASMAPP04","ASMAPP05",
                                        "ASMREA01","ASMREA02","ASMREA03","ASMREA04","ASMREA05",
                                        "ASSKNO01","ASSKNO02","ASSKNO03","ASSKNO04","ASSKNO05",
                                        "ASSAPP01","ASSAPP02","ASSAPP03","ASSAPP04","ASSAPP05",
                                        "ASSREA01","ASSREA02","ASSREA03","ASSREA04","ASSREA05",
                                        "ASMIBM01","ASMIBM02","ASMIBM03","ASMIBM04","ASMIBM05",
                                        "ASSIBM01","ASSIBM02","ASSIBM03","ASSIBM04","ASSIBM05",
                                        "DPCDATE" ))
jp11LIN2 <- merge(jp11LIN, jp11tea, by=c("IDCNTRY","IDSCHOOL","ITCOURSE","IDTEACH","IDTEALIN",
                                         "IDLINK","IDPOP","IDGRADE","IDGRADER","IDSUBJ",
                                         "DPCDATE"))
jp11TEA <- merge(jp11LIN2, jp11sch, by=c("IDCNTRY", "IDSCHOOL", "IDGRADE","IDPOP",
                                         "IDGRADER","IDSTRATE","IDSTRATI","WGTADJ1",
                                         "WGTFAC1","DPCDATE"))

# 教員質問紙を利用する場合
jp11TEA2 <- merge(jp11lin, jp11tea, by=c("IDCNTRY","IDSCHOOL","ITCOURSE","IDTEACH","IDTEALIN",
                                         "IDLINK","IDPOP","IDGRADE","IDGRADER","IDSUBJ",
                                         "DPCDATE"))

# 不要になったデータフレームを除去
rm(jp11stu, jp11sch, jp11lin, jp11tea, jp11LIN, jp11LIN2)

intsvyによる分析

学校質問紙を利用する

学校質問紙を利用する場合は、jp11SCHを使って分析すると良い。weightはデフォルトのまま(TOTWGT)。

ここでは、TIMSS2011のMathematics Results(pdf)のうち、表5.1 学校の場所と成績の関連(p.208)の数値を再現することを目指す。

jp11SCH$location <- recode(jp11SCH$ACBG05A, "1:2=1; 3:4=2; 5:6=3")
timss.table(variable="location", data=jp11SCH)
timss.mean.pv(pvlabel="ASMMAT", by="location", data=jp11SCH)

教員質問紙を利用する

教員質問紙を利用する場合は、jp11TEA, jp11TEA2のいずれかを使う。weightは分析する教科に合わせて設定しなければならない。算数・数学ならMATWGT、理科ならSCIWGTである。

ここでは、TIMSS2011のMathematics Results(pdf)のうち、表7.5 教員経験年数と成績の関連(p.294)の数値を再現することを目指す。

# weightの使い方。算数の得点(ASMMAT)を従属変数とする場合
timss.mean.pv(pvlabel="ASMMAT", data=jp11SCH) # jp11SCHを使うとき
timss.mean.pv(pvlabel="ASMMAT", data=jp11TEA, weight="MATWGT") # jp11TEAを使うとき
timss.mean.pv(pvlabel="ASMMAT", data=jp11TEA) # weightを間違えると推定値が狂う

# 表7.5の再現
jp11TEA$career <- recode(jp11TEA$ATBG01, "1:4=1; 5:9=2; 10:19=3; 20:50=4")
timss.table(variable="career", data=jp11TEA, weight="MATWGT")
timss.mean.pv(pvlabel="ASMMAT", by="career", data=jp11TEA, weight="MATWGT")

# jp11TEA2でもOK
jp11TEA2$career <- recode(jp11TEA2$ATBG01, "1:4=1; 5:9=2; 10:19=3; 20:50=4")
timss.table(variable="career", data=jp11TEA2, weight="MATWGT")
timss.mean.pv(pvlabel="ASMMAT", by="career", data=jp11TEA2, weight="MATWGT")

いずれの結果も報告書のものと一致している。

スポンサーリンク

スポンサーリンク

-TIMSS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

TIMSSで教員データを使うとサンプルサイズが増えるのはなぜなのか?

11月ころにコメントで質問をいただいていたようで、その解説です。これだけ間が空くと、質問者は既に解決済みかもしれませんが・・・。 TIMSSで教員データを使うとサンプルサイズが増える?! TIMSSで …

RによるTIMSS2011の分析(survey packageを使う)

RでTIMSSを分析するときは、intsvy packageが便利です。ただ、簡単すぎて内部で何をやっているのかわからない/可能な分析方法が少なく応用が効かないというデメリットもあります。 そこで今回 …

TIMSS2015の分析方法とintsvyの使い方

RでPISAやTIMSSを分析するためのintsvy packageの使い方が大きく変わっていたので、その紹介。本当はだいぶ前に変わっていたのだと思うが、気づいていなかった・・・。 データの読込 ここ …

TIMSS報告書で標準誤差はどのように計算されているのか?

TIMSS報告書の標準誤差(PVsを使った場合)は、正規の式による計算ではなく、ショートカット計算になっています。 TIMSSを使った分析をしていて、報告書と数値が合わない・・・となった方の参考になる …

TIMSS2011のTechnical Report

TIMSS2011のTechnical Reportに関するまとめです。量が多いので、要点のみ箇条書きしています。 全文は、Methods and Procedures in TIMSS and PI …