Rによる主成分分析

テストの成績を分析するうえで、主成分分析は重要な手法である。
統計科学研究所 様 「主成分分析」 https://statistics.co.jp/reference/software_R/statR_9_principal.pdf
に分かりやすい解説がある。
ここでは、Rの説明に絞ってさらに詳しく解説する。

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

これは、標準化したデータと主成分係数の内積で算出されている。



© hyoccori-toukei 2021