在R中使用princomp()
运行主成分分析并在结果上运行summary()
后,我得到了一个组件列表,它们的方差比例以及它们的累积比例。有没有办法看到哪些变量实际包含在每个组件中?
答案 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)
会产生pca1
和pca2
的等效结果。