【发布时间】:2012-01-23 15:21:06
【问题描述】:
在 R 中使用 princomp() 函数时,遇到以下错误:"covariance matrix is not non-negative definite"。
我认为,这是由于协方差矩阵中的某些值为零(实际上接近零,但在舍入期间变为零)。
当协方差矩阵包含零时,是否可以继续使用 PCA?
[仅供参考:获取协方差矩阵是princomp() 调用中的一个中间步骤。可以从这里下载重现此错误的数据文件 - http://tinyurl.com/6rtxrc3]
【问题讨论】:
-
添加示例输入以使问题可重现对回答者很有用。
-
如果您查看
stats:::princomp.default,您会发现当协方差矩阵中有负特征值时会发生错误。 -
@Richie Cotton:我希望我能提供。我的数据很大(10K x 10K),我还没有弄清楚导致错误的部分。我很高兴知道是否有一种方法可以提取令人不安的部分数据并将其发布在这里!
-
cv <- matrix(c(1, 2, 2, 1), nrow = 2); princomp(covmat = cv)重现错误。不知道它与您的数据集有多相关。 -
谢谢!我可以从原始矩阵的一小部分复制它,1K x 1K(文件大小 5.5 MB)。我想知道如何发布它。我确信协方差矩阵的某些元素将为零(或接近零),因为我的输入数据具有大量相同的值。
标签: r statistics pca eigenvector princomp