Post-Fit Facades

After fitting, PanelMMM exposes most read and reporting operations through bound properties:

  • mmm.data
  • mmm.summary
  • mmm.diagnostics
  • mmm.plot

These are the preferred entry points when you already have a fitted model.

mmm.data

mmm.data returns MMMIDataWrapper.

Direct import path:

from abacus.data.idata import MMMIDataWrapper

You can also create it explicitly with:

wrapper = MMMIDataWrapper.from_mmm(mmm)

Main methods:

Method Purpose
get_target(original_scale=True) Return observed target data
get_channel_spend() Return observed channel spend
get_posterior_predictive(original_scale=True) Return posterior predictive samples
get_errors(original_scale=True) Return residual samples
get_channel_contributions(original_scale=True) Return media contribution samples
get_contributions(...) Return channels, baseline, controls, seasonality, and events
get_elementwise_roas(original_scale=True) Contribution-over-spend ratios
get_elementwise_cost_per_target(original_scale=True) Spend-over-contribution ratios
get_channel_scale() Return stored channel scaling factors
get_target_scale() Return stored target scaling factors
to_original_scale(...) Convert a posterior variable or array to original scale
to_scaled(...) Convert an original-scale array back to model scale

mmm.summary

mmm.summary returns MMMSummaryFactory.

Direct import path:

from abacus.mmm.summary import MMMSummaryFactory

If you instantiate it manually, pass model=mmm when you need transform-backed curve summaries:

summary = MMMSummaryFactory(mmm.data, model=mmm)

Main methods:

Method Purpose
posterior_predictive(...) Predictive summary table with observed target
contributions(...) Tidy contribution summaries
mean_contributions_over_time(...) Wide decomposition table
roas(...) ROAS summary
cost_per_target(...) Cost-per-target summary
efficiency(...) Target-type-aware efficiency summary
channel_spend(...) Raw spend table
saturation_curves(...) Saturation curve summary table
adstock_curves(...) Adstock curve summary table
total_contribution(...) Totals by component type
change_over_time(...) Percentage change in channel contributions

MMMSummaryFactory also exposes:

  • hdi_probs
  • output_format
  • efficiency_metric
  • efficiency_metric_label

mmm.diagnostics

mmm.diagnostics returns MMMDiagnosticsFactory.

Direct import path:

from abacus.mmm.diagnostics.factory import MMMDiagnosticsFactory

Main methods:

Method Purpose
design_summary(X, ...) Per-variable design checks
design_report(X, ...) Machine-readable design report
mcmc_summary(...) Parameter-level MCMC diagnostics
mcmc_report(...) Machine-readable MCMC report
predictive_summary(...) Aggregate predictive metrics
predictive_report(...) Machine-readable predictive report

The report methods return typed dataclass objects with to_dict().

mmm.plot

mmm.plot returns MMMPlotSuite.

Direct import path:

from abacus.mmm.plot import MMMPlotSuite

PanelMMM binds this automatically to the model’s idata, but the class also supports compatible custom InferenceData objects.

Main methods:

Method Purpose
posterior_predictive(...) Plot fitted or sampled predictive series
prior_predictive(...) Plot prior predictive series
residuals_over_time(...) Plot residual trajectories
residuals_posterior_distribution(...) Plot residual posterior distributions
contributions_over_time(...) Plot time-series contributions
posterior_distribution(...) Plot posterior violin distributions
channel_parameter(...) Plot channel-level parameter posteriors
prior_vs_posterior(...) Compare prior and posterior distributions
saturation_scatterplot(...) Plot spend-versus-contribution scatter views
saturation_curves(...) Plot sampled saturation curves
waterfall_components_decomposition(...) Plot waterfall decompositions
media_contribution_over_time(...) Plot stacked media contributions
channel_contribution_share_hdi(...) Plot contribution share intervals
budget_allocation(...) Plot optimisation allocation outputs
allocated_contribution_by_channel_over_time(...) Plot simulated allocation contributions

Direct idata utilities

The abacus.data.idata package also exports schema and utility helpers:

Import Purpose
MMMIdataSchema Expected structure for retained MMM InferenceData
VariableSchema Variable-level schema helper
InferenceDataGroupSchema Group-level schema helper
filter_idata_by_dates(...) Filter idata on a date window
filter_idata_by_dims(...) Filter idata on non-date dimensions
aggregate_idata_time(...) Aggregate idata over time
aggregate_idata_dims(...) Aggregate idata over non-time dims
subsample_draws(...) Subsample posterior draws