mahalanobis {stats}R Documentation

Mahalanobis Distance


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


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


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


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

[Package stats version 2.5.0 Index]