特征向量的符号根据对称矩阵的对称参数的规范而变化

cha*_*ler 2 r

函数中特征向量的符号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
Run Code Online (Sandbox Code Playgroud)

这对于主成分分析也有影响,因为该函数似乎使用设置为 的函数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
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下差异背后的根源或原因吗?

Bit*_*ise 5

特征向量乘以标量(包括 -1)后仍然是特征向量。

证明很简单:

如果是具有匹配特征值 的v矩阵的特征向量,则根据定义。AcAv=cv

然后,A(-v) = -(Av) = -(cv) = c(-v)-v具有相同特征值的特征向量也是如此。

最重要的是,这并不重要,也不会改变任何事情。