データ行列Mが与えられると、pc = prcomp(M)はpc $ rotation(固有ベクトルの行列)とpc $ x、pca空間の元の変数のスコアを提供します。ただし、私が取得したスコアは、「手作業」で計算された内積と一致しません。
たとえば、私がマトリックスを持っている場合
m1=matrix(c(1,2,3,4,4,8,7,9,5,3,2,11),byrow=TRUE,nrow=3)
pctest=prcomp(m1)
pctest $ x、pctest$rotationに対してそれぞれ以下を返します。
Rotation:
PC1 PC2 PC3
[1,] -0.3751603 0.3133237 -0.5240612
[2,] -0.5810952 -0.4802203 0.5681371
[3,] -0.3471051 -0.5836868 -0.6211215
[4,] -0.6333255 0.5749142 0.1295694
pctest$x
PC1 PC2 PC3
[1,] 5.11167 -1.326545 -1.110223e-16
[2,] -4.05543 -2.728072 -1.942890e-15
[3,] -1.05624 4.054616 2.831069e-15
ここで、PCA軸2の変数1のスコア(たとえば)は、pctest $ rotation[、2]のm1 [1、]の内積である必要があります。
m1[1,]%*%pctest$rotation[,2]
[,1]
[1,] -0.09852071
pctest $ x [1,2]ではなく、-1.3265
これは単なるスケーリングの問題ですか、それとも$ xは元の変数のPCA軸への射影以外のものを返しますか?