How to Perform Robust Regression in R

Spread the love

Robust regression is a form of regression analysis designed to overcome some limitations of traditional methods. Specifically, it’s intended for scenarios where the data contains outliers or is influenced by small leverage points which can distort the predictions and interpretations of a classical regression model.

In this comprehensive guide, we will delve deep into robust regression, understanding its significance, and step-by-step instructions on how to implement it using the R programming language.

Understanding Robust Regression

Classical linear regression models, while powerful, are sensitive to unusual data points. An outlier can substantially alter the regression line, leading to biased parameter estimates. Similarly, high leverage points, even if they aren’t outliers in the Y-direction, can have undue influence on the regression fit.

Robust regression aims to diminish the impact of these influential observations to produce a fit that’s more representative of the majority of the data.

Why Use Robust Regression?

  • Outliers: Traditional regression can be substantially influenced by single data points. Robust regression provides resistance against outliers.
  • Heteroscedasticity: In cases where the residuals have non-constant variance across levels of an independent variable, robust regression can be beneficial.
  • Model Mis-specification: When the functional form of the model isn’t correctly specified, robust regression can offer a better fit.

Implementing Robust Regression in R

R provides several packages and functions to implement robust regression. Here, we’ll focus on the MASS package and its rlm() function, which implements the M-estimation form of robust regression.

1. Setting Up Your Environment

Ensure you have the MASS package installed and loaded:


2. Sample Data

For this example, let’s use the mtcars dataset, which comes built-in with R:


3. Fitting the Robust Regression Model

Using rlm(), we can fit a robust regression model:

robust_model <- rlm(mpg ~ wt + hp, data = mtcars)

The rlm() function fits a linear model by robust regression using M-estimators. The function, by default, uses Huber’s Proposal 2 M-estimator, though other options are available.

4. Comparing with Classical Regression

To understand the value of the robust method, you can compare its results with a classical linear regression:

classical_model <- lm(mpg ~ wt + hp, data = mtcars)

Notice differences in coefficients, standard errors, and other statistics.

5. Visualizing the Results

Plotting the results can help visualize the effect of outliers and see how the robust method adjusts:


mtcars$robust_fitted <- fitted(robust_model)
mtcars$classical_fitted <- fitted(classical_model)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_line(aes(y = robust_fitted), color = "red") +
  geom_line(aes(y = classical_fitted), color = "blue") +
  ggtitle("Comparison of Robust vs. Classical Regression")

Advantages and Limitations


  • Resistance to outliers.
  • Often provides a better fit in the presence of heteroscedasticity or model mis-specification.


  • Might be harder to interpret than classical regression, especially for those unfamiliar with the technique.
  • Requires iterative methods for estimation which can be computationally intensive.


Robust regression offers a powerful alternative to classical linear regression, especially in the presence of outliers or when certain assumptions of the classical model are violated. By giving less weight to influential observations, robust regression often provides a better representation of the main structure of the data. With tools like the MASS package in R, implementing robust regression is straightforward, making it an invaluable technique for data analysts and researchers.

Posted in RTagged

Leave a Reply