R:irlba错误
我试图用R包R:irlba错误,r,matrix-decomposition,R,Matrix Decomposition,我试图用R包irlba分解一个方阵,但得到以下信息: “V[,1:(k+dim(F)[2])]与irlba(C.i,nu=0,nv=0)的误差i得到: $d [1] 0.1938809 $u [,1] [1,] 0.6595482 [2,] 0.7216141 [3,] -0.1355695 [4,] -0.1609040 $v [,1] [1,] 0.6590202 [2,] 0.7214017 [3,] -0.1432499 [4,]
irlba
分解一个方阵,但得到以下信息:
“V[,1:(k+dim(F)[2])]与irlba(C.i,nu=0,nv=0)的误差i得到:
$d
[1] 0.1938809
$u
[,1]
[1,] 0.6595482
[2,] 0.7216141
[3,] -0.1355695
[4,] -0.1609040
$v
[,1]
[1,] 0.6590202
[2,] 0.7214017
[3,] -0.1432499
[4,] -0.1573256
$iter
[1] 1
$mprod
[1] 6
这就是你要找的吗
(很抱歉在回答中问了一个问题,但我没有足够的分数来评论这个问题。:)我收到了软件包作者关于此错误的回复-这确实是一个错误。此问题已通过irlba软件包的更新版本得到解决。更新后的软件包最终将提交给CRAN,但在此期间,您可以通过GitHub安装:
remove.packages("irlba")
library("devtools")
install_github("IRL","bwlewis",quick=TRUE)
library("irlba")
C.i <- structure(c(0.107821513562202, 0.0629415996952743, -0.0346069282137902,
-0.0410208578535759, 0.0629415996952743, 0.136205395050303, -0.00378166611862939,
0.00237156895349009, -0.0346069282137902, -0.00378166611862939,
0.0122114763151942, -0.00635448918784993, -0.0410208578535759,
0.00237156895349009, -0.00635448918784993, 0.0431193044924), .Dim = c(4L, 4L),
.Dimnames = list(c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width"), c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width")))
irlba(C.i, nu=1, nv=1)
#$d
#[1] 0.1938898
#
#$u
# [,1]
#[1,] 0.6593389
#[2,] 0.7216000
#[3,] -0.1349355
#[4,] -0.1623519
#
#$v
# [,1]
#[1,] 0.6593384
#[2,] 0.7216001
#[3,] -0.1349364
#[4,] -0.1623526
#
#$iter
#[1] 2
#
#$mprod
#[1] 10
remove.packages(“irlba”)
库(“devtools”)
安装_github(“IRL”、“BWLeiwis”,quick=TRUE)
图书馆(“irlba”)
C.i我通常会挖掘源代码,并尝试抛出所有不相关的内容,直到我有一个最小的中断代码。这通常足以诊断这是否是一个bug或例如错误的参数。请参阅问题,可能会给出一个方法上的提示。如果您设法缩小范围,至少部分,请毫不犹豫地发布,我可能会在发布时从那里获取它我有一些时间。我认为这可能是一个边缘情况,与以下事实有关:adjust+max(nu,nv)
等于矩阵的维数,但这似乎不是真的:irlba(C.I,nu=1,nv=1,adjust=2)
也不起作用。然而,irlba(矩阵(rnorm(25),5),nv=1,nu=1)
起作用,irlba(矩阵)(rnorm(16),4),nv=1,nu=1)
失败——如果有帮助的话…@BenBolker-是的-出于某种原因,只有一些矩阵会导致这些类型的问题。我认为这可能与矩阵不是正定的情况有关,但我不确定。@tonytonov-我很难一行一行地通过原始函数进行尝试然后找到错误点。我已经联系了软件包的作者,他也在查看这个错误。不过谢谢你的建议。这确实有效,但我不知道为什么。我在一个示例中试用了它,它给出了与nu=1
和nv=1
相同的结果:set.seed(1);x我看过代码,但我对函数不太熟悉,无法真正了解发生了什么。我认为这可能只是一个罕见的错误。至于为什么它与0一起工作,我认为这可能是另一个错误。如果你在测试中注意到^,u和v是相同的,但iter和mprod不是。虽然这在这里似乎可行,但它可能不起作用k表示另一个矩阵。事实上,我刚刚发现了一个随机矩阵,其结果都是错误的符号,所以要小心。是的,我相信你是对的,这不是一个好的整体修复。我尝试了nu=0;nv=0
技巧,使用了一个大得多的矩阵,函数继续计算的时间比只使用一个vec时长得多tor是要计算的。我最终不得不打破这个计算。我会保留这个问题,并希望得到一个更规范的答案。谢谢你的帮助。
remove.packages("irlba")
library("devtools")
install_github("IRL","bwlewis",quick=TRUE)
library("irlba")
C.i <- structure(c(0.107821513562202, 0.0629415996952743, -0.0346069282137902,
-0.0410208578535759, 0.0629415996952743, 0.136205395050303, -0.00378166611862939,
0.00237156895349009, -0.0346069282137902, -0.00378166611862939,
0.0122114763151942, -0.00635448918784993, -0.0410208578535759,
0.00237156895349009, -0.00635448918784993, 0.0431193044924), .Dim = c(4L, 4L),
.Dimnames = list(c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width"), c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width")))
irlba(C.i, nu=1, nv=1)
#$d
#[1] 0.1938898
#
#$u
# [,1]
#[1,] 0.6593389
#[2,] 0.7216000
#[3,] -0.1349355
#[4,] -0.1623519
#
#$v
# [,1]
#[1,] 0.6593384
#[2,] 0.7216001
#[3,] -0.1349364
#[4,] -0.1623526
#
#$iter
#[1] 2
#
#$mprod
#[1] 10