ID EN
Miscellaneous

qr

R Base 3.6.2

qr computes the QR decomposition of a matrix.

Syntax

R
qr(x, …)
# S3 method for default
qr(x, tol = 1e-07 , LAPACK = FALSE, &#8230;)<p></p><p>qr.coef(qr, y)
qr.qy(qr, y)
qr.qty(qr, y)
qr.resid(qr, y)
qr.fitted(qr, y, k = qr$rank)
qr.solve(a, b, tol = 1e-7)
# S3 method for qr
solve(a, b, &#8230;)</p><p>is.qr(x)
as.qr(x)</p>

Arguments

Parameter Description
x a numeric or complex matrix whose QR decomposition is to be computed. Logical matrices are coerced to numeric.
tol the tolerance for detecting linear dependencies in the columns of x. Only used if LAPACK is false and x is real.
qr a QR decomposition of the type computed by qr.
y, b a vector or matrix of right-hand sides of equations.
a a QR decomposition or (qr.solve only) a rectangular matrix.
k effective rank.
LAPACK logical. For real x, if true use LAPACK otherwise use LINPACK (the default).
&#8230; further arguments passed to or from other methods

Return Value

The QR decomposition of the matrix as computed by LINPACK(*) or LAPACK. The components in the returned value correspond directly to the values returned by DQRDC(2)/DGEQP3/ZGEQP3. qra matrix with the same dimensions as x. The upper triangle contains the \(\bold{R}\) of the decomposition and the lower triangle contains information on the \(\bold{Q}\) of the decomposition (stored in compact form). Note that the storage used by DQRDC and DGEQP3 differs. qrauxa vector of length ncol(x) which contains

Details

The QR decomposition plays an important role in many statistical techniques. In particular it can be used to solve the equation \(\bold{Ax} = \bold{b}\) for given matrix \(\bold{A}\), and vector \(\bold{b}\). It is useful for computing regression coefficients and in applying the Newton-Raphson algorithm. The functions qr.coef, qr.resid, and qr.fitted return the coefficients, residuals and fitted values obtained when fitting y to the matrix with QR decomposition qr. (If pivoting is used, some of the coefficients will be NA.) qr.qy and qr.qty return Q %*% y and t(Q) %*% y, where Q is the (complete) \(\bold{Q}\) matrix. All the above functions keep dimnames (and names) of x and y if there are any. solve.qr is the method for solve for qr objects. qr.solve solves systems of equations via the QR

Examples

Example
R
# NOT RUN {
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
h9 <- hilbert(9); h9
qr(h9)$rank           #--> only 7
qrh9 <- qr(h9, tol = 1e-10)
qrh9$rank             #--> 9
##-- Solve linear equation system  H %*% x = y :
y <- 1:9/10
x <- qr.solve(h9, y, tol = 1e-10) # or equivalently :
x <- qr.coef(qrh9, y) #-- is == but much better than
                      #-- solve(h9) %*% y
h9 %*% x              # = y


## overdetermined system
A <- matrix(runif(12), 4)
b <- 1:4
qr.solve(A, b) # or solve(qr(A), b)
solve(qr(A, LAPACK = TRUE), b)
# this is a least-squares solution, cf. lm(b ~ 0 + A)

## underdetermined system
A <- matrix(runif(12), 3)
b <- 1:3
qr.solve(A, b)
solve(qr(A, LAPACK = TRUE), b)
# solutions will have one zero, not necessarily the same one
# }

See Also

qr.Q qr.R qr.X for reconstruction of the matrices. lm.fit lsfit eigen svd. det (using qr) to compute the determinant of a matrix.