R中数据的PCA投影

时间:2015-04-07 11:11:23

标签: r pca eigenvector

这是作业。

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

返回的对象形式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是我的数据框架。 我得到了这个情节:

Scatter plot

这看起来合理吗?

1 个答案:

答案 0 :(得分:0)

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访问分数。