2015-04-07 52 views
1

这是作业。PCA投影数据R

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

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

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

编辑: 我作为建议双标图(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

确实看起来合理吗?

+0

查看'?biplot'。 –

+0

谢谢。你能帮我解释散点图吗?我看起来像所有21个向量(我的数据框有21个变量) - 但我只被要求投影前2个组件。我将用散点图的图片更新我的问题。 –

+0

RStudent:我在编辑中提供的信息是否足够? –

回答

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

+0

如果我要对前两个主要组件进行投影,我不应该使用加载而不是分数吗? –