pub enum LikelihoodScaleMetadata {
ProfiledGaussian,
FixedDispersion {
phi: f64,
},
FixedGammaShape {
shape: f64,
},
EstimatedGammaShape {
shape: f64,
},
EstimatedBetaPhi {
phi: f64,
},
EstimatedTweediePhi {
phi: f64,
},
EstimatedNegBinTheta {
theta: f64,
},
FixedNegBinTheta {
theta: f64,
},
Unspecified,
}Expand description
How a likelihood’s scale parameter is handled by the fit/result contract.
Variants§
ProfiledGaussian
Gaussian identity fits profile sigma outside the fixed-scale GLM machinery.
FixedDispersion
Fixed exponential-dispersion parameter phi.
FixedGammaShape
Fixed Gamma shape k, equivalent to phi = 1 / k.
EstimatedGammaShape
Gamma shape k estimated jointly with the mean model.
EstimatedBetaPhi
Beta-regression precision phi estimated jointly with the mean model.
Var(y) = mu(1-mu)/(1+phi); larger phi means less noise. Estimated
from the working residuals after each mean fit and refreshed across outer
iterations, exactly like the Gamma shape (issue #567).
EstimatedTweediePhi
Tweedie exponential-dispersion phi estimated jointly with the mean
model. Var(y) = phi · mu^p with phi a genuine free parameter (unlike
Binomial/Poisson, where phi ≡ 1). Estimated by the Pearson moment
estimator phî = Σ wᵢ (yᵢ − μᵢ)² / μᵢ^p / Σ wᵢ at the converged η and
refreshed across outer iterations, exactly like the Gamma shape and the
Beta precision. phi enters the IRLS working weight prior·μ^{2−p}/phi,
so the coefficient covariance Vb = H⁻¹ already scales as phi and the
reported SEs track √phi (issue #771).
EstimatedNegBinTheta
Negative-Binomial overdispersion theta estimated jointly with the mean
model. Var(y) = mu + mu^2 / theta; larger theta means less
overdispersion (the Poisson limit is theta → ∞). Estimated by the
maximum-likelihood theta score
Σ wᵢ[ψ(yᵢ+θ) − ψ(θ) + lnθ + 1 − ln(θ+μᵢ) − (yᵢ+θ)/(μᵢ+θ)] = 0 at the
converged η (MASS glm.nb’s theta.ml) and refreshed across outer
iterations, exactly like the Gamma shape / Beta precision / Tweedie φ.
Unlike those, theta is not a dispersion scale phi: it enters only
the IRLS working weight W = μθ/(θ+μ) (the full NB2 Fisher information),
so the stored penalized Hessian is already the true one and the
coefficient covariance Vb = H⁻¹ takes no post-hoc multiply — phi ≡ 1
for NB, the overdispersion lives in the variance function. The theta
carried here mirrors ResponseFamily::NegativeBinomial { theta } (the
canonical store every weight/deviance expression reads), kept in sync by
with_negbin_theta, exactly as EstimatedBetaPhi mirrors Beta { phi }
(issue #802).
FixedNegBinTheta
Negative-Binomial overdispersion theta held fixed at a user-supplied
value (--negative-binomial-theta, issue #983). Identical role to
EstimatedNegBinTheta in every weight / variance / covariance
expression (W = μθ/(θ+μ), Var(y) = μ + μ²/θ, phi ≡ 1), but the
inner solver’s ML refresh is gated off: the recorded theta is the
user’s, by construction. The fixed/estimated split mirrors
FixedGammaShape vs EstimatedGammaShape.
Unspecified
The engine does not expose fixed-scale semantics for this family.
Implementations§
Source§impl LikelihoodScaleMetadata
impl LikelihoodScaleMetadata
pub const fn fixed_phi(self) -> Option<f64>
Sourcepub const fn negbin_theta_is_estimated(self) -> bool
pub const fn negbin_theta_is_estimated(self) -> bool
Whether the Negative-Binomial overdispersion theta is estimated from
data (the default for NB families, issue #802).
Sourcepub const fn negbin_theta(self) -> Option<f64>
pub const fn negbin_theta(self) -> Option<f64>
The Negative-Binomial theta carried in the scale metadata (estimated
or user-fixed), or None for non-NB families.
Sourcepub const fn beta_phi_is_estimated(self) -> bool
pub const fn beta_phi_is_estimated(self) -> bool
Whether the Beta-regression precision phi is estimated from data.
Sourcepub const fn tweedie_phi_is_estimated(self) -> bool
pub const fn tweedie_phi_is_estimated(self) -> bool
Whether the Tweedie exponential-dispersion phi is estimated from data.
pub const fn gamma_shape(self) -> Option<f64>
pub const fn gamma_shape_is_estimated(self) -> bool
Trait Implementations§
Source§impl Clone for LikelihoodScaleMetadata
impl Clone for LikelihoodScaleMetadata
Source§fn clone(&self) -> LikelihoodScaleMetadata
fn clone(&self) -> LikelihoodScaleMetadata
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for LikelihoodScaleMetadata
Source§impl Debug for LikelihoodScaleMetadata
impl Debug for LikelihoodScaleMetadata
Source§impl<'de> Deserialize<'de> for LikelihoodScaleMetadata
impl<'de> Deserialize<'de> for LikelihoodScaleMetadata
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<LikelihoodScaleMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<LikelihoodScaleMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for LikelihoodScaleMetadata
impl PartialEq for LikelihoodScaleMetadata
Source§fn eq(&self, other: &LikelihoodScaleMetadata) -> bool
fn eq(&self, other: &LikelihoodScaleMetadata) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for LikelihoodScaleMetadata
impl Serialize for LikelihoodScaleMetadata
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for LikelihoodScaleMetadata
Auto Trait Implementations§
impl Freeze for LikelihoodScaleMetadata
impl RefUnwindSafe for LikelihoodScaleMetadata
impl Send for LikelihoodScaleMetadata
impl Sync for LikelihoodScaleMetadata
impl Unpin for LikelihoodScaleMetadata
impl UnsafeUnpin for LikelihoodScaleMetadata
impl UnwindSafe for LikelihoodScaleMetadata
Blanket Implementations§
impl<T> Boilerplate 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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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,
impl<T> Scalar for T
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.