从R中的princomp()中提取协方差

时间:2014-03-13 10:39:10

标签: r pca

我希望在我的数据集上执行PCA之后提取协方差。我有月度回报的SnP500,并希望在其上执行PCA。但我只是在寻找协方差。有没有办法从R中的prcomp()或princomp()函数中提取此信息。我真的很感激帮助。

-Cheers

1 个答案:

答案 0 :(得分:0)

> data(USArrests)

协方差矩阵是缩放和旋转后的对角矩阵diag(sdev^2)

> sdev <- prcomp(USArrests, scale = TRUE)$sdev
> diag(sdev^2)
##          [,1]      [,2]      [,3]      [,4]
## [1,] 2.480242 0.0000000 0.0000000 0.0000000
## [2,] 0.000000 0.9897652 0.0000000 0.0000000
## [3,] 0.000000 0.0000000 0.3565632 0.0000000
## [4,] 0.000000 0.0000000 0.0000000 0.1734301

我们可以看到,当没有缩放时,它与特征值相同。

> diag(prcomp(USArrests)$sdev^2)
##          [,1]     [,2]     [,3]     [,4]
## [1,] 7011.115   0.0000  0.00000 0.000000
## [2,]    0.000 201.9924  0.00000 0.000000
## [3,]    0.000   0.0000 42.11265 0.000000
## [4,]    0.000   0.0000  0.00000 6.164246

> C1 <- cov(USArrests)
> eigen(C1)$values
## [1] 7011.114851  201.992366   42.112651    6.164246