# shrinkage::Problem

Shrinkage for Rust · 0.3.0

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
pub struct Problem<X, D, P>
```

A typed design, datafit, and penalty with training normalization settings. 

[`CoordinateDescent`](<a483abd31a32ac227c08ded97cd2308397e21a231635317d7b09559f288d410d>) supports a borrowed [`RawColumns`](<https://docs.rs/lazymatrix/0.11.0/lazymatrix/traits/columns/trait.RawColumns.html>) design with [`Gaussian`](<8f2aa89a892fb708e0e09c276910730b91ed3cb252a10cacd0a458cfbe59be13>) and [`L1`](<d68834a1b760d86f3b5ee835f77535148f4e2cb3f2e1f19663a1cc42f9808935>), returning [`LassoFit`](<d7f3cc1c178006da270ca45d4069f972c99a6c736656b6241882f09fbaf163bc>). [`crate::ProximalGradient`](<dbf207e0ed64fdc5c0f5cc6c364e567527bca92737c69f45f608ed62e8d669d5>) uses native forward and transposed products with [`crate::SmoothDatafit`](<f6f2ab3078b0ea56f174e2981b999f9be72be3c00ca00ad6485be1ed341db8c1>) and a complete [`crate::ProximalPenalty`](<45434a0394c5d718086e7e777f7db8271e2fb2b568e2519720168e5ea2877ed0>), returning [`crate::ProximalFit`](<d2e07dea08ce22428f4c32a035828d69140eaaa3958f7db8a2edfdb66fcdfd24>). Both results retain original-scale parameters and training normalization. [`crate::Irls`](<38d3c0c77c3a369dc72fa82940fe75e00e04888f78613113e69bdc12b1c8d7dd>) uses column access with [`crate::DiagonalHessianDatafit`](<0c7a483f4e622180bfcc5efab524b3377e2104e91e0d263eb5a204d4a4ab722e>) and [`crate::CoordinatePenalty`](<20da77c0be652888a9d06dd14f0baaa185037b5c45513c2454efefbc53d3c0e8>), returning [`crate::IrlsFit`](<20c675c8b6635b5652c30df90b363678987705f6c4e43dc91353d9331c3056c4>) with full KKT checks. [`crate::HybridCoordinateDescent`](<6e142c2de8c70807e35ff7553fffda094241be993dc7a332ee193688dc1f04bf>) fits Gaussian [`crate::ClusteredLasso`](<22d366ee2ce4c0fc6b3806b8d650b550a59a050150c6e013fd744f04d3754924>), [`crate::ChainFusedLasso`](<b88554a6c3f1121915d157c3e7684558bb6e9e9f59dbacd8115eb616c3631ce1>), and [`crate::Slope`](<b160a8286206ec7afad932df7849dd0eb34050fc3d7a58465f4671287121ba7c>) with dense aggregates, returning [`crate::HybridFit`](<4cfe41c15bbeb98348e19c60ae6240bfb650cf4d7fe4c2c32a660c298508b022>) with full PG mapping checks. [`crate::MultivariateGaussian`](<7fdf5e23960fc73db0e87f24ddb2a99c31ff7cb273565e92aaae35a4fcc0bf0a>) with [`crate::AxisPenalty`](<08140b02568bb11bf1bb6237342dadbfb2c025ac93d35b1a67ee6c91fa412ca3>) uses the same proximal iteration and returns [`crate::MultivariateFit`](<1fc706bb69ccb94d99ec29e41874bd0b6e5fcd1e3c66636a28146c58f6fd8c28>). Its coefficient feature and response dimensions and penalty axis are explicit. 

```rust
use faer::Mat;
use shrinkage::{CoordinateDescent, Gaussian, L1, Normalization, Problem};

let x = Mat::from_fn(3, 1, |i, _| i as f64);
let y = [1.0, 3.0, 5.0];
let fit = Problem::new(&x, Gaussian::new(&y), L1::new(0.1))
    .normalize(Normalization::Standardize)
    .fit_with(&CoordinateDescent::new())?;
let predictions = fit.predict(&x)?;
```

<a id="impl-cf10a960e7b010ab00a207c8438e1a90e888e59b26da81151bb810cafc38f3e5"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<M, D, P> Problem<&M, D, P> where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-a8eb372f9aa690eaa1d99d16809c9e6a91223de1bd94058273b6f7dfeb39d7e8"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/cross_validation.rs>)

```rust
impl<M, D, P> shrinkage::Problem<&M, D, P> where M: RowSubset + ?Sized, D: CrossValidationDatafit
```

<a id="method-cross_validate_path_with-a8eb372f9aa690eaa1d99d16809c9e6a91223de1bd94058273b6f7dfeb39d7e8"></a>

### `cross_validate_path_with`

```rust
pub fn cross_validate_path_with<S, Q, F>(
    &self,
    solver: &S,
    penalties: Vec<Q>,
    cv: &CrossValidation
) -> Result<CrossValidationFit<F, Q>, CrossValidationError<<M as >::Error>> where Q: Clone, F: ValidationFit, for<'a> S: PathSolver<Self, Q, Fit = F, Error = FitError<<M as >::Error>> + PathSolver<Problem<&'a <M as RowSubset>::Subset, <D as CrossValidationDatafit>::WithResponse<'a>, ()>, Q, Fit = F, Error = FitError<<M as >::Error>>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/cross_validation.rs>)

