Which Abacus model should I choose, and what does that choice permit?

Choose the model from your question, data structure and defensible assumptions before examining preferred channel results. In Abacus, the choice also determines which prediction, calibration and planning operations are available.

This page describes the accompanying Abacus 3.1.1 library. The estimator support matrix is the detailed reference for named presets.

Which model is the starting point for my data?

Situation Candidate What you must justify
One aggregate observation per date Named time_series preset Temporal variation, baseline, controls and media response specification
A rectangular panel with a deliberately configured parameter and prior structure Ordinary dimensioned PanelMMM Which parameters vary by slice, which are shared and whether any hierarchical pooling is specified
A balanced panel where shared slopes should use changes within units Named fe preset Sufficient transformed within-unit variation and the remaining time-varying confounding assumptions
A balanced panel requiring an explicit adjustment for persistent unit differences associated with predictors Named cre preset The declared transformed between-unit summary basis, its estimability and sufficient within-unit variation

The named FE and CRE presets take one unit dimension, such as geo, containing multiple units. This is not a claim that they fit only one market. Their released media slopes and adstock/saturation parameters are shared across units. Do not interpret a separate regional contribution as a separately estimated regional response function.

Does setting dims select FE or create partial pooling?

No. dims=("geo",) declares an array axis. On the ordinary PanelMMM surface, the parameter dimensions and priors determine which quantities are shared or vary by market. Independent market-indexed priors are not hierarchical partial pooling; shared parameters are not the named FE likelihood.

Specify a named estimator explicitly when you want its contract. The legacy use_mundlak_cre=True option on an ordinary panel model is also not an alias for the named CRE preset. See Panel Dimensions and the Mundlak FAQ.

How do FE and CRE differ in the information they use?

FE removes persistent unit intercepts from its shared-slope likelihood by using within-unit contrasts. It cannot learn a slope from a predictor that does not vary within any unit. A larger market’s consistently higher spend and sales do not supply the same information as changes within that market.

CRE models unit intercepts together with declared centred between-unit summaries. In the named Abacus preset, media summaries use fitted transformed exposures, not simply raw-spend averages. The adjustment is limited to that declared basis and needs usable between-unit information as well as within-unit variation.

For example, suppose larger markets always spend more and sell more. FE asks what the within-market changes reveal under its model. CRE additionally represents the specified relationship between persistent market differences and predictor summaries. If spend barely changes within markets, neither preset creates the missing within-market information.

Neither removes arbitrary time-varying confounding. The released named presets also do not support common categorical time effects. Read the FE specification and CRE specification before importing assumptions from another panel package.

Why is the declared re preset unavailable?

Implementing and qualifying the named random-effects preset was a lower priority because its assumptions are often difficult to defend in marketing applications.

Standard RE requires the unobserved persistent unit effect to have conditional mean zero given the included predictor history. Marketing budgets commonly reflect market size and expected baseline demand, which also affect sales. When the model does not adequately account for these factors, the RE restriction is implausible.

Correlation between spend and observed market size is not itself a violation if the specification adequately accounts for market size. The restriction concerns the remaining unobserved unit effect; it is not a rule that raw spend and market size must be uncorrelated.

Abacus recognises estimator.type: re in configuration, but the named preset has not passed the required implementation checkpoint for public release. Building it raises EstimatorReleaseGateError before fitting. Internal implementation work does not make it a released estimator. This is an intentional restriction, not an installation problem or a general statistical objection to random-effects modelling.

Choose another estimator only when its assumptions fit the question. CRE is not an automatic substitute for every RE analysis.

Can every model predict, calibrate and optimise?

No. For the named presets in this release:

Operation time_series fe cre
Prediction on new dates with supplied inputs Supported All fitted units required All fitted units and frozen fitted CRE summaries required
Historical and manual allocation scenarios Supported Supported for all fitted units Supported with the same fitted-unit and frozen-summary restrictions
Lift-test or cost-per-target calibration Supported through the ordinary model surface Unavailable Unavailable
Fixed-budget optimisation Supported Unavailable Unavailable

Supported operations still require valid inputs and a suitable fitted model. For ordinary dimensioned PanelMMM, check the configured model and operation contracts rather than assuming the named-preset table describes every custom configuration. New dates do not imply support for previously unseen markets.

For panel manual allocations, use a labelled xarray.DataArray or DataArraySpec covering the required fitted coordinates. A channel-only dictionary is not a panel allocation. See Scenario Specifications.

An unsupported-operation error is not resolved by removing the estimator label from a fitted model. That would discard the contract without making the operation statistically valid.

Should I use Python, a YAML builder or the pipeline runner?

These are workflow choices rather than competing estimators. Python gives direct control over construction, fitting and analysis. The YAML builder constructs a model from configuration for subsequent use. The runner executes a staged workflow and writes artefacts to disk.

Their configuration surfaces differ. Start with the appropriate Python, YAML builder or runner guide. A successful build or run does not establish that the chosen model is suitable for the data.

Can I choose the model with the best LOO score?

Only compare scores that describe the same prediction task, observations, outcome scale and likelihood measure. Abacus’s named FE likelihood scores within-unit contrasts; CRE scores complete unit blocks with its unit intercept integrated out. Those scores cannot be ranked against each other as though they evaluated identical outcome-level observations.

Use the Model Comparison FAQ to check comparability. Assess computation, predictive adequacy, sensitivity and identification separately. Choose the model because its contract answers the question, then report what the evidence permits.