【发布时间】:2020-06-17 05:51:41
【问题描述】:
我知道 PCA 可以使用 base R 中的 prcomp() 函数或 caret 包中的 preProcess() 函数等进行。
首先,我是否正确地说,如果我们只对prcomp(<SOME_MATRIX>) 或preProcess(<SOME_MATRIX>, method = "pca") 类型的操作使用默认设置,那么我们结果的唯一区别是prcomp() 之前没有居中和缩放数据进行 PCA,而 preProcess() 呢?所以prcomp(scale(<SOME_MATRIX>))和preProcess(<SOME_MATRIX>, method = "pca")输出的东西一样吗?
其次,更重要的是,我们如何从prcomp() 或preProcess() 的输出中获得每台PC 解释的百分比方差?从这两个输出中,我可以看到诸如均值、标准差或旋转之类的东西,但我认为这些仅指“旧”变量。关于“新”PC 的信息在哪里以及它们的差异有多大?
这可能很有用,例如,我使用preProcess(<SOME_MATRIX>, method = "pca", thresh = 0.8) 并返回 6 台 PC,但我发现前 5 台 PC 总共解释了 79.5% 的方差。那么我可能倾向于不包括所有 6 台 PC。
【问题讨论】:
-
prcomp 确实居中,但不缩放。您始终可以使用
predict(preProcess(<some matrix>, method = 'pca'))从 preProcess 获取结果 -
感谢@Oliver 对居中和缩放的澄清。我知道使用
predict(preProcess())来获得结果,但这并不能告诉我每台 PC 解释了多少差异,例如PC1 占方差的 27%,PC2 占 19%,等等。你知道我在哪里可以找到这些信息吗?