日々の記録簿

日々のできごとの記録

TIMSS

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

投稿日:

TIMSS報告書の標準誤差(PVsを使った場合)は、正規の式による計算ではなく、ショートカット計算になっています。

TIMSSを使った分析をしていて、報告書と数値が合わない・・・となった方の参考になるかもしれません。

TIMSS報告書の標準誤差の計算

PVsを使うとき、最終的な分散は、下記の式で計算される。

  \sigma_{(error)} ^ 2 = \sigma_{\hat{\mu}} ^ 2 + (1.2 \sigma _{(test)} ^ 2)

最終的な分散は、σ(μ)とσ(test)の和である。ここでσ(μ)とσ(test)は、それぞれ次のようになる。

  \sigma _{(test)} ^ 2  = \frac{1}{4}\sum ^ 5_{i=1} (\hat{\mu}_i - \hat{\mu}) ^ 2
まず、σ(test)は、PV1からPV5の推定値の不偏分散である。

Rで計算すると以下のようになる。ここでは、TIMSS2011の日本のデータを用い、小4の科学得点(ASSSCI)の平均値を計算する。

library(foreign)
jp11 <- read.spss("asgjpnm5.sav", use.value.labels=F, to.data.frame=T, use.missings=F)

pv <- paste("ASSSCI0", 1:5, sep="")
se <- sapply(pv, function(i){weighted.mean(jp11[[i]], jp11$TOTWGT)})

var(se) # σ(test)

だいたい、1.35程度の数値になる。続いて、σ(μ)を考える。

  \sigma _{\hat{\mu}} ^ 2 = \frac{1}{5}(\sigma_{(\hat{\mu}_1)} ^ 2 + \sigma_{(\hat{\mu}_2)} ^ 2 + \sigma_{(\hat{\mu}_3)} ^ 2 + \sigma_{(\hat{\mu}_4)} ^ 2 +\sigma_{(\hat{\mu}_5)} ^ 2)
σ(μ)は、PV1からPV5の分散の平均である。

Rで計算すると以下のようになる。

# Replicate Weightを作成し、75回分の平均を計算する関数を作成
jk <- function(x){sapply(1:75, function(i){
             weighted.mean(x,
                           ifelse(jp11[["JKZONE"]]==i,
                                  2 * jp11[["TOTWGT"]] * jp11[["JKREP"]],
                                  jp11[["TOTWGT"]])
                           )
       }
       )
}

rw <- sapply(pv, function(i){jk(jp11[[i]])}) # 75×5回分の計算

v <- mean(sapply(1:5, function(i){sum((rw[,i] - se[i]) ^ 2)})) # σ(μ)

sqrt(v + 1.2 * var(se)) # 正式な値

ところが、この計算では、TIMSSの報告書と値が合わない。

TIMSS報告書では、ショートカットが使用されており、σ(μ)の代用として、PV1のみが使用されているのである。

Rのコードを書くと、次のようになっている。

sum((rw[,1] - se[1]) ^ 2) # これがσ(μ)の代用にされている
sqrt(sum((rw[,1] - se[1]) ^ 2) + 1.2 * var(se)) # 最終的な標準誤差

このショートカット計算は、PISA Data Analysis Manualのp.129にも記載されている。

おそらく、TIMSSが開始された1995年はコンピュータの性能が低く、Replicate Weightsを使ったり、PVsを使ったりすると、計算に時間がかかりすぎるためにショートカットが利用されていたのだろう。

大抵の場合、ショートカットで計算した値は、PV1からPV5を使用したときの標準誤差と、ほとんど変わらないため、大きな問題にはならない。ただ、報告書の値を再現しようとしたときに、このことに気づかないと延々と悩むことになる。

ちなみに、intsvy packageを使った場合は、ショートカット計算の値が適用されるので、報告書の値と一致するはずである。

スポンサーリンク

スポンサーリンク

-TIMSS

執筆者:


comment

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

関連記事

RによるTIMSS2011の分析

RによるTIMSS2011の分析方法です。 データの読み込み SPSSデータを読み込むために、foreign packageを読み込みます。 また、RによるTIMSSの分析を可能にするため、intsv …

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

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

TIMSS2011から公立中学校と国・私立中学校の成績差を見てみる

タイトルのとおりですが、TIMSS2011を利用して、国・私立中学校と公立中学校の成績差を見てみます。 とりあえず、平均点の差を検討する TIMSS2011の学校質問紙や生徒質問紙では、生徒が通ってい …

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

RによるTIMSS2011の分析方法(その2)です。今回は、学校・教員ファイルを使った分析を行います。 データの読み込み RによるTIMSSの分析を可能にするため、例によってintsvy packag …

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

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