【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
・・・・・・・・・・・・・・

biplot(random.pc)の結果。

*1:関数princompによる結果は、各主成分得点の平均が0になるように変換されている。