【问题标题】:PCA projection on data in RR中数据的PCA投影
【发布时间】:2015-04-07 11:11:23
【问题描述】:

这是作业。

我必须对数据集进行主成分分析。我已经使用 原则() 功能。然后我被要求通过散点图可视化数据,我将数据投影在前两个主成分上。

从 princomp() 函数返回的对象具有一个带有特征向量的类“加载”。

如何减去两个第一主成分并将它们投影到散点图中的数据上?

编辑: 我按照建议使用了 biplot(princom(df)):

pdf('scatterplot.pdf')

biplot(princomp(keytrain, choices = 1:2), xlab = '1. component', ylab = '2. component')
title('Scatterplot of the first two components projected on the data')

dev.off()

keytrain 是我的数据框。 我得到了这个情节:

这看起来合理吗?

【问题讨论】:

  • 看看?biplot
  • 谢谢。你能帮我解释散点图吗?我有看起来像所有 21 个向量的东西(我的数据框有 21 个变量) - 但是我只被要求投影前 2 个组件。我将用散点图的图片更新我的问题。
  • RStudent:我在编辑中提供的信息是否足够?
  • 实际上,您已经根据您提供的图中的前两个主要成分呈现了数据(查看坐标轴)
  • 是的,我意识到了这一点,但我无法解释散点图。我是否应该将其理解为 21 维数据现在表示在 2 维空间中? (前两个主成分覆盖 >50% 的方差)。我有 640 个观察值,所以我解释数字(点)来表示二维空间中的每个观察值。

标签: r pca eigenvector


【解决方案1】:

princomp 对象产生一个元素列表(S3 对象)。你可以通过str检查它的结构。

(pc.cr <- princomp(USArrests))

> str(pc.cr)
List of 7
 $ sdev    : Named num [1:4] 82.89 14.07 6.42 2.46
  ..- attr(*, "names")= chr [1:4] "Comp.1" "Comp.2" "Comp.3" "Comp.4"
 $ loadings: loadings [1:4, 1:4] -0.0417 -0.9952 -0.0463 -0.0752 0.0448 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:4] "Murder" "Assault" "UrbanPop" "Rape"
  .. ..$ : chr [1:4] "Comp.1" "Comp.2" "Comp.3" "Comp.4"
 $ center  : Named num [1:4] 7.79 170.76 65.54 21.23
  ..- attr(*, "names")= chr [1:4] "Murder" "Assault" "UrbanPop" "Rape"
 $ scale   : Named num [1:4] 1 1 1 1
  ..- attr(*, "names")= chr [1:4] "Murder" "Assault" "UrbanPop" "Rape"
 $ n.obs   : int 50
 $ scores  : num [1:50, 1:4] -64.8 -92.8 -124.1 -18.3 -107.4 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:50] "Alabama" "Alaska" "Arizona" "Arkansas" ...
  .. ..$ : chr [1:4] "Comp.1" "Comp.2" "Comp.3" "Comp.4"
 $ call    : language princomp(x = USArrests)
 - attr(*, "class")= chr "princomp"

可通过pc.cr$scores获取分数。

【讨论】:

  • 如果我要在前两个主成分上投影,我不应该使用载荷而不是分数吗?
猜你喜欢
  • 2014-05-11
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
相关资源
最近更新 更多