mahalanobis               package:base               R Documentation

Mahalanobis Distance

Description:

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

                 D^2 = (x - mu)' Sigma^{-1} (x - mu)

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')

