使用R,PCA和绘制累积方差时

时间:2019-02-22 17:39:48

标签: r plot pca

我正在使用比例数据集和主成分分析(princomp)处理R。一切工作正常,但我想绘制主要成分对整体的累积%方差。摘要提供了此信息,但我尚无法访问。换句话说,我想y ='pca相对于'component#'的“累积比例”。

pca <- princomp(class5_subset_scaled)
summary(pca) # summary provides 

Importance of components:
                          Comp.1     Comp.2 ...
Standard deviation     0.0513980 0.04482971 ...
Proportion of Variance 0.2089728 0.15897513 ...
Cumulative Proportion  0.2089728 0.36794789 ...

但是当我看到名字时我很困惑...

names(pc)
[1] "sdev" "loadings" "center" "scale" "n.obs" "scores" "call" 

我可以从pca与x ='component#'绘制y ='累积比例'吗?

1 个答案:

答案 0 :(得分:5)

您没有提供任何数据,因此我将用内部虹膜数据集进行说明。摘要显示了您想要获得的东西。

iPCA = princomp(iris[,1:4])

summary(iPCA)
Importance of components:
                          Comp.1     Comp.2     Comp.3      Comp.4
Standard deviation     2.0494032 0.49097143 0.27872586 0.153870700
Proportion of Variance 0.9246187 0.05306648 0.01710261 0.005212184
Cumulative Proportion  0.9246187 0.97768521 0.99478782 1.000000000

您注意到,princomp的收益包含一个称为sdev的成分,即“标准差”

iPCA$sdev
   Comp.1    Comp.2    Comp.3    Comp.4 
2.0494032 0.4909714 0.2787259 0.1538707

方差是标准偏差的平方。

iPCA$sdev^2
    Comp.1     Comp.2     Comp.3     Comp.4 
4.20005343 0.24105294 0.07768810 0.02367619

方差比例是方差除以所有方差之和。

iPCA$sdev^2 / sum(iPCA$sdev^2)
     Comp.1      Comp.2      Comp.3      Comp.4 
0.924618723 0.053066483 0.017102610 0.005212184 

累积比例是方差比例的累积和

cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2))
   Comp.1    Comp.2    Comp.3    Comp.4 
0.9246187 0.9776852 0.9947878 1.0000000

现在您有了“累积比例”值,只需绘制它们即可。

plot(cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2)), type="b")

Cumulative proportion.

此外,请注意绘图上的比例。根据您打算如何处理该图,您可能确实想要:

plot(cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2)), type="b", ylim=0:1)

Cumulative plot to scale