因子载荷 = R 输出中的特征向量?

机器算法验证 r 主成分分析
2022-04-07 11:26:17

我试图通过相关矩阵分析来理解使用 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

1个回答

但是,我的理解是载荷计算为特征向量和特征值平方根的乘积。

我取决于您使用的加载定义。载荷中princomp只是主成分的系数(回想一下,主成分是原始变量的线性组合),它们等于特征向量条目。这有一个不便之处:由于每个 PC 的方差等于相应的特征值,因此以这种方式定义的载荷不是 PC 和原始变量之间的相关性。通过特征值的平方根进行校正以将 PC 分数的方差标准化为 1,从而允许对载荷进行相关性解释。这些标准化载荷有时也称为载荷请参阅包中的示例PCA功能FactoMineR它从不使用单词加载,它使用单词坐标进行标准化加载

不仅累积方差和比例方差与初始输出不匹配

loadings函数不会给你累积和比例方差。它只是为您提供每台 PC 负载的平方和。这,根据定义,是 1。所以,你总是会看到这种输出。这听起来很荒谬,但当您将loadings函数应用于解释性因素分析时效果很好。在 PCA 中,输出的第二部分loadings根本没有用。

使用这些加载值,声称第一个组件捕获 66% 的方差是不可能的,因为数据集 (AF) 中的每个单个变量都有一个具有更高(绝对)加载的后续组件

实际上这是可能的,因为这里的负载只是特征向量而不是标准化的负载