R: Mahalanobis Distance

mahalanobis {base} | R Documentation

## Mahalanobis Distance

### Description

Returns the Mahalanobis distance of all rows in `x` and the vector μ=`center` with respect to Σ=`cov`. This is (for vector `x`) defined as

D^2 = (x - μ)' Σ^{-1} (x - μ)

### Usage

    mahalanobis(x, center, cov, inverted=FALSE, tol.inv = 1e-7)

### Arguments

`x` | vector or matrix of data with, say, p columns.
`center` | mean vector of the distribution or second data vector of length p.
`cov` | covariance matrix (p x p) of the distribution.
`inverted` | logical. If `TRUE`, `cov` is supposed to contain the inverse of the covariance matrix.
`tol.inv` | tolerance to be used for computing the inverse (if `inverted` is false), see `solve`.

### Author(s)

Friedrich Leisch

### See Also

`cov`, `var`

### Examples

    ma <- cbind(1:6, 1:3)
    (S <-  var(ma))
    mahalanobis(c(0,0), 1:2, S)

    x <- matrix(rnorm(100*3), ncol = 3)
    stopifnot(mahalanobis(x, 0, diag(ncol(x))) == apply(x*x, 1, sum))
            ##- Here, D^2 = usual Euclidean distances
    Sx <- cov(x)
    D2 <- mahalanobis(x, apply(x, 2, mean), Sx)
    plot(density(D2, bw=.5), main="Mahalanobis distances, n=100, p=3"); rug(D2)
    qqplot(qchisq(ppoints(100), df=3), D2,
           main = expression("Q-Q plot of Mahalanobis" * ~D^2 *
                             " vs. quantiles of" * ~ chi[3]^2))
    abline(0, 1, col = 'gray')

[Package Contents]