关于PCA R语言的问题

quesstion about PCA R language

我是R大一新生,想展示协方差矩阵Σ与特征向量和特征值之间的关系。 我知道 Σ 可以分解为: ∃P, ∃D: Σ = P. D. P' with P 特征向量矩阵和 D 对角矩阵,其对角元素为 相应的特征值。但是我的结果和协方差不一样 matrix.My Σ 等于相关矩阵。 这是我的代码:

> data<-scale(swiss,center=T,scale=F)
> test<-princomp(data,cor=T)
> D=test$sdev
> Var=D^2
> Var
> Var=diag(Var)
> Loa=test$loadings
> Loa
>  Loa=Loa[1:6,1:6]
> sigma= Loa %*% Var %*% t(Loa)
> sigma
                  Fertility Agriculture Examination   Education   Catholic Infant.Mortality
Fertility         1.0000000  0.35307918  -0.6458827 -0.66378886  0.4636847       0.41655603
Agriculture       0.3530792  1.00000000  -0.6865422 -0.63952252  0.4010951      -0.06085861
Examination      -0.6458827 -0.68654221   1.0000000  0.69841530 -0.5727418      -0.11402160
Education        -0.6637889 -0.63952252   0.6984153  1.00000000 -0.1538589      -0.09932185
Catholic          0.4636847  0.40109505  -0.5727418 -0.15385892  1.0000000       0.17549591
Infant.Mortality  0.4165560 -0.06085861  -0.1140216 -0.09932185  0.1754959       1.00000000

> cov(data)
                 Fertility Agriculture Examination   Education   Catholic Infant.Mortality
Fertility        156.04250  100.169149  -64.366929  -79.729510  241.56320        15.156193
Agriculture      100.16915  515.799417 -124.392831 -139.657401  379.90438        -4.025851
Examination      -64.36693 -124.392831   63.646623   53.575856 -190.56061        -2.649537
Education        -79.72951 -139.657401   53.575856   92.456059  -61.69883        -2.781684
Catholic         241.56320  379.904376 -190.560611  -61.698830 1739.29454        21.318116
Infant.Mortality  15.15619   -4.025851   -2.649537   -2.781684   21.31812         8.483802
> 

谁能解释一下我的问题出在哪里?非常感谢。

您明确告诉 princomp 在这一行中使用 cor 关系矩阵:

test<-princomp(data,cor=T)

如果您省略参数而只使用 test <- printcomp(data),它将使用协方差矩阵,您将得到(大致)您期望的结果。