gpt4 book ai didi

r - R中函数svd()的收敛误差

转载 作者:行者123 更新时间:2023-12-02 12:29:03 24 4
gpt4 key购买 nike

在 R 中编码时,我发现函数 svd()有时可能会抛出错误消息:

Error in La.svd(x, nu, nv) : error code 1 from Lapack routine 'dgesdd'. 

在Google上查了一些资料,原来这个错误是指svd()中使用的算法。不收敛。很多人也遇到了同样的错误信息,我尝试了很多他们使用的方法但没有一个能正常工作,例如使用参数LINPACK = TRUE ,对矩阵进行四舍五入,甚至使用 propack.svd()trlan.svd() .

我的输入数据是一个矩阵,对角线元素等于1,其他元素为0或相对较小。我猜想这个错误与数值精度有关,所以我尝试用 round(matrix,6) 之类的东西对矩阵进行舍入。这有时会有所帮助,但不能从根本上解决问题,我担心这种舍入会导致一些有偏差的结果。

如果有人能告诉我如何解决这个问题,我将非常感激。

最佳答案

对于大型随机生成(rnorm)矩阵,这种情况发生在我身上(例如,运行 svd 来获取填充 rnorm 的 250 x 800 矩阵的 cor 的前 6 个特征向量)。是的,该 cor 矩阵是秩亏的。这样做足够多次就会弹出错误。我确实发现,在我的情况下,四舍五入到 5 位数可以让它停止发生(至少减少发生次数,这样它就不会出现在我正在进行的大量随机试验中)。与 OP 不同的是,这不会影响我结果的质量。

关于r - R中函数svd()的收敛误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405671/

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