Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Fitting result containers.

Classes:

NameDescription
FitStateImmutable fitting result.

Classes

FitState

Immutable fitting result.

Contains all state produced by fitting a model, including coefficients, variance-covariance matrix, fitted values, residuals, and model-specific parameters.

Created by: build_fit_state(), fit_model() Consumed by: model.params, model.summary(), dispatch_infer() Augmented by: Never

Attributes:

NameTypeDescription
coefNDArray[floating]Coefficient estimates (1D array of length p).
vcovNDArray[floating]Variance-covariance matrix (p x p array).
fittedNDArray[floating]Fitted values (1D array of length n).
residualsNDArray[floating]Residuals (1D array of length n).
leverageNDArray[floating]Hat matrix diagonal / leverage values (1D array of length n).
df_residfloatResidual degrees of freedom.
loglikfloatLog-likelihood at convergence.
convergedboolWhether the optimization converged.
n_iterintNumber of iterations (1 for closed-form solutions).
sigmafloat | NoneResidual standard deviation (OLS models only).
dispersionfloat | NoneDispersion parameter (GLM models only).
null_deviancefloat | NoneNull model deviance (GLM models only).
deviancefloat | NoneResidual deviance, sum of unit deviances (GLM models only).
thetaNDArray[floating] | NoneRandom effect variance parameters (mixed models only).
uNDArray[floating] | NoneSpherical random effects (mixed models only).
irls_weightsNDArray[floating] | NoneIRLS weights from GLM fit (GLM sandwich estimator).
XtWX_invNDArray[floating] | NoneInverse of X’WX from GLM fit (GLM sandwich estimator).

Examples:

>>> import numpy as np
>>> from fit import FitState
>>> state = FitState(
...     coef=np.array([1.0, 2.0]),
...     vcov=np.eye(2),
...     fitted=np.array([1.0, 2.0, 3.0]),
...     residuals=np.array([0.1, -0.1, 0.0]),
...     leverage=np.array([0.3, 0.3, 0.4]),
...     df_resid=1.0,
...     loglik=-10.0,
... )

Attributes

XtWX_inv
XtWX_inv: NDArray[np.floating] | None = field(default=None, validator=is_optional_ndarray)
coef
coef: NDArray[np.floating] = field(validator=is_ndarray)
converged
converged: bool = field(default=True, validator=(validators.instance_of(bool)))
deviance
deviance: float | None = field(default=None, validator=(validators.optional(validators.instance_of((int, float)))))
df_resid
df_resid: float = field(validator=(validators.instance_of((int, float))))
dispersion
dispersion: float | None = field(default=None, validator=(validators.optional(validators.instance_of((int, float)))))
fitted
fitted: NDArray[np.floating] = field(validator=is_ndarray)
irls_weights
irls_weights: NDArray[np.floating] | None = field(default=None, validator=is_optional_ndarray)
leverage
leverage: NDArray[np.floating] = field(validator=is_ndarray)
loglik
loglik: float = field(validator=(validators.instance_of((int, float))))
n_iter
n_iter: int = field(default=1, validator=(validators.instance_of(int)))
null_deviance
null_deviance: float | None = field(default=None, validator=(validators.optional(validators.instance_of((int, float)))))
residuals
residuals: NDArray[np.floating] = field(validator=is_ndarray)
sigma
sigma: float | None = field(default=None, validator=(validators.optional(validators.instance_of((int, float)))))
theta
theta: NDArray[np.floating] | None = field(default=None, validator=is_optional_ndarray)
u
u: NDArray[np.floating] | None = field(default=None, validator=is_optional_ndarray)
vcov
vcov: NDArray[np.floating] = field(validator=is_ndarray)

Functions