R中的QR分解和Choleski分解

Pra*_*rni 3 r linear-algebra decomposition qr-decomposition

我最近读到了如何使用Choleski分解计算QR分解的R矩阵.关系是:

R = Choleski分解(A ^ TA)

例:

> A=matrix(c(1,2,3,2,3,5,1,3,2), nrow=3)
> A
     [,1] [,2] [,3]
[1,]    1    2    1
[2,]    2    3    3
[3,]    3    5    2

> AtA = t(A)%*%A
> AtA
     [,1] [,2] [,3]
[1,]   14   23   13
[2,]   23   38   21
[3,]   13   21   14
Run Code Online (Sandbox Code Playgroud)

现在计算QR和Choleski分解:

> chol(AtA)
         [,1]     [,2]       [,3]
[1,] 3.741657 6.147009  3.4743961
[2,] 0.000000 0.462910 -0.7715167
[3,] 0.000000 0.000000  1.1547005

> qr_A = qr(A)
> qr.R(qr_A)
          [,1]      [,2]       [,3]
[1,] -3.741657 -6.147009 -3.4743961
[2,]  0.000000  0.462910 -0.7715167
[3,]  0.000000  0.000000 -1.1547005
Run Code Online (Sandbox Code Playgroud)

如所观察到的,从Choleski和QR分解计算的R矩阵的值不相同.第一行和第三行chol(AtA)被否定了qr.R(qr_A).这是为什么?这是我假设不正确的关系吗?

sha*_*dow 5

矩阵的QR分解不是唯一的!有一个QR分解与R = chol(AtA),但也有其他,qr并没有必要给那个.在你的例子中

qr.Q(qr_A)%*%qr.R(qr_A) 
Run Code Online (Sandbox Code Playgroud)

(qr.Q(qr_A)%*%diag(c(-1,1,-1)))%*%chol(AtA)
Run Code Online (Sandbox Code Playgroud)

是A的有效QR分解.

  • 究竟.更多细节,[见这个优秀的答案](http://scicomp.stackexchange.com/questions/1101/seemingly-non-unique-cholesky-factor-via-qr-rectangularisation/1104#1104),给出时对计算科学SO beta提出了完全相同的问题. (2认同)
  • @PrateekKulkarni - [正如这里所讨论的](http://stackoverflow.com/questions/13248960/qr-decomposition-different-in-lm-and-biglm/13252584#13252584),R包**biglm**似乎使用满足您要求的实现. (2认同)