R: Positive Semi-definite Dense Numeric Matrices

dpoMatrix-class {Matrix} | R Documentation

## Positive Semi-definite Dense Numeric Matrices

### Description

The `"dpoMatrix"` class is the class of positive-semidefinite symmetric matrices in nonpacked storage. The `"dppMatrix"` class is the same except in packed storage. Only the upper triangle or the lower triangle is required to be available.

The `"corMatrix"` class extends `"dpoMatrix"` with a slot `sd`.

### Objects from the Class

Objects can be created by calls of the form `new("dpoMatrix", ...)` or from `crossprod` applied to an `"dgeMatrix"` object.

### Slots

`uplo`:

  Object of class `"character"`. Must be either "U", for upper triangular, and "L", for lower triangular.

`x`:

  Object of class `"numeric"`. The numeric values that constitute the matrix, stored in column-major order.

`Dim`:

  Object of class `"integer"`. The dimensions of the matrix which must be a two-element vector of non-negative integers.

`Dimnames`:

  inherited from class `"Matrix"`

`factors`:

  Object of class `"list"`. A named list of factorizations that have been computed for the matrix.

`sd`:

  (for `"corMatrix"`) a `numeric` vector of length `n` containing the (original) sqrt(var(.)) entries which allow reconstruction of a covariance matrix from the correlation matrix.

### Extends

Class `"dsyMatrix"`, directly.
Classes `"dgeMatrix"`, `"symmetricMatrix"`, and many more by class `"dsyMatrix"`.

### Methods

chol

  `signature(x = "dpoMatrix")`: Returns (and stores) the Cholesky decomposition of `x`, see `chol`.

determinant

  `signature(x = "dpoMatrix")`: Returns the `determinant` of `x`, via `chol(x)`, see above.

rcond

  `signature(x = "dpoMatrix", norm = "character")`: Returns (and stores) the reciprocal of the condition number of `x`. The `norm` can be `"O"` for the one-norm (the default) or `"I"` for the infinity-norm. For symmetric matrices the result does not depend on the norm.

solve

  `signature(a = "dpoMatrix", b = "....")`

, and

solve

  `signature(a = "dppMatrix", b = "....")`

work via the Cholesky composition, see also the Matrix `solve-methods`.

Arith

  `signature(e1 = "dpoMatrix", e2 = "numeric")` (and quite a few other signatures): The result of (“elementwise” defined) arithmetic operations is typically not positive-definite anymore. The only exceptions, currently, are multiplications, divisions or additions with positive `length(.) == 1` numbers (or `logical`s).

### See Also

Classes `dsyMatrix` and `dgeMatrix`; further, `Matrix`, `rcond`, `chol`, `solve`, `crossprod`.

### Examples

    h6 <- Hilbert(6)
    rcond(h6)
    str(h6)
    h6 * 27720 # is ``integer''
    solve(h6)
    str(hp6 <- as(h6, "dppMatrix"))

    ### Note that  as(*, "corMatrix")  *scales* the matrix
    (ch6 <- as(h6, "corMatrix"))
    stopifnot(all.equal(h6 * 27720, round(27720 * h6), tolerance = 1e-14),
              all.equal(ch6@sd^(-2), 2*(1:6)-1, tolerance= 1e-12))
    chch <- chol(ch6)
    stopifnot(identical(chch, ch6@factors$Cholesky),
              all(abs(crossprod(chch) - ch6) < 1e-10))

[Package Matrix version 1.1-4 Index]