PISA 2015データを読む(未完)

これはPISAデータを読むのPISA 2015年版(2016年12月結果公開)である。生徒のアンケート個票をRで読んで分析するのが目的である。

取得から読み込みまで

OECDPISA (Programme for International Student Assessment) の2015年版データは PISA 2015 Database から得られる。例えば SPSS Data Files の Student questionnaire data file (407MB, ファイル名 PUF_SPSS_COMBINED_CMB_STU_QQQ.zip) をダウンロードして展開すると CY6_MS_CMB_STU_QQQ.sav という1.5Gバイトほどのファイルになる。これをRで読むには次のようにする:

# install.packages("foreign")
library(foreign)
data = read.spss("CY6_MS_CMB_STU_QQQ.sav", to.data.frame=TRUE)
object.size(data)  # 2.5Gバイト

2.5Gバイトという巨大なメモリを占有する。これを

data = read.spss("CY6_MS_CMB_STU_QQQ.sav", to.data.frame=TRUE, use.value.labels=FALSE)
object.size(data)  # 3.8Gバイト

とするとさらに巨大なメモリを要する。

さて,最近は Hadley Wickham 作のパッケージ群を使うのが流行りなので,haven パッケージを試してみよう。これは zip で固めたままでも読むことができるが,以下では展開したものを読み込んでいる。

library(haven)
data = read_sav("CY6_MS_CMB_STU_QQQ.sav")
object.size(data)  # 3.8Gバイト

これもかなりメモリを占有する。

以下では,この read_sav() で読んだデータを分析する。

念のためCSV化したもの CY6_MS_CMB_STU_QQQ.csv も置いておく。

回答の分析

ファイルのデータ構造は上記ページ「Codebooks for the main files」からExcel形式でダウンロードできる。主なメタデータは次の通りである:

質問の内容は「The questionnaires below are available in Annex A of PISA 2015 Assessment and Analytical Framework (OECD, 2015)」からリンクされている。例えば ST011「Which of the following are in your home?」の中の ST011Q04TA「A computer you can use for school work」では 1(Yes),2(No)が回答である。日本の生徒についての内訳を見るには

table(data$ST011Q04TA[data$CNT=="JPN"])

   1    2 
4095 2477 

とする。国とのクロス集計をしてみよう:

x = table(data$CNT, data$ST011Q04TA)
head(x)
     
          1     2
  ALB     0     0
  ARE 12386  1303
  AUS 13019   978
  AUT  6734   222
  BEL  9084   418
  BGR  5473   219

手抜き棒グラフにしてみよう:

barplot(sort(x[,1] / rowSums(x[,1:2])), horiz=TRUE, las=1)

日本は下から7番目である。

(未完)

参考リンク