哪些变量解释了哪些PCA组件,反之亦然?


15

使用此数据:

head(USArrests)
nrow(USArrests)

我可以这样进行PCA:

plot(USArrests)
otherPCA <- princomp(USArrests)

我可以在中获得新组件

otherPCA$scores

和方差的比例由组件解释

summary(otherPCA)

但是,如果我想知道哪些变量主要由哪些主要成分来解释?反之亦然:例如PC1或PC2是否主要由解释murder?我怎样才能做到这一点?

例如,我可以说PC1是由murder或解释的80%assault吗?

我认为载荷在这里对我有帮助,但它们显示的是方向性,而不是我理解的方差,例如

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   

2
请注意,加载的符号是任意的。这三个犯罪变量之间都是正相关的,但是从上述负载的迹象来看,您将很聪明地进行操作。
尼克·考克斯

不幸的是,我认为这个问题的答案是错误的。我在下面发布了自己的答案。
变形虫说莫妮卡(

Answers:


11

没错,货物可以在这里为您提供帮助。它们可用于计算变量和主成分之间的相关性。此外,一个变量在所有主成分上的平方负荷总和等于1。因此,平方负荷告诉您由一个主成分解释的一个变量的方差比例。

princomp的问题在于,它仅显示“非常高”的负载。但是由于载荷只是协方差矩阵的特征向量,因此可以使用eigenR中的命令来获得所有载荷:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

现在,您在矩阵中有了所需的信息explvar


谢谢你,随便的家伙,你可以给我看看assault还是urban pop我们可以做到这一点?造成部分困惑,因为矩阵中仅存在一种相关性assault
user1320502 2014年

1
抱歉,我改进了答案,没有注意到您已经评论了我的帖子。攻击在PC1上的负载为-0.995。因此,在对该值进行平方后,可以得出结论:PC1解释了变量攻击的99%的方差。对城市流行度的值进行平方后,可以得出结论:PC3解释了4%,PC2解释了城市流行度方差的95.5%。
2014年

1
OP不会询问可以将多少PCA归因于变量吗?您的答案是关于注册会计师可以解释多少变量
Heisenberg 2014年

2
回到这个问题,我认为这个答案是错误的。考虑10个相互之间高度相关(99%)的变量,它们都按单位方差进行缩放。第一台PC基本上是它们之间的平均值。因此,第一个特征向量将是,长度为,并且第一个特征值几乎为,即。现在,第一台PC几乎完全解释了每个变量。每个变量几乎完全解释了第一台PC 。但是,如何从均为的的平方元素中得出一个或另一个结论呢? 1 10 9.9 瓦特0.1w=(0.3,0.3,...0.3)1109.9w0.1
变形虫说恢复莫妮卡

2
很抱歉要坚持,但是您认为我在上面的评论中错了吗?如果没有,那么您可以编辑答案以消除潜在的混乱,这对将来的读者将非常有帮助。我本人刚刚发布了一个答案,试图更详细地解释这些问题。
变形虫说莫妮卡(

9

我认为被接受的答案可能会引起误导(-1)。 OP中至少混合了四个不同的问题。我会陆续考虑他们。


  • Q1。给定的原始变量可以解释给定PC的多少方差?给定的PC可以解释给定的原始变量有多少方差?

r2riVisiLiLi=(si)1/2Vi。其元素是该PC与各个原始变量的相关性。

ViLi

另外,如果PCA是在协方差(而不是相关性)上完成的,那么加载也将为您提供协方差,而不是相关性。为了获得相关性,需要遵循PCA手动计算它们。[目前接受的答案尚不清楚。]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

@FrankHarrell(+1)建议如何选择一个解释给定方差量的子集。


+1,这应该是公认的答案。
gented '19


6

与R捆绑在一起的美国逮捕数据仅是一个示例,但我注意到问题中的装载量计算来自协方差矩阵的PCA 。这在任意和荒谬之间,因为变量是在不同的尺度上测量的。

城市人口看起来像一个百分比。加利福尼亚州为91%,是最高的。

这三个犯罪变量似乎是相对于人口规模(大概一段时间)表达的犯罪逮捕数量。大概是在某处记录了它是每1000还是10000或任何数量的逮捕。

在给定的单位中,攻击变量的平均值约为171,而谋杀的平均值约为8。因此,对装载量的解释是,该模式在很大程度上是伪像:取决于变量的非常不同的可变性。

因此,尽管从数据上可以看出,袭击的逮捕比谋杀的逮捕等多,但已知(或不足为奇)的事实主导了分析。

这表明,与统计数据中的其他任何地方一样,您必须考虑在PCA中正在做什么。

如果您进一步这样做:

  1. 我认为分析中最好不要考虑城市百分比。城市化不是犯罪。它当然可以充当影响犯罪的变量的代理。

  2. 在我看来,基于相关矩阵的PCA更有意义。另一种可能性是使用逮捕率的对数,而不是逮捕率(所有值均为正;见下文)。

注意:@random_guy的答案故意使用协方差矩阵。

以下是一些摘要统计信息。我使用了Stata,但这并不重要。

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.