Cross-validate an explicit sequence, reusing a path workspace per fold. 

Candidates are cloned unchanged into each fold. Order them from most to least preferred for simplicity to define ties and one-standard-error selection, including penalties with independent strengths or profiles. A full-data path is fitted after selection and retained in the result. 

<a id="method-cross_validate_path_with-a8eb372f9aa690eaa1d99d16809c9e6a91223de1bd94058273b6f7dfeb39d7e8-documentation-errors"></a>

#### Errors

Reject invalid folds, metrics, supplied centers or scales, degenerate binomial training folds, empty paths, and any failed or nonconverged fit. 

<a id="method-cross_validate_regularization_path_with-a8eb372f9aa690eaa1d99d16809c9e6a91223de1bd94058273b6f7dfeb39d7e8"></a>

### `cross_validate_regularization_path_with`

```rust
pub fn cross_validate_regularization_path_with<S, F>(
    &self,
    solver: &S,
    options: &PathOptions,
    cv: &CrossValidation
) -> Result<CrossValidationFit<F, <P as PathPenalty>::AtStrength>, CrossValidationError<<M as >::Error>> where P: PathPenalty + Clone, F: ValidationFit, for<'a> S: RegularizationPathSolver<Self, Fit = F, Penalty = <P as PathPenalty>::AtStrength, Error = FitError<<M as >::Error>> + RegularizationPathSolver<Problem<&'a <M as RowSubset>::Subset, <D as CrossValidationDatafit>::WithResponse<'a>, P>, Fit = F, Penalty = <P as PathPenalty>::AtStrength, Error = FitError<<M as >::Error>>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/cross_validation.rs>)

Cross-validate automatic paths aligned by relative training-fold strength. 

Each fold computes normalization, null gradients, and its anchor only on its training rows. Candidates share log-spaced fractions of that anchor. The dimension-dependent endpoint ratio is resolved once using the smallest training fold. Early stopping is disabled to score every point. `lambda_start`, when supplied, is a fixed external anchor for every fold. The full-data path uses its own anchor after validation selects a fraction. 

<a id="method-cross_validate_regularization_path_with-a8eb372f9aa690eaa1d99d16809c9e6a91223de1bd94058273b6f7dfeb39d7e8-documentation-errors"></a>

#### Errors

Return fold-specific failures, undefined anchors, invalid settings, or any nonconverged path point. Supplied preprocessing vectors are rejected. 

<a id="impl-3c943f9a6d638eb4bb94f8aa956d6c6201d84b6213c56d99401ed2cbce299773"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<M, D, P> Problem<&M, D, P> where M: lazymatrix::MatrixShape + ColumnStats<f64> + ?Sized
```

<a id="impl-1912c5da152d0bec90f6bc6f572b86c740f7ceeb8ef2b35a3ee58563d2c6f785"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<M> Problem<&M, Gaussian<'_>, L1> where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<X, D, P> Problem<X, D, P>
```

<a id="method-centers-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `centers`

```rust
pub fn centers(&self) -> Option<&[f64]>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Explicit training centers, if supplied. 

<a id="method-datafit-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `datafit`

```rust
pub fn datafit(&self) -> &D
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Borrow the predictor datafit. 

<a id="method-design-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `design`

```rust
pub fn design(&self) -> &X
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Borrow the design component. 

<a id="method-fit_from_with_observer-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `fit_from_with_observer`

```rust
pub fn fit_from_with_observer<S: ObservedSolver<Self>, O: SolverObserver + ?Sized>(
    &self,
    solver: &S,
    initial: shrinkage::InitialPoint<'_>,
    observer: &mut O
) -> Result<<S as Solver>::Fit, <S as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Fit from an explicit optimization-scale point while observing updates. 

<a id="method-fit_from_with_observer-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Forwards fitting errors and rejects invalid initial parameters. 

<a id="method-fit_path_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `fit_path_with`

```rust
pub fn fit_path_with<S, Q>(
    &self,
    solver: &S,
    penalties: Vec<Q>
) -> Result<shrinkage::PathFit<<S as PathSolver>::Fit, Q>, <S as PathSolver>::Error> where S: shrinkage::PathSolver<Self, Q>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Fit an owned explicit penalty sequence in caller order. 

<a id="method-fit_path_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Forwards fitting errors without a partial path. Iteration-limit fits remain available and initialize the next point. 

<a id="method-fit_regularization_path_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `fit_regularization_path_with`

```rust
pub fn fit_regularization_path_with<S: shrinkage::RegularizationPathSolver<Self>>(
    &self,
    solver: &S,
    options: &shrinkage::PathOptions
) -> Result<shrinkage::PathFit<<S as RegularizationPathSolver>::Fit, <S as RegularizationPathSolver>::Penalty>, <S as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Generate and fit a regularization sequence with one data preparation. 

<a id="method-fit_regularization_path_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Forwards invalid options, undefined null models, and fitting errors. 

<a id="method-fit_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `fit_with`

```rust
pub fn fit_with<S: Solver<Self>>(
    &self,
    solver: &S
) -> Result<<S as Solver>::Fit, <S as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Fit with a solver that supports this composition. 

<a id="method-fit_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Forwards validation and numerical failures from the selected solver. 

