solow-robust 0.7.3

Rust robust linear regression by M-estimation. Huber, Tukey biweight, Andrew, Hampel, and Ramsay influence functions with iteratively reweighted least squares.
Documentation

solow-robust

Robust linear regression by M-estimation, matching the reference's robust linear model (RLM).

The estimator minimizes Σ ρ((yᵢ − xᵢ·β) / σ) for a robust criterion ρ using iteratively reweighted least squares (IRLS), re-estimating the scale σ from the residuals at each step.

use ndarray::{Array1, Array2};
use solow_robust::{norms::TukeyBiweight, Rlm};

// A noisy line near y = 2 + 0.5·x with a gross outlier at the last point.
let x: Vec<f64> = (1..=10).map(|i| i as f64).collect();
let y = Array1::from(vec![
    2.6, 3.1, 3.4, 4.1, 4.4, 5.1, 5.4, 6.1, 6.4, 100.0,
]);
let exog =
    Array2::from_shape_fn((10, 2), |(i, j)| if j == 0 { 1.0 } else { x[i] });
let res = Rlm::new(y, exog, TukeyBiweight::default())
    .unwrap()
    .fit()
    .unwrap();
assert!(res.converged);
// The redescending norm fully rejects the outlier ...
assert_eq!(res.weights[9], 0.0);
// ... so the slope stays close to the clean trend rather than ~10.
assert!((res.params[1] - 0.5).abs() < 0.05);

Components

  • [norms] — robust criterion functions ([norms::HuberT], [norms::TukeyBiweight], [norms::AndrewWave], [norms::LeastSquares]).
  • [scale] — robust scale estimators ([scale::mad], [scale::Huber], [scale::HuberScale]).
  • [Rlm] / [RlmResults] — the model and its fitted result.

Part of Solow — a complete statistical-modeling, econometrics & data-visualization toolkit for Rust. · Docs · License: BSD-3-Clause