4

私は PCA 分析に出くわし、R のさまざまな関数によって返されるさまざまな値に気付きました。この質問の意図は、それぞれの出力を明確にすることです。これらの関数が異なる値を返す理由について、満足のいく答えが見つかりませんでした。比較される関数はstats::princomp()、 、stats::prcomp()psych::principal()、およびFactoMineR::PCA()です。データセットは比較のため にスケーリングされ中央に配置され、すべてのセットが 4 つのコンポーネントを返すように設定されていますが、簡潔にするためにここでは最初の 2 つの PC のみが示されています。

MWE以下は、ケースを設定するコードです。ここでその出力を 1 か所で比較することが役立つと思われる R の他の関数を自由に報告してください。

princompPCA <- princomp(USArrests, cor = TRUE)
prcompPCA <- prcomp(USArrests,scale.=TRUE)
principalPCA <- principal(USArrests, nfactors=4 , scores=TRUE, rotate = "none",scale=TRUE) 
library(FactoMineR)
fmrPCA <- PCA(USArrests, ncp=4, graph=FALSE) # vars scaled data
# now the first two PCs from each package into one data frame
dfComp <- cbind.data.frame(princompPCA$scores[,1:2],prcompPCA$x[,1:2],principalPCA$scores[,1:2],fmrPCA$ind$coord[,1:2])
names(dfComp) <- c("princompDim1","princompDim2","prcompDim1","prcompDim2","principalDim1","principalDim2","fmrDim1","fmrDim2")
head(dfComp)

出力:

           princompDim1 princompDim2 prcompDim1 prcompDim2 principalDim1 principalDim2    fmrDim1    fmrDim2
Alabama      -0.9855659    1.1333924 -0.9756604  1.1220012    0.61951483    -1.1277874  0.9855659 -1.1333924
Alaska       -1.9501378    1.0732133 -1.9305379  1.0624269    1.22583308    -1.0679059  1.9501378 -1.0732133
Arizona      -1.7631635   -0.7459568 -1.7454429 -0.7384595    1.10830334     0.7422678  1.7631635  0.7459568
Arkansas      0.1414203    1.1197968  0.1399989  1.1085423   -0.08889509    -1.1142591 -0.1414203 -1.1197968
California   -2.5239801   -1.5429340 -2.4986128 -1.5274267    1.58654347     1.5353037  2.5239801  1.5429340
Colorado     -1.5145629   -0.9875551 -1.4993407 -0.9776297    0.95203595     0.9826713  1.5145629  0.9875551

の出力は、逆符号を除いてstats::princomp()まったく同じであることに気付きました。FactoMineR::PCA()兆候が反映されている理由は何ですか?これら 2 つの関数の両方の出力が に近づいていますstats::prcomp()が、これは浮動小数点の問題が原因である可能性があり、マイナーな問題です。しかしpsych::principal()、他のものとはかなり異なります。上記の機能間の回転の違いが原因でしょうか? したがって、これらの違いについての説明は大歓迎です。

4

2 に答える 2

2

PCA の結果は、軸に沿ったベクトルです。符号が反転した数字は、同じ軸に沿って反対方向を向いているベクトルです。したがって、得られる結果は同じです。

その他の違いは、主成分の計算方法の違い、つまり相関行列の固有ベクトルを使用する方法、または特異ベクトル分解を使用する方法が原因である可能性があります。しかし、私はここで推測しています。

于 2013-11-05T12:55:07.880 に答える
0

同じ情報を探していたところ、次のリンクが役に立ちました。

https://groups.google.com/forum/#!topic/factominer-users/BRN8jRm-_EM

FactoMiner はロードではなく PCA 座標を出力し、しばらくの間私を混乱させました....

于 2013-11-20T15:07:32.723 に答える