pub struct MultinomialFitOutputs {
pub coefficients_active: Array2<f64>,
pub fitted_probabilities: Array2<f64>,
pub iterations: usize,
pub converged: bool,
pub penalized_neg_log_likelihood: f64,
pub deviance: f64,
pub coefficient_covariance: Array2<f64>,
}Expand description
Outputs of fit_penalized_multinomial.
Fields§
§coefficients_active: Array2<f64>Active-class coefficient block, shape (P, K-1) (column a is β_a).
The reference class K - 1 has β_{K-1} ≡ 0 by construction and is
not stored.
fitted_probabilities: Array2<f64>Fitted probabilities, shape (N, K).
iterations: usizeNumber of Newton iterations executed (including the final step that satisfied the tolerance).
converged: booltrue if the relative-step test was satisfied; false if the
solver exhausted max_iter. (A non-converged solve is still
returned; the caller decides whether to escalate.)
penalized_neg_log_likelihood: f64Penalized negative log-likelihood at the returned β̂:
−log L(β̂) + ½ Σ_a λ_a · β̂_a^T S β̂_a.
deviance: f64Unpenalized deviance −2 log L(β̂) for diagnostic reporting.
coefficient_covariance: Array2<f64>Joint Laplace posterior coefficient covariance H⁻¹ at the converged
β̂, shape (P·(K−1))×(P·(K−1)) (#1101). Block-ordered to match the
stacked active-class coefficient vector β = [β_0; …; β_{K-2}]: active
class a’s P coefficients occupy rows/cols a·P .. (a+1)·P, indexed
θ[a·P + i] = β̂[i, a]. This is the Laplace covariance from the factored
penalized Hessian XᵀWX + diag_a(λ_a)⊗S; it drives the delta-method
per-class probability standard errors (Self::predict_probabilities_with_se)
on the fixed-λ inner-solve path.
Implementations§
Source§impl MultinomialFitOutputs
impl MultinomialFitOutputs
Sourcepub fn n_active_classes(&self) -> usize
pub fn n_active_classes(&self) -> usize
Number of active classes M = K − 1 (columns of
Self::coefficients_active).
Sourcepub fn p_per_class(&self) -> usize
pub fn p_per_class(&self) -> usize
Per-class coefficient dimension P (rows of
Self::coefficients_active).
Sourcepub fn predict_probabilities_with_se(
&self,
x_new: ArrayView2<'_, f64>,
) -> Result<(Array2<f64>, Array2<f64>), EstimationError>
pub fn predict_probabilities_with_se( &self, x_new: ArrayView2<'_, f64>, ) -> Result<(Array2<f64>, Array2<f64>), EstimationError>
Evaluate softmax(X·β̂) AND its delta-method per-class probability
standard error at fresh design rows X_new (#1101), using the joint
Laplace covariance Self::coefficient_covariance.
The softmax Jacobian is ∂p_c/∂η_b = p_c (δ_{cb} − p_b) for active class
b ∈ 0..M, and ∂η_b/∂β[i,a] = X[i]·δ_{ab}, so the gradient of the
class-c probability w.r.t. the block-ordered coefficient vector is
g_c[a·P + i] = X[i]·p_c (δ_{ca} − p_a) (the reference class M
contributes only through −p_a in every active block). The delta-method
variance is Var(p_c) = g_cᵀ Σ g_c with Σ = H⁻¹, and
SE(p_c) = √Var(p_c). Returns (probs (N,K), prob_se (N,K)). X_new
must have P columns (the same design basis used at fit time); its row
count sets N. The SE is unclamped (the interval consumer applies the
simplex [0,1] clamp).
Trait Implementations§
Source§impl Clone for MultinomialFitOutputs
impl Clone for MultinomialFitOutputs
Source§fn clone(&self) -> MultinomialFitOutputs
fn clone(&self) -> MultinomialFitOutputs
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for MultinomialFitOutputs
impl RefUnwindSafe for MultinomialFitOutputs
impl Send for MultinomialFitOutputs
impl Sync for MultinomialFitOutputs
impl Unpin for MultinomialFitOutputs
impl UnsafeUnpin for MultinomialFitOutputs
impl UnwindSafe for MultinomialFitOutputs
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.