相关矩阵的主成分分析

Principal component analysis on a correlation matrix

许多函数可以对 R 中的原始数据执行主成分分析 (PCA)。通过原始数据,我理解任何数据框或矩阵,其行由观察索引,其列由测量标识。我们可以在 R 中的相关矩阵上执行 PCA 吗?哪个函数可以接受相关矩阵作为其在 R 中的输入?

如评论中所述,可以使用

ii <- as.matrix(iris[,1:4])
princomp(covmat=cor(ii))

这将为您提供与 princomp(iris,cor=TRUE) 相同的结果( 不是您想要的 - 后者使用完整的数据矩阵,但 returns当协方差矩阵转换为相关时计算的值)。


如果你有相关矩阵,你也可以手工完成所有相关计算:

cc <- cor(ii)
e1 <- eigen(cc)

标准差:

sqrt(e1$values)
[1] 1.7083611 0.9560494 0.3830886 0.1439265

方差比例:

e1$values/sum(e1$values)
[1] 0.729624454 0.228507618 0.036689219 0.005178709

您可以通过e1$vectors获取加载量。通过 as.matrix(iris) %*% e1$vectors) 计算分数(根据 this CV question)(这将 而不是 给出与 princomp()$scores 在数值上相同的答案——特征向量的缩放不同——但是它给出了相同的结果。