sparseQR-class {Matrix} | R Documentation

## Sparse QR decomposition of a sparse matrix

### Description

Objects of this class represent a QR decomposition of a sparse rectangular matrix.

### Details

The decomposition is of the form `A[p+1,] == Q %*% R`, if the `q` slot if 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 from the Class

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`.

### Slots

`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.

### Methods

qr.R
  `signature(qr = "sparseQR")`: ...
qr.coef
  `signature(qr = "sparseQR", y = "dgeMatrix")`: ...
qr.coef
  `signature(qr = "sparseQR", y = "matrix")`: ...
qr.coef
  `signature(qr = "sparseQR", y = "numeric")`: ...
qr.fitted
  `signature(qr = "sparseQR", y = "dgeMatrix")`: ...
qr.fitted
  `signature(qr = "sparseQR", y = "matrix")`: ...
qr.fitted
  `signature(qr = "sparseQR", y = "numeric")`: ...
qr.qty
  `signature(qr = "sparseQR", y = "dgeMatrix")`: ...
qr.qty
  `signature(qr = "sparseQR", y = "matrix")`: ...
qr.qty
  `signature(qr = "sparseQR", y = "numeric")`: ...
qr.qy
  `signature(qr = "sparseQR", y = "dgeMatrix")`: ...
qr.qy
  `signature(qr = "sparseQR", y = "matrix")`: ...
qr.qy
  `signature(qr = "sparseQR", y = "numeric")`: ...
qr.resid
  `signature(qr = "sparseQR", y = "dgeMatrix")`: ...
qr.resid
  `signature(qr = "sparseQR", y = "matrix")`: ...
qr.resid
  `signature(qr = "sparseQR", y = "numeric")`: ...
solve
  `signature(a = "sparseQR", b = "ANY")`: simply uses `qr.coef(a,b)`.

### See Also

`qr`, `qr.Q`, `qr.R`, `qr.fitted`, `qr.resid`, `qr.coef`, `qr.qty`, `qr.qy`, `dgCMatrix`, `dgeMatrix`.

### Examples

    data(KNex); mm <- KNex$mm
    str(mmQR <- qr(mm))

[Package Matrix version 0.999375-33 Index]