R特征值/特征向量

时间:2013-11-20 14:22:43

标签: r

我有这个相关矩阵

 A
[,1]  1.00000 0.00975 0.97245 0.43887 0.02241
[,2]  0.00975 1.00000 0.15428 0.69141 0.86307
[,3]  0.97245 0.15428 1.00000 0.51472 0.12193
[,4]  0.43887 0.69141 0.51472 1.00000 0.77765
[,5]  0.02241 0.86307 0.12193 0.77765 1.00000

我需要在R中获得特征值,特征向量和载荷。

当我使用princomp(A,cor=TRUE)函数时,我得到方差(特征值) 但是当我使用eigen(A)函数时,我得到了特征值和特征向量,但在这种情况下,特征值与使用Princomp函数时的特征值不同。

哪个函数是获得特征值的正确函数?

2 个答案:

答案 0 :(得分:1)

eigen(M)为您提供正确的特征值和M的向量。

princomp()将被交给数据矩阵 - 你错误地将它提供给相关矩阵!

princomp(A,)将A视为数据,然后提出相关矩阵及其特征向量和值。因此,A的特征值(如果A保持所谓的数据)不仅无关紧要,它们当然与最终的princomp()不同。

有关在R中执行PCA的说明,请参阅此处:http://www.joyofdata.de/blog/illustration-of-principal-component-analysis-pca/

答案 1 :(得分:1)

当你谈到特征值,特征向量和载荷时,我相信你指的是PCA分析。 prcomp基本上执行以下操作(cor=TRUE时):

###Step1
#correlation matrix
Acs <- scale(A, center=TRUE, scale=TRUE)
COR <- (t(Acs) %*% Acs) / (nrow(Acs)-1)
COR ; cor(Acs) # equal

###STEP 2
# Decompose matrix using eigen() to derive PC loadings
E <- eigen(COR)
E$vectors # loadings
E$values # eigen values

###Step 3
# Project data on loadings to derive new coordinates (principal components)
B <- Acs %*% E$vectors