2

関数内の固有ベクトルの符号は、引数eigenの指定によって変わります。symmetric次の例を検討してください。

set.seed(1234)
data <- matrix(rnorm(200),nrow=100)
cov.matrix <- cov(data)
vectors.1 <- eigen(cov.matrix,symmetric=TRUE)$vectors
vectors.2 <- eigen(cov.matrix,symmetric=FALSE)$vectors
#The second and third eigenvectors have opposite sign
all(vectors.1 == vectors.2)
FALSE

これは主成分分析にも影響を与えます。これは、関数が に設定された関数をprincomp使用して共分散行列の固有ベクトルを計算するように見えるためです。eigensymmetricTRUE

pca <- princomp(data)
#princomp uses vectors.1
pca$loadings
Loadings:
       Comp.1 Comp.2
 [1,] -0.366 -0.931
 [2,]  0.931 -0.366

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0
vectors.1
           [,1]       [,2]
[1,] -0.3659208 -0.9306460
[2,]  0.9306460 -0.3659208

誰かが不一致の背後にあるソースまたは理由を説明できますか?

4

3 に答える 3

2

固有ベクトル要素の符号を変更したい場合は、$\mathbf{1}^T\mathbf{e}>1$ であることを確認してください。つまり、各固有ベクトルのすべての要素を合計し、合計が 1 より大きいことを確認します。そうでない場合は、各要素の符号を反対の符号に変更します。これは、PCA で固有ベクトル要素、主成分、およびローディングの符号を取得して、ほとんどの統計ソフトウェアと同じようにするためのトリックです。

于 2016-07-03T18:28:10.013 に答える