<a id="method-fit_with_observer-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `fit_with_observer`

```rust
pub fn fit_with_observer<S: ObservedSolver<Self>, O: SolverObserver + ?Sized>(
    &self,
    solver: &S,
    observer: &mut O
) -> Result<<S as Solver>::Fit, <S as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Fit a supported typed problem while observing accepted optimization states. 

Observations use optimization-scale parameters, before back-transformation. 

<a id="method-fit_with_observer-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Returns the same validation, numerical, and backend errors as fitting. 

<a id="method-maximum_penalty_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `maximum_penalty_with`

```rust
pub fn maximum_penalty_with<S: shrinkage::RegularizationPathSolver<Self>>(
    &self,
    solver: &S
) -> Result<shrinkage::PenaltyMaximum, <S as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Calculate the zero-coefficient threshold on the optimization scale. 

<a id="method-maximum_penalty_with-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a-documentation-errors"></a>

#### Errors

Forwards null-model, component, and backend validation failures. 

<a id="method-new-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `new`

```rust
pub fn new(design: X, datafit: D, penalty: P) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Compose a design, datafit, and penalty. 

<a id="method-normalization-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `normalization`

```rust
pub fn normalization(&self) -> Normalization
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Selected training normalization policy. 

<a id="method-normalize-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `normalize`

```rust
pub fn normalize(self, normalization: Normalization) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Select lazy training-column normalization. 

<a id="method-penalty-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `penalty`

```rust
pub fn penalty(&self) -> &P
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Borrow the complete penalty. 

<a id="method-scales-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `scales`

```rust
pub fn scales(&self) -> Option<&[f64]>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Explicit training scales, if supplied. 

<a id="method-with_centers-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `with_centers`

```rust
pub fn with_centers(self, centers: Vec<f64>) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Supply centers in training-column order, checked when fitting. 

<a id="method-with_scales-c7847d2011210179bfed2714a1ba6be67ce3fcd79fc4c76f1b4eb94fc92e771a"></a>

### `with_scales`

```rust
pub fn with_scales(self, scales: Vec<f64>) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

Supply positive scales in training-column order, checked when fitting. 

<a id="impl-bd382dbe215a4a51d7e1c3678a122b1f6fed5061998baac1b4fdb27dbfc14a58"></a>

## Implementation of Clone

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<X: core::clone::Clone, D: core::clone::Clone, P: core::clone::Clone> Clone for Problem<X, D, P>
```

<a id="method-clone-bd382dbe215a4a51d7e1c3678a122b1f6fed5061998baac1b4fdb27dbfc14a58"></a>

### `clone`

```rust
fn clone(&self) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

<a id="impl-31510d45635b01f4698b62761946e29f1a68617a9aedd7113d91787b0fae4901"></a>

## Implementation of Debug

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<X: core::fmt::Debug, D: core::fmt::Debug, P: core::fmt::Debug> Debug for Problem<X, D, P>
```

<a id="method-fmt-31510d45635b01f4698b62761946e29f1a68617a9aedd7113d91787b0fae4901"></a>

### `fmt`

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

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

<a id="impl-a1a1e361bdf7eb80ff4cfa2f4e0ad65dc55e057a1748c92d4bbc47fcff608d8e"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<M, D, P, V> ObservedSolver<Problem<&M, D, P>> for ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, P: ProximalPenalty, V: ProximalVector
```

<a id="method-solve_from_with_observer-a1a1e361bdf7eb80ff4cfa2f4e0ad65dc55e057a1748c92d4bbc47fcff608d8e"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, D, P>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<<Self as Solver>::Fit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="impl-703293d97c638886cc526342da272fbe40fbd02656b404b9c3d7fdbab6dc069c"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

```rust
impl<M, D, P> ObservedSolver<Problem<&M, D, P>> for Irls where M: RawColumns<f64> + ColumnStats<f64> + ?Sized, D: QuadraticModelDatafit, P: CoordinatePenalty
```

<a id="method-solve_from_with_observer-703293d97c638886cc526342da272fbe40fbd02656b404b9c3d7fdbab6dc069c"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, D, P>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<IrlsFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

<a id="impl-85f668ca84ec1ab5693f5bf8f1e6b51243ed412ffb473434f01ab402f89a9847"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

```rust
impl<M, V, P> ObservedSolver<Problem<&M, Binomial<'_>, P>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector, P: ReducedCoordinatePenalty
```

<a id="method-solve_from_with_observer-85f668ca84ec1ab5693f5bf8f1e6b51243ed412ffb473434f01ab402f89a9847"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, Binomial<'_>, P>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

<a id="impl-57b77277ace6e85d02648d67e220fd6dc33846057d49c04b47bd2c94186dc461"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> ObservedSolver<Problem<&M, Gaussian<'_>, ChainFusedLasso>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="method-solve_from_with_observer-57b77277ace6e85d02648d67e220fd6dc33846057d49c04b47bd2c94186dc461"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, Gaussian<'_>, ChainFusedLasso>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-12f743672c62067400884e3408559fbdf00613f6cdaddbd10b8e05e7e0a99b22"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> ObservedSolver<Problem<&M, Gaussian<'_>, ClusteredLasso>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="method-solve_from_with_observer-12f743672c62067400884e3408559fbdf00613f6cdaddbd10b8e05e7e0a99b22"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, Gaussian<'_>, ClusteredLasso>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-be70d8867c7f1faf85156966c4b75ac075f2819325ab868b2bd749969a04d250"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> ObservedSolver<Problem<&M, Gaussian<'_>, Slope>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="method-solve_from_with_observer-be70d8867c7f1faf85156966c4b75ac075f2819325ab868b2bd749969a04d250"></a>

### `solve_from_with_observer`

```rust
fn solve_from_with_observer<O: SolverObserver + ?Sized>(
    &self,
    problem: &Problem<&M, Gaussian<'_>, Slope>,
    initial: Option<shrinkage::InitialPoint<'_>>,
    observer: &mut O
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-2b6aa9cbdb5f1b5b53538f93f480df96e2325769eef586a369f04ef6bbd893dd"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<M> ObservedSolver<Problem<&M, Gaussian<'_>, L1>> for CoordinateDescent where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-c9d7b5b7ecefad19ee0189543d189c5cf8a258c1641fcf5e60ce2ff11c570e33"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/coordinate.rs>)

