[Rd] Unexpected behaviour of base::qr()$rank
ligges at statistik.tu-dortmund.de
Thu Jun 22 20:31:20 CEST 2017
On 22.06.2017 20:09, Iñaki Úcar wrote:
> 2017-06-22 19:49 GMT+02:00 Uwe Ligges <ligges at statistik.tu-dortmund.de>:
>> On 22.06.2017 17:11, Bernd Funovits wrote:
>>> I experienced some unexpected behaviour while determining the rank of matrices (sometimes 1x1 matrices):
>>> base::qr(matrix(1e-20))$rank returns 1 (incorrect)
>>> base::qr(diag(c(1, 1e-20)))$rank returns 2 (incorrect)
>> Why do you believe this is incorrect?
>> 0 != 1e-20
>> and 1e-20 is well representable without significant rounding errors given
>>  2.225074e-308
>> Uwe Ligges
> qr() has a tolerance argument which by default is tol=1e-07.
But the tolerance is not about the size of the values! It is about the
reduction of the norm during the householder transformation. From the
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....
More information about the R-devel