mahalanobis              package:stats              R Documentation

Mahalanobis Distance

Description:

     Returns the squared 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, ...)

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.

     ...: passed to 'solve' for computing the inverse of the covariance
          matrix (if 'inverted' is false).

See Also:

     'cov', 'var'

Examples:

     require(graphics)

     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))) == rowSums(x*x))
             ##- Here, D^2 = usual squared Euclidean distances

     Sx <- cov(x)
     D2 <- mahalanobis(x, colMeans(x), Sx)
     plot(density(D2, bw=.5),
          main="Squared 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')

