这是作业。
我必须对数据集进行主成分分析。我已经使用了 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是我的数据框架。 我得到了这个情节:
这看起来合理吗?
答案 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
访问分数。