Model-implied incrementality
PanelMMM.compute_incrementality(...) evaluates a fitted historical spend
intervention from paired retained posterior draws. It returns factual media
contribution minus counterfactual media contribution in the target units supplied
to AMMM3.
result = mmm.compute_incrementality(
spend_factor=0.0,
start_date="2025-01-06",
end_date="2025-03-31",
channels=["tv", "search"],
carry_out="complete",
)
unilateral_increment contains a separate intervention for each requested
channel. joint_increment always applies the intervention to all fitted media
channels. unilateral_window_total and joint_window_total sum their own
per-date paired draws. The joint result is independently evaluated; it is not
constructed by summing unilateral totals.
The date coordinate is the outcome date. intervened_date is true only for an
outcome date inside the inclusive spend window. With carry_out="complete",
later returned dates represent finite adstock carry-out and have
intervened_date=False.
The first release accepts historical contiguous fitted-date windows, finite
non-negative scalar factors, and the released time-series, fixed-effects (FE)
and correlated-random-effects (CRE) estimators. It supports NoAdstock,
GeometricAdstock, and DelayedAdstock in trailing mode, with
NoSaturation or LogisticSaturation. It rejects time-varying parameters,
additive effects, unsupported transforms, named RE, future dates and incomplete
carry-out tails.
The result is conditional on the fitted model and preserves its fitted-history boundary, retained sample labels and FE/CRE unit conditioning. It neither refits the model nor samples outcome noise. It does not establish causal identification: that requires a credible intervention, adjustment or design assumptions, valid measurement and suitable identifying variation.
The result metadata records additive_channel_response: True. Each channel’s
contribution depends only on its own spend, so a joint intervention equals the
sum of the corresponding unilateral interventions. This is a property of the
additive specification, not evidence that channels have no effect on one
another. For cross-channel questions, see
Halo effects between revenue channels.