```rust
impl<D, P, Q> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>, Q> for shrinkage::CoordinateDescent where D: shrinkage::SmoothDatafit, Q: shrinkage::ProximalPenalty
```

<a id="impl-a2c6b51c6160ceb48d129757607fbcba877a435edc67db1b9304e4b33fd207d5"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<D, P, Q> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>, Q> for shrinkage::ProximalGradient<Vec<f64>> where D: SmoothDatafit, Q: ProximalPenalty
```

<a id="associated-type-Error-a2c6b51c6160ceb48d129757607fbcba877a435edc67db1b9304e4b33fd207d5"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Fit-a2c6b51c6160ceb48d129757607fbcba877a435edc67db1b9304e4b33fd207d5"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-solve_path-a2c6b51c6160ceb48d129757607fbcba877a435edc67db1b9304e4b33fd207d5"></a>

### `solve_path`

```rust
fn solve_path(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, D, P>,
    penalties: Vec<Q>
) -> Result<PathFit<ProximalFit, Q>, <Self as PathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="impl-ee8c2a552136f89f340b4c4785c6c0518a9d2ad80472b47b41c9550ecfdfaaa0"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

```rust
impl<D: SmoothDatafit, P, Q: shrinkage::ProximalPenalty, V> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>, Q> for HybridCoordinateDescent<V>
```

<a id="associated-type-Error-ee8c2a552136f89f340b4c4785c6c0518a9d2ad80472b47b41c9550ecfdfaaa0"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Fit-ee8c2a552136f89f340b4c4785c6c0518a9d2ad80472b47b41c9550ecfdfaaa0"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-solve_path-ee8c2a552136f89f340b4c4785c6c0518a9d2ad80472b47b41c9550ecfdfaaa0"></a>

### `solve_path`

```rust
fn solve_path(
    &self,
    _: &Problem<Box<dyn RuntimeDesign + '_>, D, P>,
    _: Vec<Q>
) -> Result<PathFit<HybridFit, Q>, <Self as PathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="impl-f02be82e8f7f258c0258731d5f0548b03a1ceff7677446f33e22f5a50d2edea9"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

```rust
impl<M, D, P, Q, V> PathSolver<Problem<&M, D, P>, Q> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: HybridPathDatafit, Q: ReducedCoordinatePenalty, V: ProximalVector
```

<a id="associated-type-Error-f02be82e8f7f258c0258731d5f0548b03a1ceff7677446f33e22f5a50d2edea9"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Fit-f02be82e8f7f258c0258731d5f0548b03a1ceff7677446f33e22f5a50d2edea9"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-solve_path-f02be82e8f7f258c0258731d5f0548b03a1ceff7677446f33e22f5a50d2edea9"></a>

### `solve_path`

```rust
fn solve_path(
    &self,
    problem: &Problem<&M, D, P>,
    penalties: Vec<Q>
) -> Result<PathFit<HybridFit, Q>, <Self as PathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="impl-cc241d74572d7f8ed750e4afc6667076aa08a67e65c7e2abd4bc59d67bf51964"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<M, D, P, Q, V> PathSolver<Problem<&M, D, P>, Q> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, Q: ProximalPenalty, V: ProximalVector
```

<a id="associated-type-Error-cc241d74572d7f8ed750e4afc6667076aa08a67e65c7e2abd4bc59d67bf51964"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Fit-cc241d74572d7f8ed750e4afc6667076aa08a67e65c7e2abd4bc59d67bf51964"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-solve_path-cc241d74572d7f8ed750e4afc6667076aa08a67e65c7e2abd4bc59d67bf51964"></a>

### `solve_path`

```rust
fn solve_path(
    &self,
    problem: &Problem<&M, D, P>,
    penalties: Vec<Q>
) -> Result<PathFit<ProximalFit, Q>, <Self as PathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="impl-0bac03ca5e5b8100fde3e49b05634cf4b4080dc3e43ff1739b16b78af26daf0e"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

```rust
impl<M, D, P, Q> PathSolver<Problem<&M, D, P>, Q> for shrinkage::Irls where M: RawColumns<f64> + ColumnStats<f64> + ?Sized, D: QuadraticModelDatafit, Q: CoordinatePenalty
```

