blob: d5319cbc17851de8bd0a9dce2c894f24256f35a3 [file] [log] [blame]
% File src/library/stats/man/mahalanobis.Rd
% Part of the R package, https://www.R-project.org
% Copyright (C) 1995-2014 R Core Team
% Distributed under GPL 2 or later
\name{mahalanobis}
\title{Mahalanobis Distance}
\usage{
mahalanobis(x, center, cov, inverted = FALSE, ...)
}
\alias{mahalanobis}
\arguments{
\item{x}{vector or matrix of data with, say, \eqn{p} columns.}
\item{center}{mean vector of the distribution or second data vector of
length \eqn{p} or recyclable to that length. If set to
\code{\link{FALSE}}, the centering step is skipped.}
\item{cov}{covariance matrix (\eqn{p \times p}{p x p}) of the distribution.}
\item{inverted}{logical. If \code{TRUE}, \code{cov} is supposed to
contain the \emph{inverse} of the covariance matrix.}
\item{...}{passed to \code{\link{solve}} for computing the inverse of
the covariance matrix (if \code{inverted} is false).}
}
\description{
Returns the squared Mahalanobis distance of all rows in \code{x} and the
vector \eqn{\mu}{mu} = \code{center} with respect to
\eqn{\Sigma}{Sigma} = \code{cov}.
This is (for vector \code{x}) defined as
\deqn{D^2 = (x - \mu)' \Sigma^{-1} (x - \mu)}{D^2 = (x - \mu)' \Sigma^-1 (x - \mu)}
}
\seealso{\code{\link{cov}}, \code{\link{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 = 0.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')
}
\keyword{multivariate}