R中princomp()对象的summary()和loadings()之间有什么区别?


11

示例代码:

(pc.cr <- princomp(USArrests))  
summary(pc.cr)
loadings(pc.cr)  ## note that blank entries are small but not zero

我从每个人那里得到了不同的输出,而且我不确定我理解有什么不同。

这是输出:

> summary(pc.cr)
Importance of components:
                           Comp.1      Comp.2      Comp.3       Comp.4
Standard deviation     82.8908472 14.06956001 6.424204055 2.4578367034
Proportion of Variance  0.9655342  0.02781734 0.005799535 0.0008489079
Cumulative Proportion   0.9655342  0.99335156 0.999151092 1.0000000000


> loadings(pc.cr)  ## note that blank entries are small but not zero

...

               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

PS:如何访问由summary(pc.cr)创建的表?(我似乎在str中找不到它。)


对于第二个问题,您是指特征向量还是分量加载摘要?
chl 2010年

嗨,CHL-我的意思是“ summary(pc.cr)”的输出-由于某种原因,我找不到它。(做诸如summary(pc.cr)[[1]]之类的东西只会让我占桌子的一部分)
Tal Galili 2010年

您为什么# inappropriate在第一行有评论?
变形虫说恢复莫妮卡

@amoeba-老实说,我不记得了。我删除了 :)
Tal Galili

Answers:


4

第一个输出是正确且最有用的输出。调用loadings()您的对象只会返回一个汇总,其中SS始终等于1,因此%方差就是SS负载除以变量数量。仅当使用因素分析时(如中的factanal),它才有意义。我从不使用princomp它或基于SVD的替代方法(prcomp),而我更喜欢FactoMineRade4软件包,它们的功能更强大!

关于您的第二个问题,该summary()函数仅返回每个组件的SD(pc.cr$sdev在您的情况下),该表的其余部分似乎是在以后计算的(通过printor show方法,我没有对此进行详细调查)。

> getS3method("summary","princomp")
function (object, loadings = FALSE, cutoff = 0.1, ...)
{
    object$cutoff <- cutoff
    object$print.loadings <- loadings
    class(object) <- "summary.princomp"
    object
}
<environment: namespace:stats>

princomp()使用可以查看本身所做的事情getAnywhere("princomp.default")


+1我也使用FactoMineR,但我记得当我在非常大的数据集上尝试使用PCA方法时,我从未获得结果。
乔治·唐塔斯

@ gd047对于我来说,它也失败了,尽管它基于SVD(可能已被优化以处理大数据集:)
chl 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.