日々の記録簿

日々のできごとの記録

PISA

RによるPISA Data Analysis Manualの再現(第9章: Proficiency Levels/習熟度の計算)

投稿日:

第7章(標準誤差の推定)第8章(PVs)に引き続き、PISA Data Analysis Manual SPSS 2nd Editionの分析を、Rで再現してみます。

今回は、習熟度(Proficiency Levels)に関わる第9章を扱います。

習熟度

PISAの読解・数学・科学の成績は、OECD参加国の平均を500、標準偏差を100とする数値になっている(※注 これは、起点となる2000年読解・2003年数学・2006年科学のスコアの算出方法のことである。以降のPISAの点数は、起点となるPISAのスコアをもとに調整されているため、OECD平均500・標準偏差100にはなっていない)。

このスコアをよりわかりやすい形で示すため、PISAでは習熟度(Proficiency Levels)を定義している。この値は、PVsから得ることができる。

具体的に、PISA2006の科学リテラシーを考えてみよう。習熟度の分割点は、334.94, 409.54, 484.14, 558.73, 633.33, 707.93の6つである。これを5つのPVsのそれぞれに適用し、第7章で示した方法で合成したものが習熟度となる。

具体的な方法は以下の通り。ここでは、PISA2006のドイツ(DEU)の科学リテラシーをもとに習熟度を計算することを考える。

deu2006 <- read.csv("2006DEU.csv")
library(intsvy)

# cut関数でPV1からPV5を習熟度に変換する
deu2006$PS1 <- cut(deu2006$PV1SCIE, breaks=c(0, 334.94, 409.54, 484.14, 558.73, 633.33, 707.93, 9999), labels=c("Level 0", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6"))
deu2006$PS2 <- cut(deu2006$PV2SCIE, breaks=c(0, 334.94, 409.54, 484.14, 558.73, 633.33, 707.93, 9999), labels=c("Level 0", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6"))
deu2006$PS3 <- cut(deu2006$PV3SCIE, breaks=c(0, 334.94, 409.54, 484.14, 558.73, 633.33, 707.93, 9999), labels=c("Level 0", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6"))
deu2006$PS4 <- cut(deu2006$PV4SCIE, breaks=c(0, 334.94, 409.54, 484.14, 558.73, 633.33, 707.93, 9999), labels=c("Level 0", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6"))
deu2006$PS5 <- cut(deu2006$PV5SCIE, breaks=c(0, 334.94, 409.54, 484.14, 558.73, 633.33, 707.93, 9999), labels=c("Level 0", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6"))

# pisa.table関数を使う
pv1 <- pisa.table("PS1", data=deu2006)
pv2 <- pisa.table("PS2", data=deu2006)
pv3 <- pisa.table("PS3", data=deu2006)
pv4 <- pisa.table("PS4", data=deu2006)
pv5 <- pisa.table("PS5", data=deu2006)

# 最終的な推定値は、PV1からPV5の推定値の平均になる。
m <- (pv1[,3]+pv2[,3]+pv3[,3]+pv4[,3]+pv5[,3]) / 5

# 標準誤差の計算。まず、PV1からPV5の標準誤差の2乗の平均を計算する。
u <- (pv1[,4]^2 + pv2[,4]^2 + pv3[,4]^2 + pv4[,4]^2 + pv5[,4]^2) / 5

# imputation varianceの計算。
t <- ((pv1[,3]-m)^2 + (pv2[,3]-m)^2 + (pv3[,3]-m)^2 + (pv4[,3]-m)^2 + (pv5[,3]-m)^2) / 4

# 最終的な分散は、u + 1.2 * t になる。最終的な標準誤差は、sqrt(e)
e <- u + 1.2 * t

# 推定値の表示
ans <- round(cbind(m, sqrt(e)), 2)
colnames(ans) <- c("Percentage", "S.E")
rownames(ans) <- c("Level 1 未満", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6")
ans

これまでと同じく、intsvy package内にある、pisa.ben.pvを使えば1行で書ける。

pisa.ben.pv(pvlabel="SCIE", cutoff=c(334.94, 409.54, 484.14, 558.73, 633.33, 707.93), data=deu2006)

# 男女(ST04Q01)別。Table 9.5に対応する
pisa.ben.pv(pvlabel="SCIE", cutoff=c(334.94, 409.54, 484.14, 558.73, 633.33, 707.93), by="ST04Q01", data=deu2006)

なお、読解・数学・科学の各リテラシー領域における、習熟度の分割点は、以下のようになる。

# 例として2012年の日本(2012JPN.csv)を使うが、他のサイクル・他の国でも構わない
jpn2012 <- read.csv("2012JPN.csv")
library(intsvy)

# 読解(2000〜2006の規準)
pisa.ben.pv(pvlabel="READ", cutoff=c(334.75, 407.47, 480.18, 552.89, 625.61), data=jpn2012)

# 読解(2009以降の規準)
pisa.ben.pv(pvlabel="READ", cutoff=c(262.04, 334.75, 407.47, 480.18, 552.89, 625.61, 698.32), data=jpn2012)

# 数学
pisa.ben.pv(pvlabel="MATH", cutoff=c(357.77, 420.07, 482.38, 544.68, 606.99, 669.30), data=jpn2012)

# 科学
pisa.ben.pv(pvlabel="SCIE", cutoff=c(334.94, 409.54, 484.14, 558.73, 633.33, 707.93), data=jpn2012)

読解(Reading Literacy)は、PISA2000から2006までは分割点が5つであり、習熟度はレベル1未満からレベル5までの6段階だった。

それが、PISA2009でレベル6が追加され、さらにレベル1がレベル1a・レベル1bに分割されたことにより、レベル1b未満からレベル6までの8段階になっている。

数学と科学の習熟度はレベル1未満からレベル6までの7段階である。

スポンサーリンク

スポンサーリンク

-PISA

執筆者:


comment

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

関連記事

RによるPISAの分析(PISAデータをCSVに変換する)

PISAデータをcsvに変換する作業が面倒になってきたので、以前紹介していたpythonスクリプトを書き直し、全自動で行えるようにしました。 ここからpisacsv.zipをダウンロードし、展開してく …

SPSSとSASでsample weightsの扱いが違う

PISA Data Analysis Manual を読んでいたら興味深い記述がありました。 However, even with an equi-probabilistic sample, stat …

RによるPISA Data Analysis Manualの再現(第8章: PVsを使う)

前回に引き続き、PISA Data Analysis Manual SPSS 2nd Editionの分析を、Rで再現してみます。 今回は、PVs(Plausible Values: 推算値法)に関わ …

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

Rのintsvy packageを使ってPISA2015を分析する方法です。 データの準備 まず、OECDのホームページからPISA2015のデータをダウンロードする。PISA2015からSPSSのデ …

RによるPISAの分析(データの準備:続報)

三重大の奥村晴彦氏のホームページにて、RでPISAデータを読み込む方法(PISAデータを読む)が公開されていました。 こちらは、Rubyで読み込んでいるようです(ちなみに私はRubyはサッパリです・・ …