我试图通过相关矩阵分析来理解使用 R(princomp 或 prcomp,我得到类似的结果)的主成分分析。特别是,我无法理解因子载荷输出。
数据位于名为 ds 的数据框中。这是相关矩阵的特征值/向量分析。
> eigen(cor(ds))
$values
[1] 3.9831253 0.5483985 0.4520555 0.4191041 0.3506337 0.2466829
$vectors
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.4292649 0.2561060 -0.298728176 0.2474691 0.3939538 0.66668007
[2,] -0.3938608 0.7037562 -0.066953299 0.1803110 -0.4130921 -0.37677712
[3,] -0.4060290 0.1537541 0.365977815 -0.7055394 0.4027306 -0.13259964
[4,] -0.4166136 -0.4038936 -0.004352731 0.4760061 0.3984587 -0.52719349
[5,] -0.3951931 -0.4041873 -0.621151418 -0.3939178 -0.3732825 -0.01071668
[6,] -0.4074327 -0.2983273 0.621683956 0.1634262 -0.4624437 0.34343296
现在,当我要求进行主成分分析时,我得到以下初始输出。
> pca.out <- princomp(ds, cor=TRUE)
> summary(pca.out)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
Standard deviation 1.9957769 0.74053931 0.67235070 0.64738253 0.59214334 0.49667185
Proportion of Variance 0.6638542 0.09139974 0.07534258 0.06985069 0.05843896 0.04111382
Cumulative Proportion 0.6638542 0.75525396 0.83059653 0.90044722 0.95888618 1.00000000
考虑到 eigen() 函数的输出,这一切都说得通。
但是,我的理解是载荷计算为特征向量和特征值平方根的乘积。当我向 pca 索取负载时,我得到了
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
A -0.429 0.256 -0.299 0.247 -0.394 0.667
B -0.394 0.704 0.180 0.413 -0.377
C -0.406 0.154 0.366 -0.706 -0.403 -0.133
D -0.417 -0.404 0.476 -0.398 -0.527
E -0.395 -0.404 -0.621 -0.394 0.373
F -0.407 -0.298 0.622 0.163 0.462 0.343
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
SS loadings 1.000 1.000 1.000 1.000 1.000 1.000
Proportion Var 0.167 0.167 0.167 0.167 0.167 0.167
Cumulative Var 0.167 0.333 0.500 0.667 0.833 1.000
不仅累积方差和比例方差与初始输出不匹配,而且载荷仅与特征向量匹配,没有对特征值进行调整。此外,使用这些加载值,声称第一个组件捕获 66% 的方差是不可能的,因为数据集 (AF) 中的每个单个变量都有一个具有更高(绝对)加载的后续组件。
有人可以解决我的困惑/错误吗?作为记录,我正在运行 R 版本 3.3.3