<a id="associated-type-Error-0bac03ca5e5b8100fde3e49b05634cf4b4080dc3e43ff1739b16b78af26daf0e"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="associated-type-Fit-0bac03ca5e5b8100fde3e49b05634cf4b4080dc3e43ff1739b16b78af26daf0e"></a>

### `Fit`

```rust
type Fit = IrlsFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="method-solve_path-0bac03ca5e5b8100fde3e49b05634cf4b4080dc3e43ff1739b16b78af26daf0e"></a>

### `solve_path`

```rust
fn solve_path(
    &self,
    problem: &Problem<&M, D, P>,
    penalties: Vec<Q>
) -> Result<PathFit<IrlsFit, Q>, <Self as PathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="impl-2c922a1b51f8422cde6974ec1686ccc2a939cb9ba607b129f0f6e9b60eeff887"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, Q, V> PathSolver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>, AxisPenalty<Q>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, Q: ProximalPenalty, V: ProximalVector
```

<a id="impl-6f8fada035423d99ba9aef4396dac45184709dabfc05e11aa6e273b51cfe5b07"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/coordinate.rs>)

```rust
impl<M, P> PathSolver<Problem<&M, Gaussian<'_>, P>, L1> for shrinkage::CoordinateDescent where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-a88a53fec270ad545d10fad8f9dbca4187b6983bb37f8941c2ccbea9f2fd1fc7"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P, Q: ProximalPenalty> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>, AxisPenalty<Q>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="impl-431fdf1fda1938c7227d80cc0abec98e3338c9d788a70c7cfc141378d52ab119"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/coordinate.rs>)

```rust
impl<D, P> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for shrinkage::CoordinateDescent where D: shrinkage::SmoothDatafit + NullModelDatafit, P: PathPenalty
```

<a id="impl-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<D, P> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for shrinkage::ProximalGradient<Vec<f64>> where D: SmoothDatafit + NullModelDatafit, P: PathPenalty
```

<a id="associated-type-Error-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Fit-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Penalty-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

### `Penalty`

```rust
type Penalty = <P as PathPenalty>::AtStrength;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-maximum_penalty-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, D, P>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-solve_regularization_path-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, D, P>,
    options: &PathOptions
) -> Result<PathFit<ProximalFit, <P as PathPenalty>::AtStrength>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="impl-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

```rust
impl<D: shrinkage::PathDatafit, P: PathPenalty, V> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for HybridCoordinateDescent<V>
```

<a id="associated-type-Error-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Fit-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Penalty-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

### `Penalty`

```rust
type Penalty = <P as PathPenalty>::AtStrength;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-maximum_penalty-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    _: &Problem<Box<dyn RuntimeDesign + '_>, D, P>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-solve_regularization_path-2955dac1be8fadde2a6cb49810fb977d9849c0669ea9d2c4e59aac577d103d36"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    _: &Problem<Box<dyn RuntimeDesign + '_>, D, P>,
    _: &PathOptions
) -> Result<PathFit<HybridFit, <Self as RegularizationPathSolver>::Penalty>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="impl-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

```rust
impl<M, D, P, V> RegularizationPathSolver<Problem<&M, D, P>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: HybridPathDatafit, P: PathPenalty, <P as PathPenalty>::AtStrength: ReducedCoordinatePenalty, V: ProximalVector
```

<a id="associated-type-Error-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Fit-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="associated-type-Penalty-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

### `Penalty`

```rust
type Penalty = <P as PathPenalty>::AtStrength;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-maximum_penalty-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<&M, D, P>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="method-solve_regularization_path-713b3edbfeeea1beeaa7d41dfbcffe25d2c3368c5a681bbf811bc035e0d7c848"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<&M, D, P>,
    options: &PathOptions
) -> Result<PathFit<HybridFit, <P as PathPenalty>::AtStrength>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/path.rs>)

<a id="impl-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<M, D, P, V> RegularizationPathSolver<Problem<&M, D, P>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit + NullModelDatafit, P: PathPenalty, V: ProximalVector
```

<a id="associated-type-Error-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Fit-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="associated-type-Penalty-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

### `Penalty`

```rust
type Penalty = <P as PathPenalty>::AtStrength;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-maximum_penalty-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<&M, D, P>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="method-solve_regularization_path-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<&M, D, P>,
    options: &PathOptions
) -> Result<PathFit<ProximalFit, <P as PathPenalty>::AtStrength>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

<a id="impl-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

```rust
impl<M, D, P> RegularizationPathSolver<Problem<&M, D, P>> for shrinkage::Irls where M: RawColumns<f64> + ColumnStats<f64> + ?Sized, D: QuadraticModelDatafit + NullModelDatafit, P: PathPenalty, <P as PathPenalty>::AtStrength: CoordinatePenalty
```

<a id="associated-type-Error-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="associated-type-Fit-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

### `Fit`

```rust
type Fit = IrlsFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="associated-type-Penalty-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

### `Penalty`

```rust
type Penalty = <P as PathPenalty>::AtStrength;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="method-maximum_penalty-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<&M, D, P>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="method-solve_regularization_path-bcf810d7496113ff8a81e6054808d3369b760e0587e1e0e47b5f76fd1c12b83e"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<&M, D, P>,
    options: &PathOptions
) -> Result<PathFit<IrlsFit, <P as PathPenalty>::AtStrength>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/irls.rs>)

