主成分分析ができる(5次元)
「主成分分析がうまくできない」などと困っていませんか?
こういう疑問に答えます。
本記事のテーマ
おさえておきたいポイント
- ①例題
- ➁相関係数行列の計算
- ➂固有値、固有ベクトルの計算
- ➃主成分の寄与率、累積寄与率
- ➄因子負荷量
- ⑥主成分負荷量
- ⑦主成分得点
Excelや固有値、因子負荷量とか暗記不要!
自力で導出できるぜ!
固有方程式が手計算で解くのは辛い!
今回はツールを使って解きます。
①例題
主成分分析の本質
主成分分析はいろいろな値が計算できますが、本質をおさえることが最重要です。関連記事で解説していますので、まずは確認してください。
【重要】主成分分析が導出できる 主成分分析で自力で主成分方向が導出できますか?「主成分分析=固有値解」とインプットしていませんか? 本記事では主成分分析の本質が理解できるために導出過程をわかりやすく解説します。2次元の例で基礎をしっかり理解しましょう。多変量解析を学ぶ人は必読です。 |
例題
QC検定®1級受験に必須な教科書にある、5次元の主成分分析を実際に解いてみましょう。
①QC検定®と品質管理検定®は、一般財団法人日本規格協会の登録商標です。
➁このコンテンツは、一般財団法人日本規格協会の承認や推奨、その他の検討を受けたものではありません。
➂QCプラネッツは、QC検定®と品質管理検定®の商標使用許可を受けています。
●リンクページ
|
例題
30人に対して5科目(英語、数学、国語、理科、社会)の試験を実施した点数結果である。これを主成分分析せよ。
(1)相関係数行列\(R\)
(2)固有値\(λ_i\)
(3)固有ベクトル\(v_i\)
(4)寄与率と累積寄与率
(5)因子負荷量(標準化)
(6)主成分得点(標準化)
データ(下表)
No | 英語(1) | 数学(2) | 国語(3) | 理科(4) | 社会(5) |
1 | 74 | 90 | 74 | 95 | 73 |
2 | 79 | 100 | 74 | 89 | 82 |
3 | 74 | 68 | 70 | 60 | 77 |
4 | 70 | 66 | 64 | 74 | 62 |
5 | 53 | 49 | 54 | 41 | 51 |
6 | 63 | 43 | 55 | 51 | 61 |
7 | 64 | 42 | 71 | 56 | 59 |
8 | 48 | 36 | 61 | 47 | 51 |
9 | 64 | 88 | 69 | 91 | 73 |
10 | 77 | 78 | 72 | 72 | 82 |
11 | 79 | 76 | 74 | 77 | 64 |
12 | 86 | 89 | 75 | 78 | 78 |
13 | 46 | 30 | 61 | 51 | 63 |
14 | 90 | 78 | 71 | 83 | 76 |
15 | 67 | 45 | 61 | 51 | 67 |
16 | 64 | 41 | 66 | 44 | 58 |
17 | 57 | 65 | 69 | 59 | 56 |
18 | 78 | 79 | 73 | 97 | 85 |
19 | 56 | 43 | 62 | 56 | 62 |
20 | 96 | 92 | 79 | 93 | 78 |
21 | 71 | 53 | 67 | 48 | 65 |
22 | 91 | 74 | 80 | 86 | 92 |
23 | 59 | 42 | 63 | 58 | 52 |
24 | 58 | 42 | 62 | 48 | 53 |
25 | 72 | 95 | 75 | 98 | 66 |
26 | 90 | 98 | 76 | 84 | 82 |
27 | 84 | 77 | 87 | 79 | 82 |
28 | 58 | 41 | 65 | 45 | 67 |
29 | 63 | 46 | 58 | 55 | 65 |
30 | 79 | 71 | 76 | 69 | 83 |
合計 | 2110 | 1937 | 2064 | 2035 | 2065 |
平均 | 70.33 | 64.57 | 68.8 | 67.83 | 68.83 |
標準偏差 | 13.03 | 21.23 | 7.63 | 18.14 | 11.28 |
教科書以上に詳しく解法を解説していきます。
ここで、各科目に数字を入れています。英語なら「1」、数学なら「2」として区別します。
データの標準化
因子負荷量や主成分得点などをツールから計算するために、データを標準化しておきます。
データの標準化は
\(z_i\)=\(\frac{x_i-\bar{x}}{s}\)と変換して、
平均0、標準偏差\(s\)=1の変数\(z_i\)に変換することです。
上のデータ表からは、
No | 英語(1) | 数学(2) | 国語(3) | 理科(4) | 社会(5) |
合計 | 2110 | 1937 | 2064 | 2035 | 2065 |
平均\(\bar{x}\) | 70.33 | 64.57 | 68.8 | 67.83 | 68.83 |
標準偏差\(s\) | 13.03 | 21.23 | 7.63 | 18.14 | 11.28 |
なので、データを標準化します。結果は下表のとおりです。
No | 英語(1) | 数学(2) | 国語(3) | 理科(4) | 社会(5) |
1 | 0.281 | 1.198 | 0.682 | 1.498 | 0.369 |
2 | 0.665 | 1.669 | 0.682 | 1.167 | 1.167 |
3 | 0.281 | 0.162 | 0.157 | -0.432 | 0.724 |
4 | -0.026 | 0.067 | -0.629 | 0.34 | -0.606 |
5 | -1.33 | -0.733 | -1.941 | -1.48 | -1.581 |
6 | -0.563 | -1.016 | -1.81 | -0.928 | -0.694 |
7 | -0.486 | -1.063 | 0.288 | -0.652 | -0.872 |
8 | -1.713 | -1.345 | -1.023 | -1.149 | -1.581 |
9 | -0.486 | 1.104 | 0.026 | 1.277 | 0.369 |
10 | 0.511 | 0.633 | 0.42 | 0.23 | 1.167 |
11 | 0.665 | 0.538 | 0.682 | 0.505 | -0.428 |
12 | 1.202 | 1.151 | 0.813 | 0.561 | 0.813 |
13 | -1.867 | -1.628 | -1.023 | -0.928 | -0.517 |
14 | 1.509 | 0.633 | 0.288 | 0.836 | 0.635 |
15 | -0.256 | -0.921 | -1.023 | -0.928 | -0.163 |
16 | -0.486 | -1.11 | -0.367 | -1.314 | -0.96 |
17 | -1.023 | 0.02 | 0.026 | -0.487 | -1.138 |
18 | 0.588 | 0.68 | 0.551 | 1.608 | 1.433 |
19 | -1.1 | -1.016 | -0.892 | -0.652 | -0.606 |
20 | 1.969 | 1.292 | 1.337 | 1.388 | 0.813 |
21 | 0.051 | -0.545 | -0.236 | -1.094 | -0.34 |
22 | 1.586 | 0.444 | 1.469 | 1.002 | 2.054 |
23 | -0.87 | -1.063 | -0.761 | -0.542 | -1.492 |
24 | -0.946 | -1.063 | -0.892 | -1.094 | -1.403 |
25 | 0.128 | 1.433 | 0.813 | 1.663 | -0.251 |
26 | 1.509 | 1.574 | 0.944 | 0.891 | 1.167 |
27 | 1.049 | 0.586 | 2.386 | 0.616 | 1.167 |
28 | -0.946 | -1.11 | -0.498 | -1.259 | -0.163 |
29 | -0.563 | -0.874 | -1.416 | -0.708 | -0.34 |
30 | 0.665 | 0.303 | 0.944 | 0.064 | 1.256 |
合計 | 0 | 0 | 0 | 0 | 0 |
平均 | 0 | 0 | 0 | 0 | 0 |
標準偏差 | 1 | 1 | 1 | 1 | 1 |
確かに、平均0、標準偏差1に変換できていますね。
➁相関係数行列の計算
各平方和を先に計算
科目ごとの平方和を先に計算します。
\(S_{ij}\)=\(\sum_{k=1}^{n}(x_{ki}-\bar{x_i})(x_{kj}-\bar{x_j})\)
として、英語と数学の平方和は
\(S_{12}\)=\(\sum_{k=1}^{n=30}(x_{ki}-\bar{x_i})(x_{kj}-\bar{x_j})\)
と計算します。
全部のパターンを計算した結果を下表にまとめます。
平方和\(S\) | 英語(1) | 数学(2) | 国語(3) | 理科(4) | 社会(5) |
英語(1) | 30 | 23.72 | 23.99 | 21.99 | 24.53 |
数学(2) | 23.72 | 30 | 22.73 | 27.29 | 21.5 |
国語(3) | 23.99 | 22.73 | 30 | 22.41 | 22.63 |
理科(4) | 21.99 | 27.29 | 22.41 | 30 | 21.19 |
社会(5) | 24.53 | 21.5 | 22.63 | 21.19 | 30 |
相関係数行列の計算
相関係数\(r_{ij}\)は
●\(r_{ij}\)=\(\frac{S_{ij}}{\sqrt{S_{ii} S_{jj}}}\)
から計算できて、それをまとめたら
相関係数行列が計算できますね。
まず、さっき求めた平方和\(S_{ij}\)から相関係数\(r_{ij})\)を計算すると下表になります。
平方和\(S\) | 英語(1) | 数学(2) | 国語(3) | 理科(4) | 社会(5) |
英語(1) | 1 | 0.791 | 0.8 | 0.733 | 0.818 |
数学(2) | 0.791 | 1 | 0.758 | 0.91 | 0.717 |
国語(3) | 0.8 | 0.758 | 1 | 0.747 | 0.754 |
理科(4) | 0.733 | 0.91 | 0.747 | 1 | 0.706 |
社会(5) | 0.818 | 0.717 | 0.754 | 0.706 | 1 |
よって相関係数行\(R\)は
\(R\)=\(\left(
\begin{array}{cccc}
r_{11} & r_{12} & r_{13} & r_{14} & r_{15} \\
r_{12} & r_{22} & r_{23} & r_{24} & r_{25} \\
r_{13} & r_{23} & r_{33} & r_{34} & r_{35} \\
r_{14} & r_{24} & r_{34} & r_{44} & r_{45} \\
r_{15} & r_{25} & r_{35} & r_{45} & r_{55} \\
\end{array}
\right)
\)
=\(\left(
\begin{array}{cccc}
1 & 0.791 & 0.8 & 0.733 & 0.818 \\
0.791 & 1 & 0.758 & 0.91 & 0.717 \\
0.8 & 0.758 & 1 & 0.747 & 0.754 \\
0.733 & 0.91 & 0.747 & 1 & 0.706 \\
0.818 & 0.717 & 0.754 & 0.706 & 1 \\
\end{array}
\right)
\)
➂固有値、固有ベクトルの計算
固有値、固有ベクトルの解法
ツールを使った解法を解説する前に、主成分分析の本質を再確認しましょう。
本記事のテーマではありませんが、主成分分析は必ず固有方程式を解きます。
固有方程式
平方和でも相関係数でもどちらでも固有方程式は解けますが、今回は相関係数を使って解きます。
固有方程式
\(Rv\)=\(λv\)
より
\(\left(
\begin{array}{cccc}
r_{11} & r_{12} & r_{13} & r_{14} & r_{15} \\
r_{12} & r_{22} & r_{23} & r_{24} & r_{25} \\
r_{13} & r_{23} & r_{33} & r_{34} & r_{35} \\
r_{14} & r_{24} & r_{34} & r_{44} & r_{45} \\
r_{15} & r_{25} & r_{35} & r_{45} & r_{55} \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a \\
b\\
c\\
d\\
e\\
\end{array}
\right)
\)=\(λ\)\(
\left(
\begin{array}{c}
a \\
b\\
c\\
d\\
e\\
\end{array}
\right)
\)
を満たす、固有値\(λ\)と固有ベクト\(v\)を解きます。
ただし、1つ問題があります。
手計算ではムリ!
なので、解析ツールを使って解きましょう。
主成分分析の本質を意識しながら解きましょう。
固有値、固有ベクトルの解法ツール
ツールは何でもいいですが、今回は、フリーソフトを使って計算しました。
mam相関分析・主成分分析~(無料)フリーソフト
使い方はリンク先をご覧ください。
ここから
固有値、固有ベクトルの計算
実際に固有値と、固有ベクトルを解くと、
固有値 | \(λ_1\) | \(λ_2\) | \(λ_3\) | \(λ_4\) | \(λ_5\) |
固有値 | 4.094 | 0.4071 | 0.2398 | 0.1786 | 0.0805 |
固有ベクトル | 主成分1 | 主成分2 | 主成分3 | 主成分4 | 主成分5 |
英語1 | -0.4525 | -0.3398 | 0.0753 | 0.7768 | -0.2661 |
数学2 | -0.4567 | 0.4857 | 0.1173 | 0.1796 | 0.7138 |
国語3 | -0.4431 | -0.2177 | -0.8302 | -0.2509 | 0.0642 |
理科4 | -0.4478 | 0.5723 | 0.112 | -0.2386 | -0.6343 |
社会5 | -0.4356 | -0.5231 | 0.5281 | -0.4945 | 0.1148 |
固有ベクトルは、最初に紹介した「QC検定®受検テキスト1級」の結果と比較すると正負が入れ替わっています。ただし、固有方程式の両辺に固有ベクトルが付くので、正負±は両辺で消せますので、問題ありません。
固有値、固有ベクトルの計算結果を検算
固有値の計算の理解を深める方法の1つとして、実際に検算することをお勧めします。
実際、検算すると\(Rv=λv\)が成り立ちます。
ここからは、個々の値を求めていきましょう。
単に数字があっていればOKではなく、値の意味をまず関連記事で確認しましょう。
主成分分析が計算できる 主成分負荷量、主成分得点、主成分平方和、主成分の寄与率は説明・計算ができますか? 本記事は各変数の導出方法を丁寧に解説します。ただ、主成分分析の本質は先に習得しておきましょう。多変量解析を学ぶ人は必読です。 |
➃主成分の寄与率、累積寄与率
主成分の寄与率、累積寄与率
●主成分の寄与率は、個々の固有値を自由度で割った値ですね。
●累積寄与率は、寄与率の累積値です。
結果は下表のとおりです。
寄与率 | 寄与率 | 累積寄与率 |
主成分1 | \(\frac{λ_1}{p=5}\)=\(\frac{4.094}{5}\)=0.819 | 0.819 |
主成分2 | \(\frac{λ_2}{p=5}\)=\(\frac{0.4071}{5}\)=0.081 | 0.9 |
主成分3 | \(\frac{λ_3}{p=5}\)=\(\frac{0.2398}{5}\)=0.048 | 0.948 |
主成分4 | \(\frac{λ_4}{p=5}\)=\(\frac{0.1786}{5}\)=0.036 | 0.984 |
主成分5 | \(\frac{λ_5}{p=5}\)=\(\frac{0.0805}{5}\)=0.016 | 1 |
寄与率を平方和でなく固有値で考える理由
各主成分の平方和は固有値になります。これは関連記事で解説していますが、一番簡単にわかる証明方法があります。
全ての変数をスカラ(数値)と考えると、
両辺を\(v\)で割れば、
(平方和)\(S\)=\(λ\)(固有値)
確かに、(平方和)\(S\)=\(λ\)(固有値)となりますよね。これを行列、ベクトル表記にしてn次元化していますが、考え方は同じなので、主成分平方和は固有値として考えてよいということです。平方和と固有値は別物と思いがちですが、一致しています。意外ですよね。
➄因子負荷量
因子負荷量の公式
因子負荷量の公式を下表にまとめます。公式から計算しましょう。
因子負荷量 | 主成分1 | 主成分2 | 主成分3 | 主成分4 | 主成分5 |
英語 | \(v_{11} \sqrt{λ_1}\) | \(v_{21} \sqrt{λ_2}\) | \(v_{31} \sqrt{λ_3}\) | \(v_{41} \sqrt{λ_4}\) | \(v_{51} \sqrt{λ_5}\) |
数学 | \(v_{12} \sqrt{λ_1}\) | \(v_{22} \sqrt{λ_2}\) | \(v_{32} \sqrt{λ_3}\) | \(v_{42} \sqrt{λ_4}\) | \(v_{52} \sqrt{λ_5}\) |
国語 | \(v_{13} \sqrt{λ_1}\) | \(v_{23} \sqrt{λ_2}\) | \(v_{33} \sqrt{λ_3}\) | \(v_{43} \sqrt{λ_4}\) | \(v_{53} \sqrt{λ_5}\) |
理科 | \(v_{14} \sqrt{λ_1}\) | \(v_{24} \sqrt{λ_2}\) | \(v_{34} \sqrt{λ_3}\) | \(v_{44} \sqrt{λ_4}\) | \(v_{54} \sqrt{λ_5}\) |
社会 | \(v_{15} \sqrt{λ_1}\) | \(v_{25} \sqrt{λ_2}\) | \(v_{35} \sqrt{λ_3}\) | \(v_{45} \sqrt{λ_4}\) | \(v_{55} \sqrt{λ_5}\) |
因子負荷量の計算結果
因子負荷量 | 主成分1 | 主成分2 | 主成分3 | 主成分4 | 主成分5 |
英語 | -0.916 | -0.217 | 0.037 | 0.328 | -0.075 |
数学 | -0.924 | 0.31 | 0.057 | 0.076 | 0.203 |
国語 | -0.897 | -0.139 | -0.407 | -0.106 | 0.018 |
理科 | -0.906 | 0.365 | 0.055 | -0.101 | -0.18 |
社会 | -0.881 | -0.334 | 0.259 | -0.209 | 0.033 |
最初に紹介した「QC検定®受検テキスト1級」の結果と比較すると正負が入れ替わっています。固有ベクトルの正負が逆であることが理由です。特に問題はありませんが、気になるようなら、固有ベクトルの標準化対応して個々の値を計算すればよいでしょう。正負に自由度があるようなので、値が一致しないと焦る気持ちはよくわかりますが、数式的は問題ありません。
➄主成分負荷量
「主成分負荷量」名前は立派ですが、簡単にいうと固有ベクトルの個々の値です。すでに表で結果が出ていますが、再掲します。
主成分負荷量 | 主成分1 | 主成分2 | 主成分3 | 主成分4 | 主成分5 |
英語1 | -0.4525 | -0.3398 | 0.0753 | 0.7768 | -0.2661 |
数学2 | -0.4567 | 0.4857 | 0.1173 | 0.1796 | 0.7138 |
国語3 | -0.4431 | -0.2177 | -0.8302 | -0.2509 | 0.0642 |
理科4 | -0.4478 | 0.5723 | 0.112 | -0.2386 | -0.6343 |
社会5 | -0.4356 | -0.5231 | 0.5281 | -0.4945 | 0.1148 |
⑥主成分得点
主成分得点の求め方は、
個々の主成分負荷量を
掛け算して足し合わせたもの
つまり、
主成分得点\(z_i\)=\(λ_1 x_{1j}\)+\(λ_2 x_{2j}\)+\(λ_3 x_{3j}\)+\(λ_4 x_{4j}\)+\(λ_5 x_{5j}\)
計算はExcelでもいいでしょうね。具体的な計算の様子は下図のとおりです。
主成分得点の結果を下表にまとめます。
No | 主成分1 | 主成分2 | 主成分3 | 主成分4 | 主成分5 |
1 | -1.808 | 1.002 | -0.042 | -0.277 | -0.084 |
2 | -2.396 | 0.493 | 0.427 | -0.21 | 0.452 |
3 | -0.393 | -0.677 | 0.243 | -0.047 | 0.408 |
4 | 0.371 | 0.69 | 0.247 | 0.369 | -0.271 |
5 | 3.148 | 0.498 | 0.425 | 0.457 | 0.463 |
6 | 2.238 | -0.076 | 0.87 | 0.399 | -0.182 |
7 | 1.249 | -0.331 | -0.934 | -0.054 | -0.297 |
8 | 3.046 | 0.321 | -0.401 | -0.26 | -0.023 |
9 | -1.029 | 1.233 | 0.409 | -0.673 | 0.151 |
10 | -1.318 | -0.437 | 0.406 | -0.226 | 0.331 |
11 | -0.889 | 0.4 | -0.622 | 0.533 | -0.119 |
12 | -2.035 | -0.131 | 0.042 | 0.401 | 0.291 |
13 | 2.682 | -0.194 | 0.141 | -1.009 | -0.201 |
14 | -1.751 | -0.122 | 0.377 | 0.7 | -0.389 |
15 | 1.476 | -0.584 | 0.532 | 0.194 | -0.085 |
16 | 1.896 | -0.544 | -0.516 | 0.304 | 0.037 |
17 | 1.156 | 0.668 | -0.752 | -0.119 | 0.467 |
18 | -2.165 | 0.181 | 0.604 | -0.652 | -0.492 |
19 | 1.913 | 0.018 | 0.145 | -0.358 | -0.145 |
20 | -3.049 | 0.036 | -0.226 | 0.693 | -0.303 |
21 | 0.968 | -0.679 | -0.166 | 0.43 | 0.237 |
22 | -2.914 | -1.144 | 0.149 | -0.311 | -0.41 |
23 | 2.109 | 0.415 | -0.407 | 0.192 | -0.403 |
24 | 2.41 | 0.108 | -0.319 | 0.253 | -0.032 |
25 | -1.708 | 1.559 | -0.444 | -0.12 | -0.043 |
26 | -2.728 | -0.054 | 0.231 | 0.428 | 0.352 |
27 | -2.583 | -0.85 | -1.148 | -0.403 | 0.036 |
28 | 1.79 | -0.745 | -0.015 | -0.429 | 0.208 |
29 | 1.746 | -0.152 | 0.772 | 0.098 | -0.156 |
30 | -1.433 | -0.904 | -0.028 | -0.302 | 0.203 |
合計 | 0 | 0 | 0 | 0 | 0 |
長い計算でしたが、5次元主成分分析ができましたね。
何を求めているのかを常に意識しましょう。
まとめ
「主成分分析ができる(5次元)」を解説しました。
- ①例題
- ➁相関係数行列の計算
- ➂固有値、固有ベクトルの計算
- ➃主成分の寄与率、累積寄与率
- ➄因子負荷量
- ⑥主成分負荷量
- ⑦主成分得点
Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119