主成分分析
主成分分析のwikiはこちら。
基本的には以下の日本語まとめ。回転がよく分からなかったのでまとめてみる。
https://www.stata.com/manuals/mvpca.pdf
PCA
Stataコマンドの”pca”と”pcamat”は、主成分分析(PCA)の固有値と固有ベクトルを表示する。固有ベクトルは正規直行形式で返却される。つまり、無相関かつ正規化されている。
主成分分析の主な目的は、変数の数を減らし、データの根本的な構造を把握することである。”pcamat”は相関行列または共分散行列を直接提供する。”pca”では、相関行列または共分散行列はvarlistの変数から計算される。
数学的には、第一主成分の分散を最大化し、続く主成分は順次、既に決定した主成分と直行し、かつ分散を最大化するように選ばれる。分散を最大化することで、主成分の持つ観測値の変化に対する説明能力を大きくすることが目的である。
Quick start
基本的な用法は以下。
変数v1, v2, v3, v4の主成分分析。
pca v1 v2 v3 v4
上記と同様だが、2つの要素のみを保持。
pca v1 v2 v3 v4, components(2)
これも上記と同様であるが、固有値が0.5よりも大きいもの要素のみを保持。
pca v1 v2 v3 v4, mineigen(.5)
相関行列の代わりに共分散行列の主成分分析を行う。
pca v1 v2 v3 v4, covariance
相関行列の解析を行うときは、上記を”pcamat”とすればいい。
pcamat C, n(1000)
# 1,000 observationsの相関行列C
具体例
上記のpdfの例を用いる。これは100人の39歳男性の聴力測定データセットである。測定値は、左右の耳で計測した、4つの異なる周波数における最小の識別可能な強度である。例えば、lft1000は、1,000Hzにおける左耳の信号強度を指す。
use https://www.stata-press.com/data/r18/audiometric, clear
想像の通り、同じ耳で測定した値は、異なる耳で測定した値よりも相関が高い。また、同じ周波数での異なる耳での測定値は、異なる周波数での測定値よりも相関性が高い。これらの変数の共分散行列を分析することは理論的に理にかなっている。しかし測定値の分散は大きく異なる。以下のコマンドで各変数の要約統計量を見てみる。
summarize lft* rght*, sep(4)
共分散の分析では、高い周波数の測定値が結果を支配するだろう。このような効果がある臨床的理由はない。したがって相関行列を分析する。
pca lft* rght*
pcaを実行すると、2つのパネルが表示される。最初のパネルは相関行列の固有値を大きい順に並べたものである。対応する固有ベクトルは2つ目のパネルに表示される。これらは主成分であり、単位長さを持つ。負荷量の二乗の列ごとの和は、$$0.4011^2 + 0.4210^2 + \cdots + 0.2542^2 = 1$$である。
固有値は、分析対象の変数の分散の合計、すなわち変数の「総分散」と一致する。相関行列を分析しているため、変数は単位分散に標準化されており、総分散は8となる。固有値は主成分の分散である。第1主成分の分散は3.93で、総分散の49% (3.93/8) を説明している。第2主成分の分散は1.62で、総分散の20% (1.62/8) を説明している。主成分は無相関である。例えば、それを確認したい場合、$$0.4011\times(-0.3170) + 0.4210\times(-0.2255) + \cdots + 0.2542\times (0.5135) = 0$$と計算してみると良い。
その結果、最初の2つの主成分は、個々の成分の分散の合計、すなわち総分散の69% (49 + 20) を説明すると言える。もし成分が相関していたならば、それらは部分的に同じ情報を表していたことになり、組み合わせに含まれる情報は成分の情報の合計と等しくならない。8つの主成分全てを組み合わせると、全ての変数における全分散を説明する。したがって、第2パネルに示されている未説明の分散は全てゼロであり、最初のパネルの上部に示されているように、Rho = 1.00となる。
分散の85%が最初の4主成分に含まれているので、コマンドのオプション
pca lft* rght*, components(4)
でこれらの成分のみを保持することができる。
ただし、最初のパネルには影響はない。第2パネルには現在、最初の4つの主成分がリストされている。これらの4つの成分はデータ内の全ての情報を含んでいないため、一部の変数の分散が説明されていない、または未説明のままとなる。これらは、削除された成分の負荷量の二乗和に対応する固有値を掛けたものに等しい。全ての変数における未説明の分散は同程度のオーダーである。未説明の分散の平均は、全体の未説明分散である13% (1 − 0.87) に等しい。
主成分を詳しく見てみる。第1主成分は、全ての変数に対してほぼ同じ大きさの正の負荷量を持っている。これは、個人の耳の全体的な感度を表していると解釈できる。第2主成分は、高周波数に対して正の負荷量を、低周波数に対して負の負荷量を持っている。したがって、第2主成分は高周波数に対する感度と低周波数に対する感度を区別する。同様に、第3主成分は中周波数に対する感度と他の周波数に対する感度を区別する。最後に、第4主成分は左耳に対して負の負荷量を、右耳に対して正の負荷量を持っている。これは、左耳と右耳を区別するものである。
先に述べたように、第1主成分は全ての8つの変数に対して同様の負荷量を持っていた。これは、データが多変量正規分布に従うと仮定すれば検証できる。この場合、PCAは標準誤差および関連する統計量を推定できる。紙面を節約するために、最初の2つの主成分の結果のみを要求し、オプションvce(normal)を指定する。
pca l* r*, comp(2) vce(normal)
ここでは、PCAは推定コマンドのように機能する。出力は異なる方程式に整理されているのがわかる。最初の方程式には固有値が含まれている。「Comp1」と名付けられた第2方程式は第1主成分を表している。例えば、PCAは固有値の標準誤差を報告する。固有値の値をテストすることは、これまでの応用研究では稀かもしれないが、結果の解釈には安定性を考慮する必要がある。例えば、標準誤差が0.56であると分かっている場合に、第1固有値を3.929と報告するのはあまり意味がないだろう。
Scree plot
pcaを実行した後は、Scree plotを描くと良い。Stataでは以下のコマンドで簡単に描写できる。
screeplot, yline(1) ci(het)
回転について
これがメインの話。主成分分析における「rotate(回転)」とは、因子負荷量の構造を簡単にして解釈を容易にするための手法である。回転には主に以下の2つの種類がある。
- 直交回転(Orthogonal Rotation):因子が互いに直交する(無相関である)ことを前提とした回転方法。代表的な手法には、バリマックス(Varimax)、クオーティマックス(Quartimax)、エクイマックス(Equimax)などがある。バリマックス回転が最も一般的で、因子負荷量の分散を最大化し、各因子が数少ない変数に強く関連付けられるようにする。
- 斜交回転(Oblique Rotation):因子が相関することを許容する回転方法。代表的な手法には、プロマックス(Promax)やオブリミン(Oblimin)などがあります。斜交回転は因子間の相関を考慮するため、実際のデータ構造により忠実なモデルを提供することができる。
では、どのような場合に回転を行って、どのような場合に回転を行わないのであろうか。
- 回転を行う場合
解釈の容易さ:主成分の解釈を簡単にしたい場合。特に因子負荷量が複雑で、どの変数がどの因子に強く関連しているかを明確にしたい場合に役立つ。
因子分析:PCAを因子分析の一環として用いる場合。因子分析では、回転を行うことで因子構造が明確になり、結果の解釈が容易になる。 - 回転を行わない場合
分散の最大化:主成分が説明する分散の割合を最大化することが主要な目的である場合。回転を行うと、分散の割合が分散し、元の主成分の特徴が変わることがある。
主成分そのものの分析:主成分そのものを分析対象とする場合。回転を行うことで、主成分の特性が変わるため、元の主成分に基づいた分析が難しくなることがある。
どの手法を採用するにしても、まずpca分析を行い、rotateすれば良い。
pca var1 var2 var3 var4
rotate, varimax # バリマックス回転の場合
rotate, promax # プロマックス回転の場合
predict
最後に、主成分分析を行った後、各観測値に対して主成分スコアを計算する。
pca var1 var2 var3 var4 var5 var6 var7 var8
predict pc1 pc2 pc3 pc4
上記の例では、pc1, pc2, pc3, pc4という名前の新しい変数に、最初の4つの主成分スコアを保存する。これを用いて、回帰分析なりロジスティック回帰分析なりを行うと良い。
コメント