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<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::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 ==.