【发布时间】:2019-03-08 16:58:15
【问题描述】:
如果我做错了,请告诉我...
我有一个 47,194 行、27 列的数字矩阵,其中有一些缺失值。我正在尝试使用 irlba 来分解矩阵。在之前的所有 R 项目中,我都使用 NA 来表示缺失数据。当我使用 irlba 时,我得到一个数据丢失的错误。如何指示缺少一个值并且 irlba 在分解矩阵时应该忽略它?
注意:irlba 的文档不包含稀疏数据。每个元素都有一个值。有零值的示例,但我不能这样做,因为它会考虑零值,而不是忽略该值。
请求的代码示例:
M = matrix(c(1,2,3,4,NA,6,7,8,9), nrow(3))
S = irlba(M,2)
我希望 irlba 将 NA 识别为缺失值并忽略它。相反,它失败并声明 M 包含缺失值。我试过null、.、空值等……我相信有一个我以前没有见过的“忽略这个元素”的特殊符号。
【问题讨论】:
-
你被匿名投票了,这很遗憾,因为这看起来像是一个有效的问题。也就是说,如果您可以发布您正在使用的实际代码,那仍然会很好——精简为一个暴露问题的最小示例。这使人们可以解决您的问题。
-
@KonradRudolph 完成。我知道这个例子太小了,不足以证明 irlba 优于 svd,但实际数据集要大得多。
-
最好在Cross Validated 上询问?如果
irlba没有提供处理缺失数据的方法,我的猜测是您更多地关注的是统计问题(如何正确处理这些缺失数据)而不是编程问题? -
@divibisan 我扫描了那里的问题和答案,发现 SVDmiss 执行与 irlba 相同的功能,但速度稍慢。但是,它确实将 NA 视为缺失值并忽略它。所以,我只是将使用 irlba 的表单切换到 SVDmiss,它现在可以工作了。我将把它作为答案发布,因为我注意到这里的其他问题基本上都在问同样的问题:如果我缺少数据,我如何获得 SVD。
标签: r