meridian_tools.model_selection
Model-selection helpers layered on top of ArviZ and Meridian.
Module: meridian_tools.model_selection
Functions
has_log_likelihood
Return whether the candidate exposes a non-empty log_likelihood group.
Accepts either an ArviZ InferenceData or any object with an
.inference_data attribute (e.g. a fitted Meridian model).
Parameters:
candidate— ArviZInferenceDataor fitted Meridian model.
Returns: True if a non-empty log_likelihood group exists.
compute_loo
Compute PSIS-LOO for a Meridian model or InferenceData.
If the candidate is a fitted Meridian model without a log_likelihood
group, the function automatically reconstructs it through
attach_log_likelihood.
Parameters:
candidate— Fitted Meridian model or ArviZInferenceDatawithlog_likelihood.pointwise— Include per-observation LOO values and Pareto k diagnostics.scale— Scale for ELPD computation ("log","negative_log", or"deviance").
Returns: An InformationCriterionResult with kind="loo".
Raises: ModelSelectionError if log-likelihood cannot be obtained.
compute_waic
Compute WAIC for a Meridian model or InferenceData.
Same automatic log-likelihood reconstruction as compute_loo.
Parameters:
candidate— Fitted Meridian model or ArviZInferenceDatawithlog_likelihood.pointwise— Include per-observation WAIC values.scale— Scale for ELPD computation.
Returns: An InformationCriterionResult with kind="waic".
Raises: ModelSelectionError if log-likelihood cannot be obtained.
compare_models
Compare multiple models with ArviZ compare.
Parameters:
candidates— Dictionary mapping model names to fitted Meridian models orInferenceDataobjects.ic— Information criterion to use:"loo"or"waic".scale— Scale for ELPD computation.
Returns: A pandas DataFrame with columns: model, rank,
elpd_{ic}, p_{ic}, elpd_diff, weight, se, dse, warning,
scale. Ranked by ELPD (rank 0 is best).
For a single candidate, returns a one-row DataFrame with rank=0,
elpd_diff=0.0, and weight=1.0.
Raises:
ValueErrorificis not"loo"or"waic", or ifcandidatesis empty.ModelSelectionErrorif any candidate lacks log-likelihood data.
Classes
ModelSelectionError
Raised when information criteria cannot be computed.
| Property | Type | Description |
|---|---|---|
reason_code |
str | None |
Structured code identifying the failure reason. |
Known reason codes:
| Code | Meaning |
|---|---|
missing_log_likelihood_group |
InferenceData has no log_likelihood group and cannot be reconstructed. |
holdout_fit_unsupported |
Model was fitted with a holdout mask. |
requires_fitted_meridian_model |
Missing posterior samples or ArviZ InferenceData. |
meridian_internal_seam_incompatible |
Meridian version lacks required reconstruction methods. |
InformationCriterionResult
Summary of one information-criterion computation.
| Attribute | Type | Description |
|---|---|---|
kind |
str |
"loo" or "waic". |
summary |
dict[str, Any] |
Summary statistics (ELPD, p, SE, etc.). |
pointwise |
pd.DataFrame | None |
Per-observation values (if pointwise=True). |