我是R的新用户。您能告诉我或介绍一些描述计算R中QR分解的tol
参数的参考吗?
例如,这两行的区别是什么:
qr(A, tol=1e-07) #Doesn't work
qr(A, tol=1e-20) #Works
为什么我会以tol
这么小的值获得我想要的resullt,但没有更大的值?
答案 0 :(得分:5)
tol
参数控制qr
是否为列返回值,具体取决于列是否已被判断为线性相关。我认为将tol
值降低到1e-16以下将会破坏该检查的目的。 (这几乎是双精度数学中零的实用定义。)
首先查看qr.default
,然后找到FORTRAN代码:
http://svn.r-project.org/R/trunk/src/appl/dqrdc2.f
这是来自FORTRAN例程的注释,描述了逻辑:
c cycle the columns from l to p left-to-right until one
c with non-negligible norm is located. a column is considered
c to have become negligible if its norm has fallen below
c tol times its original norm. the check for l .le. k
c avoids infinite cycling.