<a id="impl-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, V> RegularizationPathSolver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, P: PathPenalty, V: ProximalVector
```

<a id="associated-type-Error-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Fit-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

### `Fit`

```rust
type Fit = MultivariateFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Penalty-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

### `Penalty`

```rust
type Penalty = AxisPenalty<<P as PathPenalty>::AtStrength>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-maximum_penalty-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-solve_regularization_path-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>,
    options: &PathOptions
) -> Result<PathFit<MultivariateFit, <Self as RegularizationPathSolver>::Penalty>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="impl-c51e3134067105ad2fd436c3924e323e94b577f4bc64605dcb42f4b8be50030c"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/coordinate.rs>)

```rust
impl<M> RegularizationPathSolver<Problem<&M, Gaussian<'_>, L1>> for shrinkage::CoordinateDescent where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P: PathPenalty> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="associated-type-Error-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Fit-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

### `Fit`

```rust
type Fit = MultivariateFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Penalty-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

### `Penalty`

```rust
type Penalty = AxisPenalty<<P as PathPenalty>::AtStrength>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-maximum_penalty-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

### `maximum_penalty`

```rust
fn maximum_penalty(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>
) -> Result<PenaltyMaximum, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-solve_regularization_path-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

### `solve_regularization_path`

```rust
fn solve_regularization_path(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>,
    options: &PathOptions
) -> Result<PathFit<MultivariateFit, <Self as RegularizationPathSolver>::Penalty>, <Self as RegularizationPathSolver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="impl-a93fa160ff272473d36a375556b86fff8edfd884243e1107ac6cebf1d47c9958"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

```rust
impl Solver<Problem<Box<dyn RuntimeDesign + '_>, Box<dyn SmoothDatafit<Error = FitError> + '_>, Box<dyn ProximalPenalty<Error = FitError> + '_>>> for shrinkage::CoordinateDescent
```

<a id="impl-988bd5ef1eb00d670a89ec9d87f9bff36a3d8b4768e2a6d4e03b41db330c5bb8"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

```rust
impl<D: SmoothDatafit, P: ProximalPenalty> Solver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="associated-type-Error-988bd5ef1eb00d670a89ec9d87f9bff36a3d8b4768e2a6d4e03b41db330c5bb8"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

<a id="associated-type-Fit-988bd5ef1eb00d670a89ec9d87f9bff36a3d8b4768e2a6d4e03b41db330c5bb8"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

<a id="method-solve-988bd5ef1eb00d670a89ec9d87f9bff36a3d8b4768e2a6d4e03b41db330c5bb8"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, D, P>
) -> Result<<Self as Solver>::Fit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

<a id="impl-c98a93b565b3bf7dfb8820d3072809c32b7976f967a0a29deed1a3ced2f92da6"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<M, D, P, V> Solver<Problem<&M, D, P>> for ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, P: ProximalPenalty, V: ProximalVector
```

<a id="associated-type-Error-c98a93b565b3bf7dfb8820d3072809c32b7976f967a0a29deed1a3ced2f92da6"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="associated-type-Fit-c98a93b565b3bf7dfb8820d3072809c32b7976f967a0a29deed1a3ced2f92da6"></a>

### `Fit`

```rust
type Fit = ProximalFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="method-solve-c98a93b565b3bf7dfb8820d3072809c32b7976f967a0a29deed1a3ced2f92da6"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, D, P>
) -> Result<<Self as Solver>::Fit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="impl-33e9f3be78bec4e6b7e159d18c90887e51bcd45508a8f82a43fe1f3df7c37231"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

```rust
impl<M, D, P> Solver<Problem<&M, D, P>> for Irls where M: RawColumns<f64> + ColumnStats<f64> + ?Sized, D: QuadraticModelDatafit, P: CoordinatePenalty
```

<a id="associated-type-Error-33e9f3be78bec4e6b7e159d18c90887e51bcd45508a8f82a43fe1f3df7c37231"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

<a id="associated-type-Fit-33e9f3be78bec4e6b7e159d18c90887e51bcd45508a8f82a43fe1f3df7c37231"></a>

### `Fit`

```rust
type Fit = IrlsFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

<a id="method-solve-33e9f3be78bec4e6b7e159d18c90887e51bcd45508a8f82a43fe1f3df7c37231"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, D, P>
) -> Result<IrlsFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/irls.rs>)

<a id="impl-72736c4fbabe0cadc9050a6a123310797549b5e3b3281cd67d3f1b499d2ae697"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, V> Solver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, P: ProximalPenalty, V: ProximalVector
```

<a id="associated-type-Error-72736c4fbabe0cadc9050a6a123310797549b5e3b3281cd67d3f1b499d2ae697"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Fit-72736c4fbabe0cadc9050a6a123310797549b5e3b3281cd67d3f1b499d2ae697"></a>

### `Fit`

```rust
type Fit = MultivariateFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-solve-72736c4fbabe0cadc9050a6a123310797549b5e3b3281cd67d3f1b499d2ae697"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>
) -> Result<<Self as Solver>::Fit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="impl-d4f9004d8868597f92dc06ff48e3f9461e58f68c6ba90f37c192b1245f925eb3"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

```rust
impl<M, V, P> Solver<Problem<&M, Binomial<'_>, P>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector, P: ReducedCoordinatePenalty
```

