

   MMaahhaallaannoobbiiss DDiissttaannccee

        mahalanobis(x, center, cov, inverted=FALSE)

   AArrgguummeennttss::

          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.

   DDeessccrriippttiioonn::

        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)

   AAuutthhoorr((ss))::

        Friedrich Leisch

   SSeeee AAllssoo::

        `cov', `var'

   EExxaammpplleess::

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

        x <- matrix(rnorm(100*3), ncol=3)
        all(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')

