# MPinv: Moore-Penrose Pseudoinverse of a Real-valued Matrix In gnm: Generalized Nonlinear Models

 MPinv R Documentation

## Moore-Penrose Pseudoinverse of a Real-valued Matrix

### Description

Computes the Moore-Penrose generalized inverse.

### Usage

```MPinv(mat, tolerance = 100*.Machine\$double.eps,
rank = NULL, method = "svd")
```

### Arguments

 `mat` a real matrix. `tolerance` A positive scalar which determines the tolerance for detecting zeroes among the singular values. `rank` Either `NULL`, in which case the rank of `mat` is determined numerically; or an integer specifying the rank of `mat` if it is known. No check is made on the validity of any non-`NULL` value. `method` Character, one of `"svd", "chol"`. The specification `method = "chol"` is valid only for symmetric matrices.

### Details

Real-valuedness is not checked, neither is symmetry when ```method = "chol"```.

### Value

A matrix, with an additional attribute named `"rank"` containing the numerically determined rank of the matrix.

### Author(s)

David Firth and Heather Turner

### References

Harville, D. A. (1997). Matrix Algebra from a Statistician's Perspective. New York: Springer.

Courrieu, P. (2005). Fast computation of Moore-Penrose inverse matrices. Neural Information Processing 8, 25–29

`ginv`

### Examples

```A <- matrix(c(1, 1, 0,
1, 1, 0,
2, 3, 4), 3, 3)
B <- MPinv(A)
A %*% B %*% A - A  # essentially zero
B %*% A %*% B - B  # essentially zero
attr(B, "rank")    # here 2

## demonstration that "svd" and "chol" deliver essentially the same
## results for symmetric matrices:
A <- crossprod(A)
MPinv(A) - MPinv(A, method = "chol") ##  (essentially zero)
```

gnm documentation built on April 29, 2022, 5:06 p.m.