sparseQR-class {Matrix} | R Documentation |
Objects of this class represent a QR decomposition of a sparse rectangular matrix.
The decomposition is of the form A[p+1,] == Q %*% R
, if
the q
slot is of length 0 or A[p+1,q+1] == Q %*% R
where A is a sparse m by n matrix (m >= n),
R is an m by n matrix that is zero below the
main diagonal. The p
slot is a 0-based permutation of
1:m
applied to the rows of the original matrix. If the q
slot has length n
it is a 0-based permutation of 1:n
applied to the columns of the original matrix to reduce the amount
of "fill-in" in the matrix R.
The matrix Q is a "virtual matrix". It is the product of
n Householder transformations. The information to generate
these Householder transformations is stored in the V
and
beta
slots.
The "sparseQR"
methods for the qr.*
functions return
objects of class "dgeMatrix"
(see
dgeMatrix
). Results from qr.coef
,
qr.resid
and qr.fitted
(when k == ncol(R)
) are
well-defined and should match those from the corresponding dense matrix
calculations. However, because the matrix Q
is not uniquely
defined, the results of qr.qy
and qr.qty
do not
necessarily match those from the corresponding dense matrix
calculations.
Also, the results of qr.qy
and qr.qty
apply to the
permuted column order when the q
slot has length n
.
Objects can be created by calls of the form new("sparseQR", ...)
but are more commonly created by function qr
applied
to a sparse matrix such as a matrix of class
dgCMatrix
.
V
:Object of class "dgCMatrix"
. The columns of
V
are the vectors that generate the Householder
transformations of which the matrix Q is composed.
beta
:Object of class "numeric"
, the normalizing
factors for the Householder transformations.
p
:Object of class "integer"
: Permutation
(of 0:(n-1)
) applied to the rows of the original matrix.
R
:Object of class "dgCMatrix"
An upper
triangular matrix of dimension \
q
:Object of class "integer"
: Permutation
applied from the right. Can be of length 0 which implies no
permutation.
signature(qr = "sparseQR")
: compute the upper
triangular R matrix of the QR decomposition.
Note that this currently warns because of possible permutation
mismatch with the classical qr.R()
result, and you
can suppress these warnings by setting options()
either "Matrix.quiet.qr.R"
or (the more general)
either "Matrix.quiet"
to TRUE
.
signature(qr = "sparseQR", y = "dgeMatrix")
: ...
signature(qr = "sparseQR", y = "matrix")
: ...
signature(qr = "sparseQR", y = "numeric")
: ...
signature(qr = "sparseQR", y = "dgeMatrix")
: ...
signature(qr = "sparseQR", y = "matrix")
: ...
signature(qr = "sparseQR", y = "numeric")
: ...
signature(qr = "sparseQR", y = "dgeMatrix")
: ...
signature(qr = "sparseQR", y = "matrix")
: ...
signature(qr = "sparseQR", y = "numeric")
: ...
signature(qr = "sparseQR", y = "dgeMatrix")
: ...
signature(qr = "sparseQR", y = "matrix")
: ...
signature(qr = "sparseQR", y = "numeric")
: ...
signature(qr = "sparseQR", y = "dgeMatrix")
: ...
signature(qr = "sparseQR", y = "matrix")
: ...
signature(qr = "sparseQR", y = "numeric")
: ...
signature(a = "sparseQR", b = "ANY")
: simply
uses qr.coef(a,b)
.
qr
, qr.Q
,
qr.R
, qr.fitted
,
qr.resid
, qr.coef
,
qr.qty
, qr.qy
,
dgCMatrix
, dgeMatrix
.
data(KNex); mm <- KNex$mm str(mmQR <- qr(mm))