# 主成分分析の手順 Ver.1
###### tags: `service-data-science-2023`
* 多次元データの正規直交基底を軸方向の分散を最大にするように導く
* データのばらつきの多くを説明する低次元のアフィン空間を構成する (平均を原点に取った部分空間とも)
* 分散をばらつきの規準に取り、データのばらつきを多く説明する軸を互いに直交するように順に作成する
* 相関係数行列の固有値固有ベクトル分解
* 主成分分析は変数の合成。
```graphviz
digraph A {
node [shape=rectangle]
rankdir = LR
変数1 -> 第1主成分 [label = w11]
変数1 -> 第2主成分 [label = w12]
変数4 -> 第1主成分 [label = w41]
変数4 -> 第2主成分 [label = w42]
変数3 -> 第1主成分 [label = w31]
変数3 -> 第2主成分 [label = w32]
変数2 -> 第1主成分 [label = w21]
変数2 -> 第2主成分 [label = w22]
}
```
## 主成分分析の目的
データのばらつきの多くを表現する低次元空間を見出して、その低次元を情報の縮約とする (次元縮約、次元圧縮)
* データの低次元の要約の獲得
* データから細かなばらつきの成分(ノイズ)を取り除く
主成分分析を行って抽出した情報そのものが目的の場合と、主成分分析で抽出した情報を更なる分析に活用する場合とがある。
1. 次元縮約(機械学習:画像その他のパターン認識:データアナリティクス? 簡単な操作)
2. データアナリティクスなデータの深掘り:元の変数から新しく評価指標を作成する(スコアリング)
3. 新しい指標のもとでの、対象の分類(クラスタリング)、ポジショニング(可視化、2次分析)
4. 変数の分類と、対象の分類は、dualな構造
5. 機械学習の言葉で表すると、教師なし学習による特徴抽出に相当する(非常にカジュアルに用いられる)



