【问题标题】:Identify Principal component from Biplot in R从 R 中的 Biplot 识别主成分
【发布时间】:2017-09-23 06:17:41
【问题描述】:

我在做主成分分析,得到分析结果后,如何识别前几个主预测变量?因为剧情很乱。很难看到预测变量的名称:

我应该查看 PCA 结果的哪一部分?这更像是如何确定可以解释数据方差的最重要的预测变量,比如说 80%。我们知道,例如,前 5 个分量是这样做的,而主分量只是预测变量的组合。如何识别那些“重要”的预测因子。

【问题讨论】:

  • 请在您提出问题时提供可重现的示例。用于运行 pca 的代码对生成的双标图更为重要。另外,请定义“前几个主要预测变量”的含义。
  • @Adam Quek,这更像是如何确定可以解释数据方差的最重要的预测变量,比如说 80%。我们知道,例如,前 5 个组件就是这样做的。而主要成分只是预测变量的组合。如何识别那些“重要”的预测因子。清楚吗?

标签: r pca ggbiplot


【解决方案1】:

看到这个答案Principal Components Analysis - how to get the contribution (%) of each parameter to a Prin.Comp.?

信息存储在您的pca 结果中。 如果你使用了prcomp(),那么$rotation就是你所追求的,或者如果你使用了princomp(),那么$loadings就是关键。 例如。

require(graphics)
data("USArrests")

pca_1<-prcomp(USArrests, scale = TRUE)
load_1<-with(pca_1,unclass(rotation))
aload_1<-abs(load_1)
sweep(aload_1, 2, colSums(aload_1), "/")
#               PC1       PC2       PC3        PC4
#Murder   0.2761363 0.2540139 0.1890303 0.40186493
#Assault  0.3005008 0.1141873 0.1485443 0.46016113
#UrbanPop 0.1433452 0.5301651 0.2094067 0.08286886
#Rape     0.2800177 0.1016337 0.4530187 0.05510509


pca_2<-princomp(USArrests,cor=T)
load_2<-with(pca_2,unclass(loadings))
aload_2<-abs(load_2)
sweep(aload_2, 2, colSums(aload_2), "/")

#            Comp.1    Comp.2    Comp.3     Comp.4
#Murder   0.2761363 0.2540139 0.1890303 0.40186493
#Assault  0.3005008 0.1141873 0.1485443 0.46016113
#UrbanPop 0.1433452 0.5301651 0.2094067 0.08286886
#Rape     0.2800177 0.1016337 0.4530187 0.05510509

如您所见,MurderAssaultRape 对 PC1 的贡献约为 30%,而 UrbanPop 对 PC1 的贡献仅为 ~14%,但对 PC2 的贡献最大(~53 %)。

【讨论】:

  • @j-con 我有一个相对较大的数据集,其中包含 200 个长格式受试者的几个心理分数,数据集中有 20000 个条目。我想通过使用 PCA 来减少这个数据集的维数,你建议我怎么做?谢谢。
  • 这是一个非常棒的分步教程。 media.readthedocs.org/pdf/…。如果您遇到困难,请告诉我
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多