主成分分析输出的结论

机器算法验证 r 主成分分析 解释
2022-03-31 14:08:12

我试图了解执行如下主成分分析的输出:

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> res = prcomp(iris[1:4], scale=T)
> res
Standard deviations:
[1] 1.7083611 0.9560494 0.3830886 0.1439265

Rotation:
                    PC1         PC2        PC3        PC4
Sepal.Length  0.5210659 -0.37741762  0.7195664  0.2612863
Sepal.Width  -0.2693474 -0.92329566 -0.2443818 -0.1235096
Petal.Length  0.5804131 -0.02449161 -0.1421264 -0.8014492
Petal.Width   0.5648565 -0.06694199 -0.6342727  0.5235971
> 
> summary(res)
Importance of components:
                          PC1    PC2     PC3     PC4
Standard deviation     1.7084 0.9560 0.38309 0.14393
Proportion of Variance 0.7296 0.2285 0.03669 0.00518
Cumulative Proportion  0.7296 0.9581 0.99482 1.00000
> 

我倾向于从上面的输出中得出以下结论:

  1. 方差的比例表示特定主成分的方差中有多少总方差。因此,PC1 变异性解释了数据总方差的 73%。

  2. 显示的旋转值与某些描述中提到的“载荷”相同。

  3. 考虑到PC1的旋转,可以得出Sepal.Length、Petal.Length和Petal.Width是直接相关的,并且它们都与Sepal.Width负相关(在PC1的旋转中具有负值)

  4. 植物中可能存在一个因素(一些化学/物理功能系统等),它可能会影响所有这些变量(一个方向的萼片长度、花瓣长度和花瓣宽度,相反方向的萼片宽度)。

  5. 如果我想在一张图中显示所有旋转,我可以通过将每个旋转乘以该主成分的方差比例来显示它们对总变化的相对贡献。例如,对于 PC1,0.52、-0.26、0.58 和 0.56 的旋转都乘以 0.73(PC1 的比例方差,显示在 summary(res) 输出中。

我对上述结论是否正确?

关于问题 5 的编辑:我想在一个简单的条形图中显示所有旋转,如下所示:在此处输入图像描述

由于 PC2、PC3 和 PC4 对变化的贡献越来越小,在那里调整(减少)变量的负载是否有意义?

2个回答
  1. 是的。这是正确的解释。
  2. 是的,旋转值表示组件加载值。prcomp 文档证实了这一点,尽管我不确定他们为什么将这部分标记为“旋转”,因为这意味着负载已经使用某种正交(可能)或倾斜(不太可能)方法进行了旋转。
  3. 虽然 Sepal.Length、Petal.Length 和 Petal.Width 似乎都是正相关的,但我不会在 PC1 上的 Sepal.Width 的小负加载中投入那么多库存;它在 PC2 上加载得更强烈(几乎完全)。需要明确的是,Sepal.Width 仍然可能与其他三个变量负相关,但它似乎与第一主成分的关系并不密切。
  4. 基于这个问题,我想知道使用公因子 (CF) 分析而不是主成分分析 (PCA) 是否会更好地为您服务。当您的目标是发现有意义的理论维度(例如您假设的植物因子可能会影响 Sepal.Length、Petal.Length 和 Petal.Width)时,CF 更像是一种适当的数据缩减技术。我很欣赏你来自某种生物科学——也许是植物学——但是 Fabrigar 等人在 1999 年,Widaman,2007 年和其他人的 PCA 与 CF 区分上有一些很好的心理学著作。两者之间的核心区别在于,PCA 假设所有方差都是真实分数方差——假设没有错误——而 CF 在提取因子和估计因子载荷之前将真实分数方差与误差方差分开。最终,您可能会得到一个看起来相似的解决方案——人们有时会这样做——但是当它们出现分歧时,往往是 PCA 高估了加载值,而低估了组件之间的相关性。CF 方法的另一个好处是,您可以使用最大似然估计来执行负载值的显着性检验,同时还可以获得一些指标来说明您选择的解决方案(1 个因素、2 个因素、3 个因素或 4 个因素)解释您的数据。
  5. 我会像你一样绘制因子加载值,而不用它们各自分量的方差比例来加权它们的条形。我理解您想通过这种方法尝试展示什么,但我认为这可能会导致读者误解您分析中的组件加载值。但是,如果您想要一种直观的方式来显示每个组件所解释的相对方差大小,您可以考虑操纵组条的不透明度(如果您使用ggplot2,我相信这是通过alpha美学),基于每个组件解释的方差比例(即,更多纯色 = 解释更多方差)。但是,根据我的经验,您的数字不是呈现 PCA 结果的典型方式——我认为一两个表(负载+方差在一个中解释,组件相关性在另一个中)会更直接。

参考

Fabrigar, LR, Wegener, DT, MacCallum, RC 和 Strahan, EJ (1999)。评估探索性因素分析在心理学研究中的应用。心理学方法4,272-299

威达曼,KF(2007 年)。共同因素与组成部分:原则和原则、错误和误解R. Cudeck & RC MacCallum (Eds.), Factor analysis at 100: Historic development and future Directions (pp. 177-203)。新泽西州马瓦:劳伦斯·厄尔鲍姆。

  1. 不,不是数据的总方差。给定数据的总方差,您想用 4 个主成分来表示它。通过添加更多的主成分,您总是可以找到更多的总方差。但这会迅速衰减。