在R中使用Princomp()

时间:2015-04-13 16:51:22

标签: r pca

在R中使用princomp()运行主成分分析并在结果上运行summary()后,我得到了一个组件列表,它们的方差比例以及它们的累积比例。有没有办法看到哪些变量实际包含在每个组件中?

1 个答案:

答案 0 :(得分:1)

如果您使用princomp(),则它有loadings()方法来提取轮播矩阵,或者您可以直接访问$loadings广告位。

如果您使用prcomp(),则旋转矩阵也会显示在打印输出中(或者可以通过$rotation显式访问)。

例如,使用iris数据中的princomp()数据中的四个数字列:

R> pca1 <- princomp(iris[, 1:4], cor = TRUE)
R> pca1
Call:
princomp(x = iris[, 1:4], cor = TRUE)

Standard deviations:
   Comp.1    Comp.2    Comp.3    Comp.4 
1.7083611 0.9560494 0.3830886 0.1439265 

 4  variables and  150 observations.
R> loadings(pca1)

Loadings:
             Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length  0.521  0.377  0.720  0.261
Sepal.Width  -0.269  0.923 -0.244 -0.124
Petal.Length  0.580        -0.142 -0.801
Petal.Width   0.565        -0.634  0.524

               Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

或等效地通过prcomp()

R> pca2 <- prcomp(iris[, 1:4], scale = TRUE)
R> pca2
Standard deviations:
[1] 1.7083611 0.9560494 0.3830886 0.1439265

Rotation:
                    PC1         PC2        PC3        PC4
Sepal.Length  0.5210659 -0.37741762  0.7195664  0.2612863
Sepal.Width  -0.2693474 -0.92329566 -0.2443818 -0.1235096
Petal.Length  0.5804131 -0.02449161 -0.1421264 -0.8014492
Petal.Width   0.5648565 -0.06694199 -0.6342727  0.5235971

最后的旋转矩阵也可以由pca2$rotation提取。这相当于来自pca1的那个,除了在PC2上切换标志。

应用summary(pca1)plot(pca1)biplot(pca1)会产生pca1pca2的等效结果。