Извлечение ковариации из princomp() в R

Я хочу извлечь ковариацию после выполнения PCA в моем наборе данных. У меня есть ежемесячные возвраты SnP500, и я хотел бы провести PCA на нем. Но я ищу только ковариации. Есть ли способ извлечь эту информацию из функций prcomp() или princomp() в R? Я очень благодарен за помощь.

-Ваше здоровье


r pca
person Rambo223    schedule 13.03.2014    source источник


Ответы (1)


> 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
person Rich Scriven    schedule 13.03.2014
comment
Спасибо @RScriv. Нет ли способа получить cov из самой функции princomp()? Я не хочу использовать функцию cov(). - person Rambo223; 13.03.2014