テストの成績を分析するうえで、主成分分析は重要な手法である。
統計科学研究所 様 「主成分分析」 https://statistics.co.jp/reference/software_R/statR_9_principal.pdf
に分かりやすい解説がある。
ここでは、Rの説明に絞ってさらに詳しく解説する。
相関行列から主成分分析
中学2年生の成績データ 標本数 : 166
変数の数 : 科目数=9 国語、社会、数学、理科、音楽、英語、体育、技家、英語
主成分分析を行う関数は、prcomp である。
> result <- prcomp(seiseki, scale=T) #scale=Tは相関行列から分析
> summary(result)
PC1 | PC2 | PC3 | PC4 | PC5 | PC6 | PC7 | PC8 | PC9 | |
Standard deviation | 2.4508 | 1.0479 | 0.7006 | 0.63795 | 0.54796 | 0.47059 | 0.42754 | 0.41376 | 0.34909 |
Proportion of Variance | 0.6674 | 0.122 | 0.05454 | 0.04522 | 0.03336 | 0.02461 | 0.02031 | 0.01902 | 0.01354 |
Cumulative Proportion | 0.6674 | 0.7894 | 0.84394 | 0.88916 | 0.92252 | 0.94713 | 0.96744 | 0.98646 | 1 |
Variance | 6.006 | 1.098 | 0.491 | 0.407 | 0.3 | 0.221 | 0.183 | 0.171 | 0.122 |
Standard deviation は主成分の標準偏差、平方すれば分散になり固有値に一致。
Proportion of Variance は寄与率、Cumulative Proportion は累積寄与率
> result$value 固有値
[1] | 6.01 | 1.1 | 0.49 | 0.41 | 0.3 | 0.22 | 0.18 | 0.17 | 0.12 |
result$rotation 固有ベクトル(主成分軸の係数)
PC1 | PC2 | PC3 | PC4 | PC5 | PC6 | PC7 | PC8 | PC9 | |
kokugo | 0.363 | -0.149 | 0.074 | -0.236 | 0.301 | -0.494 | 0.62 | 0.11 | -0.231 |
shakai | 0.369 | 0.147 | -0.062 | -0.107 | 0.087 | -0.573 | -0.517 | -0.235 | 0.412 |
sugaku | 0.357 | 0.181 | -0.4 | 0.029 | 0.061 | 0.408 | 0.409 | -0.446 | 0.377 |
rika | 0.367 | 0.251 | 0.008 | 0.067 | -0.262 | 0.039 | -0.177 | -0.392 | -0.736 |
ongaku | 0.354 | -0.01 | -0.2 | 0.357 | -0.642 | -0.132 | 0.119 | 0.495 | 0.133 |
bijutu | 0.313 | -0.312 | 0.264 | 0.712 | 0.44 | 0.136 | -0.125 | 0.002 | -0.003 |
taiiku | 0.139 | -0.859 | -0.08 | -0.284 | -0.269 | 0.107 | -0.128 | -0.235 | 0.007 |
gika | 0.317 | 0.149 | 0.784 | -0.293 | -0.19 | 0.287 | 0.042 | 0.062 | 0.231 |
eigo | 0.357 | 0.047 | -0.317 | -0.355 | 0.338 | 0.361 | -0.32 | 0.525 | -0.146 |
result$rotation は、固有ベクトルを列ベクトルとする直交行列の成分である。
第1列ベクトルは、第1主成分を求める係数である。
PC1=0.363(国語)+0.369(社会)+ ‥ +0.357(英語)
今、相関行列から主成分分析を行っているので、標準化した得点を代入しなければならない。
Rでは、関数scaleを用いて標準化した得点を求めることができる。
1番目の標準化得点は次のとおり。
> scale(seiseki)[1,] 標準化した得点
番号 | kokugo | shakai | sugaku | rika | ongaku | bijutu | taiiku | gika | eigo |
1 | -1.023 | 0.158 | 0.222 | 0.613 | 0.772 | 0.206 | -0.78 | -0.147 | -0.647 |
> result$rotation[,1] 第1主成分を求める係数
0.363 | 0.369 | 0.357 | 0.367 | 0.354 | 0.313 | 0.139 | 0.317 | 0.357 |
PC1=0.363(-1.023)+0.369(0.158)+ ‥ +0.357(-0.647)= -0.056414958
少数第4位以下を四捨五入すると -0.06 となる。
Rを用いて算出した結果は次のとおりである。
>head(result$x)#主成分得点
PC1 | PC2 | PC3 | PC4 | PC5 | PC6 | PC7 | PC8 | PC9 | |
[1,] | -0.06 | 0.92 | -0.12 | 1.19 | -0.83 | 0.1 | -0.37 | -0.27 | 0.09 |
[2,] | 0.15 | 0 | 0.66 | 1.18 | -1.24 | 0.69 | 0.44 | 0.21 | 0.06 |
[3,] | -0.54 | 0.54 | 0.96 | 1.85 | -1.09 | -0.05 | -0.34 | 0.5 | -0.16 |
[4,] | 5.11 | 0.23 | 0.63 | -0.58 | -0.29 | -0.37 | -0.3 | -0.24 | -0.31 |
[5,] | 2.64 | 0.66 | 0.01 | 0.88 | -0.05 | -0.46 | 0.2 | -0.29 | 0.63 |
[6,] | 1.69 | -0.33 | 0.49 | 0.29 | -0.3 | -0.2 | 0.14 | -0.1 | 0.18 |
これは、標準化したデータと主成分係数の内積で算出されている。