qr.X(qrstr, complete=FALSE, ncol=) qr.Q(qrstr, complete=FALSE, Dvec=1) qr.R(qrstr, complete=FALSE)
qrstr
|
object representing a QR decomposition. This will
typically have come from a previous call to qr or
lsfit .
|
complete
| logical expression of length 1. Indicates whether an arbitrary orthogonal completion of the Q or X matrices is to be made, or whether the R matrix is to be completed by binding zero-value rows beneath the square upper triangle. |
ncol
|
integer in the range 1:nrow(qrstr$qr) . The number of
columns to be in the reconstructed X. The default when
complete==FALSE is the original X from which the
qr object was constructed. The default when complete==TRUE is
a square matrix with the original \eqn{\bold{X}} in the first
ncol(X) columns and an arbitrary orthogonal completion (unitary
completion in the complex case) in the remaining columns.
|
Dvec
| vector (not matrix) of diagonal values. Each column of the returned Q will be multiplied by the corresponding diagonal value. |
qr.X
returns X, the original matrix from which the qr
object was constructed. If complete==TRUE
or the argument ncol
is
greater than ncol(X)
, additional columns from an arbitrary orthogonal
(unitary) completion of X
are returned.
qr.Q
returns Q, the order-nrow(X) orthogonal (unitary)
transformation represented by qrstr. If complete==TRUE
, Q has
nrow(X)
columns. If complete==FALSE
, Q has ncol(X)
columns. When Dvec
is specified, each
column of Q is multiplied by the corresponding value in Dvec
.
qr.R
returns R, the c(ncol(X),ncol(X))
upper
triangular matrix such that X == Q %*% R
. If complete==TRUE
,
R has nrow(X)
rows. If complete==FALSE
, R has
ncol(X)
rows.
data(savings) p <- ncol(x <- savings[,-1]) # not the 'sr' qrstr <- qr(x) # dim(x) == c(n,p) qrstr $ rank # = 4 = p Q <- qr.Q(qrstr) # dim(Q) == dim(x) R <- qr.R(qrstr) # dim(R) == ncol(x) X <- qr.X(qrstr) # X == x range(X - as.matrix(x))# ~ < 6e-12 ## X == Q %*% R : all((1 - X /( Q %*% R))< 100*.Machine$double.eps)#TRUE dim(Qc <- qr.Q(qrstr, complete=TRUE)) # Square: dim(Qc) == rep(nrow(x),2) all((crossprod(Qc) - diag(nrow(x))) < 10*.Machine $double.eps) QD <- qr.Q(qrstr, D=1:p) # QD == Q %*% diag(1:p) all(QD - Q %*% diag(1:p) < 8* .Machine$double.eps) dim(Rc <- qr.R(qrstr, complete=TRUE)) # == dim(x) dim(Xc <- qr.X(qrstr, complete=TRUE)) # square: nrow(x) ^ 2 all(Xc[,1:p] == X)