QR decomposition and Choleski decomposition in R

左心房为你撑大大i 提交于 2019-12-14 04:19:17

问题


I recently read about how the R matrix of QR decomposition can be calculated using the Choleski decomposition. The relation is:

R = Choleski-decomposition(A^TA)

Example:

> 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

Now calculating QR and Choleski decomposition:

> 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

As observed, the values of the R matrix calculated from Choleski and QR decomposition are not the same. The first and the third rows of chol(AtA) are negated w.r.t qr.R(qr_A). Why is that? Is the relation I'm assuming not correct?


回答1:


The QR-decomposition of a matrix is not unique! There is a QR-decomposition with R=chol(AtA), but there are also others and qr does not necessairily give that one. In your example

qr.Q(qr_A)%*%qr.R(qr_A) 

and

(qr.Q(qr_A)%*%diag(c(-1,1,-1)))%*%chol(AtA)

are both valid QR-decompositions of A.



来源:https://stackoverflow.com/questions/19536933/qr-decomposition-and-choleski-decomposition-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!