Robust Linear Models

Robust linear models with support for the M-estimators listed under Norms.

See Module Reference for commands and arguments.


# Load modules and data
In [1]: import statsmodels.api as sm

In [2]: data = sm.datasets.stackloss.load()

In [3]: data.exog = sm.add_constant(data.exog)

# Fit model and print summary
In [4]: rlm_model = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT())

In [5]: rlm_results =

In [6]: print(rlm_results.params)
const       -41.026498
AIRFLOW       0.829384
WATERTEMP     0.926066
ACIDCONC     -0.127847
dtype: float64

Detailed examples can be found here:

Technical Documentation


  • PJ Huber. ‘Robust Statistics’ John Wiley and Sons, Inc., New York. 1981.

  • PJ Huber. 1973, ‘The 1972 Wald Memorial Lectures: Robust Regression: Asymptotics, Conjectures, and Monte Carlo.’ The Annals of Statistics, 1.5, 799-821.

  • R Venables, B Ripley. ‘Modern Applied Statistics in S’ Springer, New York,

  • C Croux, PJ Rousseeuw, ‘Time-efficient algorithms for two highly robust estimators of scale’ Computational statistics. Physica, Heidelberg, 1992.

Module Reference

Model Classes

RLM(endog, exog[, M, missing])

Robust Linear Model

Model Results

RLMResults(model, params, ...)

Class to contain RLM results



Andrew's wave for M estimation.

Hampel([a, b, c])

Hampel function for M-estimation.


Huber's T for M estimation.


Least squares rho for M-estimation and its derived functions.

MQuantileNorm(q, base_norm)

M-quantiles objective function based on a base norm


Ramsay's Ea for M estimation.


The parent class for the norms used for robust regression.


Trimmed mean function for M-estimation.


Tukey's biweight function for M-estimation.

estimate_location(a, scale[, norm, axis, ...])

M-estimator of location using self.norm and a current estimator of scale.


Huber([c, tol, maxiter, norm])

Huber's proposal 2 for estimating location and scale jointly.

HuberScale([d, tol, maxiter])

Huber's scaling for fitting robust linear models.

mad(a[, c, axis, center])

The Median Absolute Deviation along given axis of an array


Huber's scaling for fitting robust linear models.

iqr(a[, c, axis])

The normalized interquartile range along given axis of an array

qn_scale(a[, c, axis])

Computes the Qn robust estimator of scale

Last update: Jul 16, 2024