ridge_fit

Function ridge_fit 

Source
pub fn ridge_fit(
    x: &Matrix,
    y: &[f64],
    options: &RidgeFitOptions,
) -> Result<RidgeFit>
Expand description

Fits ridge regression for a single lambda value.

§Arguments

  • x - Design matrix (n × p). Should include intercept column if intercept=true.
  • y - Response vector (n elements)
  • options - Ridge fitting options

§Returns

A RidgeFit containing the fit results.

§Errors

Returns an error if:

  • lambda < 0
  • Dimensions don’t match
  • Matrix is numerically singular

§Algorithm

Uses the augmented QR approach:

  1. Standardize X and center y (if requested)
  2. Build augmented system:
    X_aug = [X_std; sqrt(lambda) * I_p]
    y_aug = [y_centered; 0_p]
  3. Solve using QR decomposition
  4. Unstandardize coefficients

§Example

use linreg_core::linalg::Matrix;
use linreg_core::regularized::ridge::{ridge_fit, RidgeFitOptions};

let x = Matrix::new(3, 2, vec![
    1.0, 2.0,
    1.0, 3.0,
    1.0, 4.0,
]);
let y = vec![3.0, 5.0, 7.0];

let options = RidgeFitOptions {
    lambda: 1.0,
    intercept: true,
    standardize: true,
};

let fit = ridge_fit(&x, &y, &options).unwrap();
println!("Intercept: {}", fit.intercept);
println!("Coefficients: {:?}", fit.coefficients);