9

前もって感謝します。「FactoMineR」パッケージの「PCA」関数を使用して、主成分スコアを取得しました。このフォーラムでパッケージの詳細と同様の質問を読んでみましたが、抽出されたコンポーネントを回転させるコードがわかりません (直交または斜め)。

「princomp」関数と「psych」パッケージの「principal」関数にはローテーション機能があることは知っていますが、変数を単位分散にスケーリングする「PCA」の機能が本当に気に入っています。どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

3

IIUC:

library(FactoMineR)
data(iris)
Iris <- iris[,1:4]
res <- PCA(Iris, graph=F)
#rotation
t(apply(res$var$coord, 1, function(x) {x/sqrt(res$eig[,1])}))
                  Dim.1      Dim.2      Dim.3      Dim.4
Sepal.Length  0.5210659 0.37741762 -0.7195664 -0.2612863
Sepal.Width  -0.2693474 0.92329566  0.2443818  0.1235096
Petal.Length  0.5804131 0.02449161  0.1421264  0.8014492
Petal.Width   0.5648565 0.06694199  0.6342727 -0.5235971

#check
prcomp(Iris, scale=T)
Rotation:
                    PC1         PC2        PC3        PC4
Sepal.Length  0.5210659 -0.37741762  0.7195664  0.2612863
Sepal.Width  -0.2693474 -0.92329566 -0.2443818 -0.1235096
Petal.Length  0.5804131 -0.02449161 -0.1421264 -0.8014492
Petal.Width   0.5648565 -0.06694199 -0.6342727  0.5235971

PCAオブジェクトから負荷を取得する場合の代替コード行:

sweep(res$var$coord, 2, sqrt(res$eig[,1]),'/')
于 2016-06-27T15:07:47.223 に答える