アルゴリズム (主成分分析)

内容

  1. 1 リストワイズで欠損値を除く
    1. 1.1 分析の行列タイプ
    2. 1.2 計算する値
  2. 2 ペアワイズで欠損値を除く
  3. 3 バーレット検定


主成分分析は変数間の関係を調べます。これにより、例えば変数の数を回帰やクラスター分析などで減らすことができます。

主成分分析内の主成分は変数とそれに対するの最大分散との関係を線形で表わしています。X個の変数を持つ個の観測値とし、この共分散の行列はSとなります。ここで変数間の線形の関係は次のようになります。

z_1=\sum_{i=1}^p a_{1i}x_i

 x_i\ i 番目の変数に、a_{1i} \ i=1,2,...,pz_1\ の線形関係の係数となり、これらは列ベクトルa_1\ として示され、a_1^Ta_1=1で正規化されます。 z_1\ の分散はa_1^TSa_1となります。

 a_1\ ベクトルは分散を最大にすることで見つけることができます。z_1\ は第一主成分と呼ばれています。第二主成分は次の物を最大化することで同じように見つけることができます。

 a_2^Ta_2=1 a_2^Ta_1=0a_2^TSa_2を制約している主要因です。

これは第二主成分が第一主成分とは直交関係にあることを示しています。残りの主成分は同様の方法で算出することができます。係数 a_1, a_2, ..., a_p\ は行列Sの固有ベクトルから計算できます。Originは欠損値を取り除くためにいくつかの手法を用いています。

リスト形式で欠損値を除く

欠損値がある観測データは分析から除外されます。SVD用の行列 X_s\ は分析の行列タイプによりXから算出されます。

分析の行列タイプ

 X_s\ を行列Xとして各列の平均が各変数から引かれ、各列は \frac{1}{\sqrt{n-1}} によってスケールされます。
 X_s\ を行列Xとして各列の平均が各変数から引かれ、各列は\frac{1}{\sqrt{n-1}\sigma_i}によってスケールされます。\sigma_i\ i番目の標準偏差になります。

計算する値

SVD X_s\ で実行します。

X_s=V\Lambda P^T\

ここでVV^TV=I\ と共にあるp行列ので、Pp行列ので、 \Lambda は対角要素s_i \ i=1, 2, ..., pを含む対角行列です。

\lambda_i=s_i^2
下降順に固有値は保存されています。i 番目の分散が主成分によって広がった割合は\lambda_i/\sum_{k=1}^p \lambda_kです。
固有ベクトルは付加、または主成分の係数として知られています。各列のPは固有値または主成分と関連している固有ベクトルです。
固有ベクトルの符号はSVDにのみ特殊になっているわけではありません。Originは必ず足してプラスになるようにすることでこの符号を正規化しています。
各列の \sqrt{n-1}V\Lambda は主成分と関連しているスコアです。欠損値を含む観測値があった場合、これらの値と対応するスコアも欠損値になります。
この手法では各主成分と対応している分散のスコアは対応している固有値と同じになります。
各主成分のスコアはユニット分散を持つように正規化されています。

ペア形式で欠損値を除く

観測値は共分散や係数を計算する2つの変数の中で欠損値がどちらか一方にでもあるときに計算する場合のみ除かれます。

固有値と固有ベクトルは行列Sの共分散または係数から計算されます。

SP=PD\

Pp行列ので、Dは対角要素 \lambda_i \ i=1, 2, ..., p がある対角行列です。

\lambda_i\ i 番目の主成分の固有値です。下降順に固有値は保存されています。
固有値はペア形式で除かれた欠損値に対してはマイナスで表示されます。これは主成分ではまったく意味を成しません。固有値がマイナスになったものは付加とスコアをゼロにします。
各列のPは固有値または主成分と関連している固有ベクトルです。
固有ベクトルの符号は特殊になっているわけではありません。Originは必ず足してプラスになるようにすることでこの符号を正規化しています。
V=X_0P\
 X_0\  は行列Xから各列の平均を引いた値になります。
欠損値を含む観測値があった場合、これらの値と対応するスコアも欠損値になります。
この手法では各主成分と対応している分散のスコアは対応している固有値と同じになりません。
各主成分に対するスコアはその固有値の2ルートを取ってスケールされています。

バーレット検定

バーレット検定は残りの固有値p-kを等しくしています。これは分析行列が共分散行列であるときのみ使用できます。

H_0:\lambda_{k+1}=\lambda_{k+2}=...=\lambda_{p} k=0, 1, ..., p-2\

自由度 \frac{1}{2}(p-k-1)(p-k+2)  で \chi_2\ 分散をおおよそで計算しています。

(n-1-(2p+5)/6)\Big\{-\sum_{i=k+1}^p \mathrm{log}(\lambda_i)+(p-k)\mathrm{log}(\sum_{i=k+1}^p \lambda_i/(p-k))\Big\}