许多功能都可以对R中的原始数据执行主成分分析(PCA)。通过原始数据,我可以理解其数据行通过观察进行索引并且其列通过测量进行标识的任何数据帧或矩阵。我们可以对R中的相关矩阵执行PCA吗?哪个函数可以接受相关矩阵作为其在R中的输入?
答案 0 :(得分:2)
如评论中所述,您可以使用
ii <- as.matrix(iris[,1:4])
princomp(covmat=cor(ii))
这将为您提供与princomp(iris,cor=TRUE)
等效的结果(不是您想要的-em)-后者使用完整的数据矩阵,但是返回将协方差矩阵转换为相关)。
如果您具有相关矩阵,还可以手动进行所有相关计算:
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
给出数值上相同的答案-特征向量的缩放比例不同-但得出的等价物结果)。