主成分分析をきちっと理解する〜Rをうまく使う〜
まず、はじめてわかったことがひとつ。
それは主成分分析といってもやり方がふたつあるということ。
ひとつは相関係数行列を用いるやり方。
もうひとつは分散共分散行列を用いるやり方。
Rでは主成分分析用の関数にprincompが用意されているが、princompのcorの引数をいじることで相関係数行列を使うかor分散共分散行列を使うか。のどちらかが選べる。
cor=TRUE 相関係数行列
cor=FALSE 分散共分散行列
(不偏相関行列とか不偏分散共分散とか説明してあるのもよく見るが違いがわからない)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
princomp関数はすべてを自動でやってくれるが、それだと数学的でない気がする。
やはり、しっかり理解するにはちゃんとステップを踏みたい。
そういう時には、固有値分解を行い関数 eigen()と相関係数行列を求める関数のcor()と分散共分散行列を求める関数のcov()を組み合わせればよい。
数学的なステップはもう少し細かいが、大きくみたら
・分散共分散行列をつくる( or 相関係数行列)
・ 行列を固有値分解する
の2つに分かれるからだ。
Rなら
> eigen(cov(データの範囲))
あとは大きい固有値に対応した固有ベクトルを軸として選んでやれば大丈夫だ。
参考になるのが
http://www.kkaneko.com/rinkou/r/rprinc.html
princom関数と、corとcovとeigen関数を組み合わせたやり方。そのすべてを紹介している。
http://wakuteka.info/R/110801
corとeigenの組み合わせで説明している。
http://homepage2.nifty.com/nandemoarchive/GLM/tahenryou_02_PCA.htm
princompしか説明はしていないが、実務的な使い方は説明しているように思う。
ところで、主成分負荷量って「主成分と元の変数の相関係数」で「主成分に強い関係を持つ因子を選ぶ時」に使うらしいが、それって寄与率と違うんだろう?
わかっていない。
そろそろPCAの理解は終わって、次はLSIの理解に移らないと.....