主成分分析ができる(2次元)
「主成分分析がうまくできない」などと困っていませんか?
こういう疑問に答えます。
本記事のテーマ
おさえておきたいポイント
- ①例題
- ➁相関係数行列の計算
- ➂固有値、固有ベクトルの計算
- ➃主成分の寄与率、累積寄与率
- ➄因子負荷量
- ⑥主成分負荷量
- ⑦主成分得点
Excelや固有値、因子負荷量とか暗記不要!
自力で導出できるぜ!
①例題
主成分分析の本質
主成分分析はいろいろな値が計算できますが、本質をおさえることが最重要です。関連記事で解説していますので、まずは確認してください。
【重要】主成分分析が導出できる 主成分分析で自力で主成分方向が導出できますか?「主成分分析=固有値解」とインプットしていませんか? 本記事では主成分分析の本質が理解できるために導出過程をわかりやすく解説します。2次元の例で基礎をしっかり理解しましょう。多変量解析を学ぶ人は必読です。 |
例題
2次元の主成分分析の例題は次の通りです。
例題
以下のデータにおいて、主成分分析せよ。
(1)相関係数行列\(R\)
(2)固有値\(λ_i\)
(3)固有ベクトル\(v_i\)
(4)寄与率と累積寄与率
(5)因子負荷量(標準化)
(6)主成分得点(標準化)
データ(下表)
No | x | y |
1 | 0 | 1 |
2 | 1 | 3 |
3 | 2 | 2 |
4 | 3 | 4 |
5 | 4 | 5 |
合計 | 10 | 15 |
平均 | 2 | 3 |
2次元の主成分分析なので、手計算で解いて主成分分析の理解を深めましょう。
データの標準化
因子負荷量や主成分得点などをツールから計算するために、データを標準化しておきます。
データの標準化は
\(z_i\)=\(\frac{x_i-\bar{x}}{s}\)と変換して、
平均0、標準偏差\(s\)=1の変数\(z_i\)に変換することです。
上のデータ表からは、標準偏差を計算すると、下表になります。
No | x | y |
標準偏差\(s\) | 1.41 | 1.41 |
なので、データを標準化します。結果は下表のとおりです。
No | x | y |
1 | -1.414 | -1.414 |
2 | -0.707 | 0 |
3 | 0 | -0.707 |
4 | 0.707 | 0.707 |
5 | 1.414 | 1.414 |
合計 | 0 | 0 |
平均 | 0 | 0 |
標準偏差 | 1 | 1 |
確かに、平均0、標準偏差1に変換できていますね。
➁相関係数行列の計算
各平方和を先に計算
科目ごとの平方和を先に計算します。
\(S_{xx}\)=\(\sum_{i=1}^{n}(x_{i}-\bar{x})^2\)
\(S_{yy}\)=\(\sum_{i=1}^{n}(y_{i}-\bar{y})^2\)
\(S_{xy}\)=\(\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})\)
と計算します。
全部のパターンを計算した結果を下表にまとめます。
平方和S | x | y |
x | \(S_{xx}\)=10 | \(S_{xy}\)=9 |
y | \(S_{xy}\)=9 | \(S_{yy}\)=10 |
相関係数行列の計算
相関係数\(r_{ij}\)は
●\(r_{ij}\)=\(\frac{S_{ij}}{\sqrt{S_{ii} S_{jj}}}\)
から計算できて、それをまとめたら
相関係数行列が計算できますね。
まず、さっき求めた平方和\(S_{ij}\)から相関係数\(r_{ij})\)を計算すると下表になります。
相関係数\(r_{ij}\) | x | y |
x | \(r_{xx}\)=1 | \(r_{xy}\)=0.9 |
y | \(r_{xy}\)=0.9 | \(r_{yy}\)=1 |
よって相関係数行\(R\)は
\(R\)=\(\left(
\begin{array}{cccc}
r_{11} & r_{12} \\
r_{21} & r_{22} \\
\end{array}
\right)
\)
=\(\left(
\begin{array}{cccc}
1 & 0.9 \\
0.9 & 1 \\
\end{array}
\right)
\)
2次元なら、あえて相関係数行列は要らないですが、3次元、5次元と関連記事で解説していますので、流れは理解しておきましょう。
➂固有値、固有ベクトルの計算
固有値、固有ベクトルの解法
ツールを使った解法を解説する前に、主成分分析の本質を再確認しましょう。
本記事のテーマではありませんが、主成分分析は必ず固有方程式を解きます。
固有方程式
平方和でも相関係数でもどちらでも固有方程式は解けますが、今回は相関係数を使って解きます。
固有方程式
\(Rv\)=\(λv\)
より
\(\left(
\begin{array}{cccc}
r_{11} & r_{12} \\
r_{21} & r_{22} \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a \\
b\\
\end{array}
\right)
\)=\(λ\)\(
\left(
\begin{array}{c}
a \\
b\\
\end{array}
\right)
\)
を満たす、固有値\(λ\)と固有ベクト\(v\)を解きます。
【重要】固有値の計算
2×2行列における、固有方程式を書くと
\(Rv\)=\(λv\)
\((R-λE)v=0\)
より
行列式|\(R-λE\)|=0を満たすλを計算します。ただ、2×2行列なので、ad-bc=0の簡単な式になります。
\((R-λE)\)=\(\left(
\begin{array}{cccc}
r_{11}-λ & r_{12} \\
r_{21} & r_{22}-λ \\
\end{array}
\right)
\)=\(\left(
\begin{array}{cccc}
1-λ & 0.9 \\
0.9 & 1-λ \\
\end{array}
\right)
\)
から
|\(R-λE\)|=\((1-λ)^2-0.9^2\)=0
\((1-λ)\)=±0.9
よって、固有値は
●λ1=1.9
●λ2=0.1
となります。
【重要】固有ベクトルの計算
λ1=1.9 の場合
\(\left(
\begin{array}{cccc}
-0.9 & 0.9 \\
0.9 & -0.9 \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
v_{11} \\
v_{12}\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
から、関係式を作ると
●\(- 0.9v_{11} + 0.9v_{12}\)=0
●単位ベクトル
を考えると
よって、固有ベクトル\(v_1\)は
\(v_1\)=\(
\left(
\begin{array}{c}
\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} \\
\end{array}
\right)
\)
λ2=0.1の場合
\(\left(
\begin{array}{cccc}
0.9 & 0.9 \\
0.9 & 0.9 \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
v_{21} \\
v_{22}\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
から、関係式を作ると
●\(0.9v_{21} + 0.9v_{22}\)=0
●単位ベクトル
を考えると
よって、固有ベクトル\(v_2\)は
\(v_2\)=\(
\left(
\begin{array}{c}
-\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} \\
\end{array}
\right)
\)
以上、固有値と固有ベクトルを下表にまとめます。
固有ベクトル | 主成分1 | 主成分2 |
x1 | \(\frac{1}{\sqrt{2}}\) | \(\frac{1}{\sqrt{2}}\) |
x2 | -\(\frac{1}{\sqrt{2}}\) | \(\frac{1}{\sqrt{2}}\) |
固有値 | 1.9 | 0.1 |
固有値、固有ベクトルの計算結果を検算
固有値の計算の理解を深める方法の1つとして、実際に検算することをお勧めします。
実際、検算すると\(Rv=λv\)が成り立ちます。
ここからは、個々の値を求めていきましょう。
単に数字があっていればOKではなく、値の意味をまず関連記事で確認しましょう。
主成分分析が計算できる 主成分負荷量、主成分得点、主成分平方和、主成分の寄与率は説明・計算ができますか? 本記事は各変数の導出方法を丁寧に解説します。ただ、主成分分析の本質は先に習得しておきましょう。多変量解析を学ぶ人は必読です。 |
➃主成分の寄与率、累積寄与率
主成分の寄与率、累積寄与率
●主成分の寄与率は、個々の固有値を自由度で割った値ですね。
●累積寄与率は、寄与率の累積値です。
固有値はそれぞれλ1=1.9, λ2=0.1 です。
結果は下表のとおりです。
主成分寄与率 | 主成分1 | 主成分2 |
固有値 | 1.9 | 0.1 |
寄与率 | 0.95 | 0.05 |
累積寄与率 | 0.95 | 1 |
寄与率を平方和でなく固有値で考える理由
各主成分の平方和は固有値になります。これは関連記事で解説していますが、一番簡単にわかる証明方法があります。
全ての変数をスカラ(数値)と考えると、
両辺を\(v\)で割れば、
(平方和)\(S\)=\(λ\)(固有値)
確かに、(平方和)\(S\)=\(λ\)(固有値)となりますよね。これを行列、ベクトル表記にしてn次元化していますが、考え方は同じなので、主成分平方和は固有値として考えてよいということです。平方和と固有値は別物と思いがちですが、一致しています。意外ですよね。
➄因子負荷量
因子負荷量の公式
因子負荷量の公式を下表にまとめます。公式から計算しましょう。
因子負荷量 | 主成分1 | 主成分2 |
主成分1 | \(v_{11} \sqrt{λ_1}\) | \(v_{21} \sqrt{λ_2}\) |
主成分2 | \(v_{12} \sqrt{λ_1}\) | \(v_{22} \sqrt{λ_2}\) |
因子負荷量の計算結果
因子負荷量 | 主成分1 | 主成分2 |
主成分1 | 0.975 | 0.975 |
主成分2 | -0.224 | 0.224 |
➄主成分負荷量
「主成分負荷量」名前は立派ですが、簡単にいうと固有ベクトルの個々の値です。すでに表で結果が出ていますが、再掲します。
主成分負荷量 | 主成分1 | 主成分2 |
主成分1 | 0.7071 | 0.7071 |
主成分2 | -0.7071 | 0.7071 |
⑥主成分得点
主成分得点の求め方は、
個々の主成分負荷量を
掛け算して足し合わせたもの
つまり、
主成分得点\(z_i\)=\(λ_1 x_{1j}\)+\(λ_2 x_{2j}\)
主成分得点の結果を下表にまとめます。
No | 主成分1 | 主成分2 |
1.000 | -2.000 | 1.000 |
2.000 | -0.500 | 0.000 |
3.000 | -0.500 | 0.500 |
4.000 | 1.000 | -0.500 |
5.000 | 2.000 | -1.000 |
合計 | 0.000 | 0.000 |
2次元主成分分析でしっかり解法の流れを理解しましょう。
何を求めているのかを常に意識しましょう。
まとめ
「主成分分析ができる(2次元)」を解説しました。
- ①例題
- ➁相関係数行列の計算
- ➂固有値、固有ベクトルの計算
- ➃主成分の寄与率、累積寄与率
- ➄因子負荷量
- ⑥主成分負荷量
- ⑦主成分得点
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