PCA 或 FA 中的分数或负荷符号是否有意义?我可以把标志倒过来吗?

机器算法验证 r 主成分分析 因子分析 常问问题
2022-01-25 10:29:37

我使用两个不同的函数 (prcompprincomp) 对 R 进行了主成分分析 (PCA),并观察到 ​​PCA 分数的符号不同。怎么可能?

考虑一下:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

为什么+/-两个分析的符号 ( ) 不同?如果我当时在回归中使用主成分PC1PC2预测变量,即lm(y ~ PC1 + PC2),这将完全改变我对这两个变量的影响的理解,y具体取决于我使用的方法!那么我怎么能说它对PC1有积极影响yPC2对 有消极影响y


另外:如果PCA分量的符号没有意义,因子分析(FA)也是如此吗?翻转(反转)单个 PCA/FA 组件分数(或负载,作为负载矩阵的列)的符号是否可以接受?

4个回答

PCA 是一种简单的数学变换。如果更改分量的符号,则不会更改第一个分量中包含的方差。此外,当您更改符号时,权重 ( prcomp( ... )$rotation) 也会更改符号,因此解释保持完全相同:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

节目

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

pca2$loadings显示

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

那么,为什么解释保持不变?

y对组件 1 进行 PCA 回归。在第一个版本 ( prcomp) 中,假设系数为正:组件 1 越大,y 越大。当涉及到原始变量时,这意味着什么?由于变量 1(1:10在 a 中)的权重为正,这表明变量 1 越大,y 越大。

现在使用第二个版本 ( princomp)。由于分量的符号发生了变化,y 越大,分量 1 越小——PC1 上的 y< 系数现在为负。但是变量 1 的加载也是如此;也就是说,变量 1 越大,分量 1 越小,y 越大——解释是一样的。

可能,最简单的方法是使用双标图。

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

节目

在此处输入图像描述

第二个变体的相同双标图显示

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

如您所见,图像旋转了 180°。但是,权重/载荷(红色箭头)和数据点(黑点)之间的关系是完全相同的;因此,组件的解释是不变的。

在此处输入图像描述

这个问题在这个论坛上被问了很多,所以我想用更一般的考虑来补充@January 的优秀答案。

在主成分分析 (PCA) 和因子分析 (FA) 中,我们使用原始变量来估计几个潜在成分(或潜在变量)这些潜在成分由 PCA 或 FA 成分分数给出。每个原始变量都是这些分量与一些权重的线性组合:例如,第一个原始变量可能很好地近似为的三倍,因此如果分数是标准化的,那么这些权重()称为负荷。所以,非正式地说,可以这样说x1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

OriginalvariablesScoresLoadings.

从这里我们可以看到,如果我们取一个潜在组件,例如,并翻转其分数负载的符号,那么这将不会影响结果(或解释),因为z1

11=1.

结论是,对于每个 PCA 或 FA 组件,其分数和负载的符号是任意且无意义的。它可以翻转,但前提是分数和载荷的符号同时反转。

上面已经很好地回答了这个问题。只是为了提供一些进一步的数学相关性,主成分作用的方向对应于系统的特征向量。如果你得到一个正或负的 PC,这只是意味着你正在投影一个指向一个方向的特征向量或180远离另一个方向。无论如何,解释保持不变!还应该补充一点,主成分的长度只是特征值。

很容易看出,在使用 PCA 进行分类或聚类时,分数的符号并不重要。但这似乎对回归很重要。考虑一种情况,您只有一个主成分或多个变量的一个共同因素。然后 lm(y ~ PC1) 会给你与 lm(y ~ -PC1) 相比不同的 y 预测。如果 y 和 PC1 具有正线性关系,则 y 和 -PC1 具有负线性关系。也许对于回归,您应该考虑这里讨论的其他替代方案,例如套索回归。