<a id="associated-type-Error-d4f9004d8868597f92dc06ff48e3f9461e58f68c6ba90f37c192b1245f925eb3"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

<a id="associated-type-Fit-d4f9004d8868597f92dc06ff48e3f9461e58f68c6ba90f37c192b1245f925eb3"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

<a id="method-solve-d4f9004d8868597f92dc06ff48e3f9461e58f68c6ba90f37c192b1245f925eb3"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, Binomial<'_>, P>
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid/irls.rs>)

<a id="impl-eb138a829bbcf171c09e97ddac534760473d645ff09af2a0b0cc4b3ae11e7883"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> Solver<Problem<&M, Gaussian<'_>, ChainFusedLasso>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="associated-type-Error-eb138a829bbcf171c09e97ddac534760473d645ff09af2a0b0cc4b3ae11e7883"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="associated-type-Fit-eb138a829bbcf171c09e97ddac534760473d645ff09af2a0b0cc4b3ae11e7883"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="method-solve-eb138a829bbcf171c09e97ddac534760473d645ff09af2a0b0cc4b3ae11e7883"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, Gaussian<'_>, ChainFusedLasso>
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-922c9aea132b463a0c1b336cdf2a08500e6b9124018a84d76f3d90c9fb8548d9"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> Solver<Problem<&M, Gaussian<'_>, ClusteredLasso>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="associated-type-Error-922c9aea132b463a0c1b336cdf2a08500e6b9124018a84d76f3d90c9fb8548d9"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="associated-type-Fit-922c9aea132b463a0c1b336cdf2a08500e6b9124018a84d76f3d90c9fb8548d9"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="method-solve-922c9aea132b463a0c1b336cdf2a08500e6b9124018a84d76f3d90c9fb8548d9"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, Gaussian<'_>, ClusteredLasso>
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-340fd9ee2f10f208887c00cdc5bfa0d730301ade8be911e486aeac9ba0101587"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<M, V> Solver<Problem<&M, Gaussian<'_>, Slope>> for HybridCoordinateDescent<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, V: ProximalVector
```

<a id="associated-type-Error-340fd9ee2f10f208887c00cdc5bfa0d730301ade8be911e486aeac9ba0101587"></a>

### `Error`

```rust
type Error = FitError<<M as MatrixErrorType>::Error>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="associated-type-Fit-340fd9ee2f10f208887c00cdc5bfa0d730301ade8be911e486aeac9ba0101587"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="method-solve-340fd9ee2f10f208887c00cdc5bfa0d730301ade8be911e486aeac9ba0101587"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<&M, Gaussian<'_>, Slope>
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-3c949e54ceacfd1c4e6e5ed41e05b28553801a6ef3db99564f0087df0fedd8b4"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem.rs>)

```rust
impl<M> Solver<Problem<&M, Gaussian<'_>, L1>> for CoordinateDescent where M: RawColumns<f64> + ColumnStats<f64> + ?Sized
```

<a id="impl-33820495b1364e800232fe3f3457f212e074b7b2b484d840ffaeff451bac8983"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P: ProximalPenalty> Solver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="associated-type-Error-33820495b1364e800232fe3f3457f212e074b7b2b484d840ffaeff451bac8983"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="associated-type-Fit-33820495b1364e800232fe3f3457f212e074b7b2b484d840ffaeff451bac8983"></a>

### `Fit`

```rust
type Fit = MultivariateFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="method-solve-33820495b1364e800232fe3f3457f212e074b7b2b484d840ffaeff451bac8983"></a>

### `solve`

```rust
fn solve(
    &self,
    problem: &Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>
) -> Result<<Self as Solver>::Fit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

<a id="impl-5d77e3aa7e5c8fae320cf517509afccf5a8f20a1f45e1f9e6bad916d0073f18c"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

```rust
impl<V> Solver<Problem<Box<dyn RuntimeDesign + '_>, Box<dyn SmoothDatafit<Error = FitError> + '_>, Box<dyn ProximalPenalty<Error = FitError> + '_>>> for HybridCoordinateDescent<V>
```

<a id="associated-type-Error-5d77e3aa7e5c8fae320cf517509afccf5a8f20a1f45e1f9e6bad916d0073f18c"></a>

### `Error`

```rust
type Error = FitError<BackendError>;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="associated-type-Fit-5d77e3aa7e5c8fae320cf517509afccf5a8f20a1f45e1f9e6bad916d0073f18c"></a>

### `Fit`

```rust
type Fit = HybridFit;
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="method-solve-5d77e3aa7e5c8fae320cf517509afccf5a8f20a1f45e1f9e6bad916d0073f18c"></a>

### `solve`

