# kappa

##### Compute or Estimate the Condition Number of a Matrix

The condition number of a regular (square) matrix is the product of
the *norm* of the matrix and the norm of its inverse (or
pseudo-inverse), and hence depends on the kind of matrix-norm.

`kappa()`

computes by default (an estimate of) the 2-norm
condition number of a matrix or of the \(R\) matrix of a \(QR\)
decomposition, perhaps of a linear fit. The 2-norm condition number
can be shown to be the ratio of the largest to the smallest
*non-zero* singular value of the matrix.

`rcond()`

computes an approximation of the **r**eciprocal
**cond**ition number, see the details.

- Keywords
- math

##### Usage

```
kappa(z, …)
# S3 method for default
kappa(z, exact = FALSE,
norm = NULL, method = c("qr", "direct"), …)
# S3 method for lm
kappa(z, …)
# S3 method for qr
kappa(z, …)
```.kappa_tri(z, exact = FALSE, LINPACK = TRUE, norm = NULL, …)

rcond(x, norm = c("O","I","1"), triangular = FALSE, …)

##### Arguments

- z, x
A matrix or a the result of

`qr`

or a fit from a class inheriting from`"lm"`

.- exact
logical. Should the result be exact?

- norm
character string, specifying the matrix norm with respect to which the condition number is to be computed, see also

`norm`

. For`rcond`

, the default is`"O"`

, meaning the**O**ne- or 1-norm. The (currently only) other possible value is`"I"`

for the infinity norm.- method
a partially matched character string specifying the method to be used;

`"qr"`

is the default for back-compatibility, mainly.- triangular
logical. If true, the matrix used is just the lower triangular part of

`z`

.- LINPACK
logical. If true and

`z`

is not complex, the LINPACK routine`dtrco()`

is called; otherwise the relevant LAPACK routine is.- …
further arguments passed to or from other methods; for

`kappa.*()`

, notably`LINPACK`

when`norm`

is not`"2"`

.

##### Details

For `kappa()`

, if `exact = FALSE`

(the default) the 2-norm
condition number is estimated by a cheap approximation. However, the
exact calculation (via `svd`

) is also likely to be quick
enough.

Note that the 1- and Inf-norm condition numbers are much faster to
calculate, and `rcond()`

computes these * reciprocal*
condition numbers, also for complex matrices, using standard Lapack
routines.

`kappa`

and `rcond`

are different interfaces to
*partly* identical functionality.

`.kappa_tri`

is an internal function called by `kappa.qr`

and
`kappa.default`

.

Unsuccessful results from the underlying LAPACK code will result in an error giving a positive error code: these can only be interpreted by detailed study of the FORTRAN code.

##### Value

The condition number, \(kappa\), or an approximation if
`exact = FALSE`

.

##### References

Anderson. E. and ten others (1999)
*LAPACK Users' Guide*. Third Edition. SIAM.
Available on-line at
http://www.netlib.org/lapack/lug/lapack_lug.html.

Chambers, J. M. (1992)
*Linear models.*
Chapter 4 of *Statistical Models in S*
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

Dongarra, J. J., Bunch, J. R., Moler, C. B. and Stewart, G. W. (1978)
*LINPACK Users Guide.* Philadelphia: SIAM Publications.

##### See Also

`norm`

;
`svd`

for the singular value decomposition and
`qr`

for the \(QR\) one.

##### Examples

`library(base)`

```
# NOT RUN {
kappa(x1 <- cbind(1, 1:10)) # 15.71
kappa(x1, exact = TRUE) # 13.68
kappa(x2 <- cbind(x1, 2:11)) # high! [x2 is singular!]
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
sv9 <- svd(h9 <- hilbert(9))$ d
kappa(h9) # pretty high!
kappa(h9, exact = TRUE) == max(sv9) / min(sv9)
kappa(h9, exact = TRUE) / kappa(h9) # 0.677 (i.e., rel.error = 32%)
# }
```

*Documentation reproduced from package base, version 3.5.1, License: Part of R 3.5.1*

### Community examples

**ht2kay@gmail.com**at Apr 22, 2018 base v3.4.3

Two methods were used to identify mosquito samples.The methods are morphological identification and molecular identification.There were 200 samples where morphological idenntification classified 90 samples as An. gambiae and 110 as An. funestus.Molecular identification classified 2 as An arabiensis, 7 as An quad, 7 An funstsus ss, 181 An leesoni .kappatri