## 主成分分析の前提
### データの性質による確認
1. すべての変数の間に因果関係はなし。
2. すべての変数の間に相関関係のみあり。
3. すべての変数が連続尺度。(5段階以上の順序尺度でも大丈夫とする向きもある。名義尺度は不可。ダミー変数も不可。)
### グラフによる確認
1. すべての変数の**ヒストグラム**が(ほぼ)ひと山。
2. すべての変数同士の**散布図**が(ほぼ)楕円状の雲、**カーネル密度推定**による等高線が並行、中心に行けば行くほど濃い。
3. すべての3つの変数同士の**三次元散布図**が(ほぼ)楕円状の雲、**ノンパラメトリック密度推定**による等高線がボール状もしくはラグビーボール状、ボールが大小関係のみで中心が同一。
## 主成分分析の手順
統計手法はおよそ、次の図のように、途中でのやり直しが頻繁に生じる。
```graphviz
digraph A {
"振り出し" -> "前処理" -> "分布の観察" -> "相関係数の観察" -> "固有値と固有ベクトルの算出" -> "主成分の観察" -> "主成分数の決定" -> "主成分の解釈" -> "主成分の解釈の確認" -> "報告" -> "ゴール"
"主成分の観察" -> "前処理"
"主成分の解釈" -> "前処理"
"主成分の解釈の確認" -> "前処理"
"報告" -> "前処理"
}
```
### 必要なら層別する
性別等の名義尺度が、変数の分布に違いをもたらすなら、それで層別する。
### グラフを眺める
(略)
外れ値がないことを確認する。必要に応じて、外れ値を取り除く。外れ値があっても、取り除けない場合もある。
* 47都道府県の分析なのに一部の都道府県を取り除くと、この後の主成分による都道府県間の比較ができなくなる。
* ここで外れ値を取り除かないと、後で主成分得点による比較ができなくなることもある。
* 後の分析で外れ値の影響が確認されたら、ここまで戻ってきて、やはり取り除いて、分析をやり直す。
* 結論が外れ値の影響を受けたら、ここまで戻ってきて、やはり取り除いて、分析をやり直す。
### 各変数の要約を眺める
**一変量の分布**で、平均、標準偏差、最大、最小、範囲を確認する。必要なら変数ごとに、平均の差の検定などを試してもいい。
### 分散共分散行列を眺める
**多変量の相関**で、分散共分散行列を眺める。
### 相関係数行列
**多変量の相関**で、相関係数行列を眺める。
### 相関係数行列の固有値・固有ベクトル分解の下観測
**主成分分析**で以下のことを、必要な主成分の数だけ繰り返す。
1. 固有値から寄与率を見る
2. 固有ベクトルから主成分方向を見る
3. 名前を考える(まだ決めない)
平均$0$、分散$1$に標準化された変数$Y_1, \ldots, Y_p$と、第$k$固有値に対応する固有ベクトル$w_{k1}, w_{k2}, \ldots, w_{kp}$を用いて、第$k$主成分は次の式で定まる。
$$
Z_k = w_{k1}Y_1+w_{k2}Y_2+\cdots w_{kp}Y_p
$$
### 主成分得点の散布図行列
主成分得点がボール状の散布図になっているかを確認する。
### 主成分数の決定
**主成分分析**で以下の基準を参考に、採用する主成分の数を決める。
* 累積寄与率が一定割合以上まで。
* 相関係数行列の固有値が1以上の主成分のみを採用。(Keiserの基準)
* スクリープロットの傾きが急なところだけを採用。(エルボー法)
* 球面仮説の検定で、棄却された固有値の主成分を採用。(**バートレット検定**)
* 相関係数行列の固有値の並べ替え検定。(略)
ここで採用すると決めた主成分は、累積寄与率だけしかデータ全体を説明しないことを常に意識する必要がある。
### 小さい固有値に対応する主成分が持つ情報
固有値がほとんど$0$に等しいとき、その固有値に対応する固有ベクトルは、データが満たす方程式を表す。$Var[Z_k]\simeq 0$ならば、
$$
Z_k = w_{k1}Y_1+w_{k2}Y_2+\cdots w_{kp}Y_p \simeq 0
$$
が成り立つことになる。これは、変数の間に多重共線性があることを意味する。
### 主成分負荷量の考察:主成分の名前付け
主成分の名前付けを主成分負荷量に基づいて行うことにする。(固有ベクトルから行うように指示することもある。)主成分負荷量とは、主成分と変数との相関係数である。主成分と相関が高い変数は、その主成分と連動して変動する傾向が強い。このことを念頭に、主成分負荷量の散布図を読み解いていく。
参考までに
$$
r_{kj} = Cor(Z_k,Y_j) = \sqrt{\lambda_k} w_{kj}
$$
主成分の標準偏差と主成分の係数の積でもある。
これらを念頭に**主成分分析**で、**負荷量行列**、**濃淡表示の負荷量行列**、**バイプロット**などを見ながら、主成分を考察し、名前を付けていく。
* 主成分スコア(主成分得点)は、$0$が元のデータの平均(中心)で、大きくなるほど元の変数は主成分負荷量の符号の方向に大きくなる傾向がある
* 主成分負荷量の絶対値が大きいことは、相関が強いことと等しく、その場合にはその傾向が強くなる。
* 主成分負荷量の絶対値が小さいことは、相関が弱いことと等しく、その場合にはその傾向が弱くなる。
* バイプロットでは、主成分スコアは点で、主成分負荷量は矢印で描かれている。
### 主成分の解釈の確認
主成分スコアの**散布図行列**と、**一変量の分布**のヒストグラムと、データの**散布図行列**に基づいて、上の解釈が正しいかどうかを確認していく。
各主成分を単独で考察できるかは、主成分同士の変動に関連がないかどうかに依存する。単に相関係数が$0$なだけで、関連がないと判断するのは危ない。主成分スコアが次の図の3段目のような散布図を持つ場合、主成分ごとに独立に名前を付けても意味がない。

### ここまでをジャーナルに書き出す
分析結果をすべてジャーナルに書き出して、編集可能なファイルに保存する。
### 記録する
編集可能なファイルに、主成分名や確認の結果などを追記していく。
### 必要なら主成分を保存する
要約した主成分を別の分析に用いる場合は、**主成分の保存**でこれらを保存する。
### 必要なら主成分分析の結果報告を起草する
これだけ出力して検討しても、最後の報告に使う部品は次のものぐらいである。
0. 主成分分析の目的 (要約、スコア作成など)
1. 散布図行列 (論文にはかなり不要)
2. 主成分得点の相関係数行列 (論文にはあまり必要ないかも)
3. 固有値と累積寄与率 (ほぼ必要)
4. 主成分数を選んだ理由 (ほぼ必要)
5. 主成分負荷量行列 (ほぼ必要)
6. 主成分の名前 (ほぼ必要)
7. 主成分分析の結果(要約値としての主成分スコア)の考察 (ほぼ必要)
## オプション:変数の変換
ヒストグラムが歪んでいたり、重く裾を引いている場合は、ヒストグラムを正規分布に近づけるような変数変換を検討する。
## オプション:外れ値の除去
変換しても取り除けない外れ値が、結果に大きな影響を及ぼす場合は、除去して分析し直すことを検討する。
## オプション:主成分分析の回転
因子分析の主因子法で、共通性の初期値をすべて$1$にして、繰り返しなしで共通因子を求めると、抽出された共通因子が、主成分分析の主成分に一致する。(共通性の初期値にSMCを設定して、共通性が収束するまで反復を繰り返す、あるいは最尤法を用いる方が一般的である。)
このことから主成分に対して、因子分析で用いられる回転を適用する人たちもいる。ただし、回転したいのであれば、因子分析を用いる方が望ましい。
## オプション:主成分得点による付置
省略。