【R】いろいろ模索で主成分分析
今回も雑多なこと。
統計的意味は正直ないね。
> princomp(random.matrix,cor=FALSE,scores=TRUE) Call: princomp(x = random.matrix, cor = FALSE, scores = TRUE) Standard deviations: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 12.022068 6.228375 4.309915 3.408246 2.950228 2.734045
主成分分析の結果のサマリー。
> summary(random.pc) Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Standard deviation 12.0220681 6.2283751 4.30991545 3.40824574 2.95022785 2.73404497 Proportion of Variance 0.6292314 0.1688891 0.08087038 0.05057243 0.03789336 0.03254343 Cumulative Proportion 0.6292314 0.7981204 0.87899079 0.92956321 0.96745657 1.00000000
累積寄与率(Cumulative Proportion)は第5主成分までで96%。
もともとrandom.matrixは6成分だった。
> ncol(random.matrix) [1] 6
累積寄与率が90%以上を信頼するならば、6変数→4変数と縮約できるが、95%以上を信頼するならば6変数→5変数なので、1変数しか減らすことができない。
さて、主成分(分散共分散行列の固有値問題を解いて得られた固有ベクトル)を見てみよう。
> random.pc$loadings Loadings: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 one -0.243 0.374 -0.584 0.501 0.349 -0.297 two -0.459 0.480 -0.206 -0.218 -0.381 0.569 three -0.519 0.254 0.393 -0.364 -0.616 four -0.495 -0.230 0.440 0.362 0.463 0.404 five -0.408 -0.564 -0.187 0.297 -0.592 -0.204 six -0.224 -0.441 -0.484 -0.591 0.409
Rでは、主成分得点を関数princompで求めた結果の$scoresに格納している*1。
> head(random.pc$scores) Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 [1,] 17.430572 2.5096292 -0.54592822 0.8466141 -6.011858 -0.4872012 [2,] 10.170771 0.1808665 0.09161262 -8.9922413 5.497974 1.5588625 [3,] 2.078003 -10.7710836 4.97828641 3.6390118 1.164071 0.9663781 [4,] -10.878712 5.0440660 -4.49454009 1.0742117 1.828457 -3.9581040 [5,] 2.318114 9.8687333 3.60742326 3.6173561 -2.189279 -1.4451806 [6,] -0.258066 2.3812496 2.61292749 -2.8504351 2.373735 -2.2566297 ・・・・・・・・・・・・・・
*1:関数princompによる結果は、各主成分得点の平均が0になるように変換されている。