Когда вы используете components <- prcomp(iris[,1:4)
для получения основных компонентов, вы можете использовать components$sdev
, чтобы получить эти значения, как вы делали выше.
data("iris")
iris
components<-prcomp(iris[,1:4]
components$sdev
2.0562689 0.4926162 0.2796596 0.1543862
Эти четыре значения из PCA пропорциональны «диагональной матрице», что эквивалентно svd$d
в разложении по сингулярному значению. Эта пропорция объясняется тем, что SVD
не учитывает количество выборок, как sdev
при расчете дисперсии. Но это стандартизированные единичные значения из PCA.
И результирующие данные из components$rotation
с использованием prcomp()
эквивалентны V matrix
:
PC1 PC2 PC3 PC4
Sepal.Length 0.36138659 -0.65658877 0.58202985 0.3154872
Sepal.Width -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length 0.85667061 0.17337266 -0.07623608 -0.4798390
Petal.Width 0.35828920 0.07548102 -0.54583143 0.7536574
Если вам нужен компонент U
, вы можете использовать components$x
PC1 PC2 PC3 PC4
[1,] -2.684125626 -0.319397247 0.027914828 0.0022624371
[2,] -2.714141687 0.177001225 0.210464272 0.0990265503
[3,] -2.888990569 0.144949426 -0.017900256 0.0199683897
[4,] -2.745342856 0.318298979 -0.031559374 -0.0755758166
[5,] -2.728716537 -0.326754513 -0.090079241 -0.0612585926
[6,] -2.280859633 -0.741330449 -0.168677658 -0.0242008576
[7,] -2.820537751 0.089461385 -0.257892158 -0.0481431065
[8,] -2.626144973 -0.163384960 0.021879318 -0.0452978706
[9,] -2.886382732 0.578311754 -0.020759570 -0.0267447358...(there is more)