Skip to main content

LassoFit

Struct LassoFit 

Source
pub struct LassoFit { /* private fields */ }
Expand description

A fitted lasso-regression model and its diagnostics.

Lasso solves min (1/2n)‖y − Xβ‖² + λ‖β_pen‖₁. Unlike ridge there is no closed form, so this fits by cyclic coordinate descent with soft-thresholding — the standard, well-conditioned algorithm (glmnet-style).

§Intercept and scaling

A detected constant column is an unpenalized intercept. Predictors are standardized internally (centered and scaled to unit variance) before the penalty is applied, then coefficients are transformed back to the original scale; the intercept is recovered from the means. Because standardization is internal, λ is on the standardized (1/2n)-objective scale — not comparable to ridge’s λ.

§The natural diagnostic: the active set

Lasso’s defining behavior is that it drives coefficients exactly to zero. The size of the surviving active_set is an unbiased estimate of the model’s degrees of freedom (Zou, Hastie & Tibshirani, 2007), which is what the information criteria here use as the parameter count.

Implementations§

Source§

impl LassoFit

Source

pub fn new(x: Array2<f64>, y: Array1<f64>, lambda: f64) -> Result<Self>

Fit lasso regression of y on X with penalty lambda ≥ 0 using coordinate descent (default tolerance 1e-7, up to 10_000 sweeps).

§Errors
Source

pub fn with_options( x: Array2<f64>, y: Array1<f64>, lambda: f64, tol: f64, max_iter: usize, ) -> Result<Self>

Like LassoFit::new but with an explicit convergence tolerance and maximum number of coordinate-descent sweeps.

Source

pub fn lambda(&self) -> f64

The penalty λ this model was fit with.

Source

pub fn n_observations(&self) -> usize

Number of observations.

Source

pub fn n_parameters(&self) -> usize

Number of coefficients (design columns, intercept included).

Source

pub fn has_intercept(&self) -> bool

Whether an unpenalized intercept is present.

Source

pub fn iterations(&self) -> usize

Coordinate-descent sweeps taken to converge.

Source

pub fn design_matrix(&self) -> ArrayView2<'_, f64>

The design matrix as fitted.

Source

pub fn coefficients(&self) -> ArrayView1<'_, f64>

Lasso coefficients, aligned to the design columns. Penalized coefficients that were shrunk out are exactly 0.0.

Source

pub fn fitted_values(&self) -> ArrayView1<'_, f64>

Fitted values ŷ = Xβ.

Source

pub fn residuals(&self) -> ArrayView1<'_, f64>

Residuals y − ŷ.

Source

pub fn residual_sum_of_squares(&self) -> f64

Residual sum of squares.

Source

pub fn response(&self) -> ArrayView1<'_, f64>

Response vector.

Source

pub fn active_set(&self) -> Vec<usize>

Indices of the design columns with non-zero (surviving) coefficients — the active set. Excludes the intercept.

Source

pub fn n_nonzero(&self) -> usize

Number of non-zero penalized coefficients — the active-set size, which is lasso’s degrees-of-freedom estimate (Zou–Hastie–Tibshirani).

Source

pub fn effective_df(&self) -> f64

Effective degrees of freedom: the active-set size plus one for the intercept if present.

Source

pub fn log_likelihood(&self) -> f64

Gaussian log-likelihood at the fitted residual variance.

Source

pub fn aic(&self) -> f64

AIC using the active-set-based degrees of freedom as the parameter count.

Source

pub fn bic(&self) -> f64

BIC using the active-set-based degrees of freedom.

Trait Implementations§

Source§

impl Clone for LassoFit

Source§

fn clone(&self) -> LassoFit

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LassoFit

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V