How to Calculate Mahalanobis Distance in R

Spread the love

In the realm of statistics and machine learning, distances play a crucial role in understanding and interpreting data. One such critical measure of distance is the Mahalanobis Distance, a multivariate distance metric that measures the distance between a point and a distribution. Named after P.C. Mahalanobis, an Indian statistician, this distance measure is widely used in cluster analysis and classification techniques.

This article will guide you on how to calculate the Mahalanobis distance in R.

Understanding Mahalanobis Distance

Unlike Euclidean or Manhattan distance, the Mahalanobis distance is not defined in terms of a straight line between two points. Instead, it takes into account the correlations between variables and measures distance in terms of the standard deviation from the mean, which provides a more accurate representation when dealing with multivariate data.Mathematically, the Mahalanobis distance D^2 of a multivariate vector X = [X1, X2, …, Xn] from a group of values with mean μ = [μ1, μ2, …, μn] and covariance matrix S is defined as:

D^2 = (X – μ)’ S^-1 (X – μ)

Calculating Mahalanobis Distance Using Base R

You can compute the Mahalanobis distance in base R using the mahalanobis function. This function computes and returns the squared Mahalanobis distance of all rows in ‘x’ and the vector μ = center with respect to Sigma = cov.

Let’s consider a simple example where we calculate the Mahalanobis distance for a multivariate dataset.

# Create a data frame
df <- data.frame(
  x = c(2, 2.2, 2.4, 2.3, 2.1, 2.6, 2.8, 2.9),
  y = c(50, 52, 53, 51, 52.5, 55, 54, 56)

# Calculate the mean of the variables
means <- colMeans(df)

# Calculate the covariance matrix of the variables
cov_matrix <- cov(df)

# Compute Mahalanobis Distance
df$Mahalanobis_Dist <- mahalanobis(df, means, cov_matrix)

# Print the data frame

In this example, we first calculate the mean of each variable and the covariance matrix of the variables in our data frame. Then, we use the mahalanobis function to calculate the Mahalanobis distance for each point in the dataset.


The Mahalanobis distance is a highly effective and versatile distance measure in multivariate data analysis, machine learning, and pattern recognition. Its ability to account for the covariance of data and measure the distance in terms of standard deviation from the mean sets it apart from other distance measures, particularly when dealing with multivariate data. This article aimed to guide you on calculating the Mahalanobis distance in R.

Posted in RTagged

Leave a Reply