```rust
fn solve(
    &self,
    _: &RuntimeProblem<'_>
) -> Result<HybridFit, <Self as Solver>::Error>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/hybrid.rs>)

<a id="impl-48dcd82f2cd6f2f0a6fc26ba332c827665963bae1b63778c2d19fad4ebc42957"></a>

## Implementation of Freeze

```rust
impl<X, D, P> Freeze for Problem<X, D, P> where X: Freeze, D: Freeze, P: Freeze
```

<a id="impl-2e375b8a06756f2989bb767f6b1a85936bfa15f8b18630a06e0e6fd2929084c2"></a>

## Implementation of RefUnwindSafe

```rust
impl<X, D, P> RefUnwindSafe for Problem<X, D, P> where X: RefUnwindSafe, D: RefUnwindSafe, P: RefUnwindSafe
```

<a id="impl-d41e9aa5f6b174a387225d0e279602a5b3b1a5c171697888604c2e60146e5fde"></a>

## Implementation of Send

```rust
impl<X, D, P> Send for Problem<X, D, P> where X: Send, D: Send, P: Send
```

<a id="impl-e7616931106191e03be02487bfe9961ba4954aff0740cb5290eef23d6ed100b8"></a>

## Implementation of Sync

```rust
impl<X, D, P> Sync for Problem<X, D, P> where X: Sync, D: Sync, P: Sync
```

<a id="impl-76abd657dfe80625989b81b14448a283f97d3614758cd22402904b37cfc3ccbd"></a>

## Implementation of Unpin

```rust
impl<X, D, P> Unpin for Problem<X, D, P> where X: Unpin, D: Unpin, P: Unpin
```

<a id="impl-ed7d37848e7feec50b9306df211e60fa224d05a21a5ad11087becfa04e4211d7"></a>

## Implementation of UnsafeUnpin

```rust
impl<X, D, P> UnsafeUnpin for Problem<X, D, P> where X: UnsafeUnpin, D: UnsafeUnpin, P: UnsafeUnpin
```

<a id="impl-646bd0f203d2faa5eedc03ffc55c771a8d36e28748805946ce0bcf3a3e725807"></a>

## Implementation of UnwindSafe

```rust
impl<X, D, P> UnwindSafe for Problem<X, D, P> where X: UnwindSafe, D: UnwindSafe, P: UnwindSafe
```

<a id="impl-1e5682dc18e03c648aa9b125290c107c1e8d96ce8a179a8532e4057da4daf0cd"></a>

## Implementation of Any

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

<a id="impl-6c0b25c2c92cdb117802d9c0a4c70afc9a8bfb0da875bc6e66191e2349fcdf3f"></a>

## Implementation of Borrow

```rust
impl<T> Borrow<T> for T where T: ?Sized
```

<a id="impl-796e80d926348273a22b04d8e84f510693b11c06ec57c3c3e2e8c1524094a85c"></a>

## Implementation of BorrowMut

```rust
impl<T> BorrowMut<T> for T where T: ?Sized
```

<a id="impl-8360e4092e7ec4a05a26dd304cd739398f0cacc50c8d08dd5be0223d1a08d02e"></a>

## Implementation of ByRef

```rust
impl<T> ByRef<T> for T
```

<a id="impl-dbb1293b7b5dd80c4d9a98cfdd6843dc7470224c0b1387731cd418da07046d7b"></a>

## Implementation of CastableFrom

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

<a id="impl-97b65e7dfc44b5ecaa495a3a19fe737914a1e9f8532200cf8f46191314e7d777"></a>

## Implementation of CastableFrom

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

<a id="impl-86d7da2bfd1140cc1675dfe6a975e6a2762338ab32731152da0723858ef3aa81"></a>

## Implementation of CloneToUninit

```rust
impl<T> CloneToUninit for T where T: Clone
```

<a id="impl-c22bdd3b1b677b66eb32d1c182cc1410c7f0c46491dd74e6a659647c238d19ec"></a>

## Implementation of From

```rust
impl<T> From<T> for T
```

<a id="impl-5adf6ca1830f30fbbac655ab8ff394d254954df7ededc7cc833c72fdc87d6f00"></a>

## Implementation of Imply

```rust
impl<T, U> Imply<T> for U where T: ?Sized, U: ?Sized
```

<a id="impl-85eec431edd188129f88290bbcb748e4d2fdc97f7efef3c162b8c252286ffec0"></a>

## Implementation of Into

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

<a id="impl-c40268dd59dd3329202d3c0544c62372e98ff3baa8ec442ec00752e024ec1d06"></a>

## Implementation of IntoEither

```rust
impl<T> IntoEither for T
```

<a id="impl-5655b1ef858b34a584cb80104f040c8a4063ced0d281311a0833ed12aefde86e"></a>

## Implementation of Pointable

```rust
impl<T> Pointable for T
```

<a id="impl-8cc2aa01198fc9fa44f08b889f62988d70d2a7f4f0f11f4666d4c08bdaddb22a"></a>

## Implementation of Read

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

<a id="impl-5ea09131039c62dd92b119d480a35c7e2b33d2b81dccf0b849f6b1f19f4bda24"></a>

## Implementation of Same

```rust
impl<T> Same for T
```

<a id="impl-7ee6ff38d6674f5edfe4734359062c2a67a572cff5899a89704764822b931c7f"></a>

## Implementation of SupersetOf

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

<a id="impl-a8ef6e94191301c3685488478f4905086c47137bac2d606ea4d09631d5472b06"></a>

## Implementation of ToOwned

```rust
impl<T> ToOwned for T where T: Clone
```

<a id="impl-83960135d00d98080c95a08867729696e36811280c2dd9cf34c1b4fe21c81e18"></a>

## Implementation of TryFrom

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

<a id="impl-1cc495bcaa5112ffb304e7f0de674feca391fd97f47bec86033a9225b72ac05c"></a>

## Implementation of TryInto

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