gpt4 book ai didi

r - 使用相关矩阵作为 R 中的输入进行 PCA 分析

转载 作者:行者123 更新时间:2023-12-02 00:27:36 25 4
gpt4 key购买 nike

现在我有一个 7000*7000 相关矩阵,我必须在 R 中对此进行 PCA 。我用的是

CorPCA <- princomp(covmat=xCor)

,xCor为相关矩阵但它出来了

"covariance matrix is not non-negative definite"

这是因为我在该矩阵中有一些负相关。我想知道 R 中的哪个内置函数可以用来获取 PCA 的结果

最佳答案

进行 PCA 的一种方法是执行协方差矩阵的特征值分解,请参阅 wikipedia

特征值分解的优点是您可以看到哪些方向(特征向量)是重要的,即具有由相关特征值表示的显着变化。此外,您可以检测协方差矩阵是否是正定的(所有特征值都大于零),而不是负定的(这是可以的),如果特征值等于零,或者如果是负特征值的话,它是不定的(这是不行的)。有时,由于数值不准确,非负定矩阵也会变成负定矩阵。在这种情况下,您会观察到几乎为零的负特征值。在这种情况下,您可以将这些特征值设置为零以保留协方差矩阵的非负定性。此外,您仍然可以解释结果:贡献重要信息的特征向量与最大特征值相关联。如果排序特征值列表快速下降,则有很多方向没有显着贡献,因此可以删除。

内置的 R 函数是eigen

如果您的协方差矩阵是 A

eigen_res <- eigen(A)
# sorted list of eigenvalues
eigen_res$values
# slightly negative eigenvalues, set them to small positive value
eigen_res$values[eigen_res$values<0] <- 1e-10
# and produce regularized covariance matrix
Areg <- eigen_res$vectors %*% diag(eigen_res$values) %*% t(eigen_res$vectors)

关于r - 使用相关矩阵作为 R 中的输入进行 PCA 分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com