Adstock and saturation for econometricians
Adstock and saturation specify how media enters the conditional response model. ammm estimates their parameters jointly with the other model parameters. These transformations do not establish that the estimated response is causal.
Geometric carryover
The GeometricAdstock component defaults to normalize=True and trailing
convolution. For L = l_max, its transformed input is
The current observation counts towards l_max. Missing lag history is padded
with zeros. Supply the supported trailing-history option for future prediction
when you need continuity with the fitted period.
The default decay prior is Beta(alpha=1, beta=3). The analyst still chooses
l_max. When decay is near one, the last included lag can retain substantial
weight. Check sensitivity to the horizon and prior rather than assuming that
an arbitrary upper bound is harmless.
An infinite unnormalised recurrence,
, is a
related distributed-lag model. It has different scaling and memory from the
default component. The low-level geometric_adstock function separately
defaults to normalize=False; distinguish it from the component wrapper.
Weibull PDF adstock can represent a delayed peak. The implemented Weibull CDF weights are cumulative products of survival probabilities and are non-increasing under trailing convolution. Choose the kernel for its assumptions about the lag profile. An estimated lag profile alone does not measure brand equity or establish a long-term causal effect.
Logistic saturation
The default LogisticSaturation component uses
For positive parameters and non-negative spend, the curve increases towards
beta and is concave for positive spend. lam controls the horizontal scale;
it does not move an inflection point into the positive-spend domain. The
half-saturation input is
on the model’s scaled input axis.
Default priors are Gamma(alpha=3, beta=1) for lam and
HalfNormal(sigma=2) for beta. beta is the media amplitude in this
parameterisation. There is no additional static channel coefficient beyond
that amplitude in the default model. Time-varying media adds a multiplier.
A log-spend specification has no finite upper asymptote, although its marginal response tends towards zero. Choosing a bounded curve imposes a different functional assumption. Neither functional form is universally appropriate.
Joint parameter uncertainty
Joint sampling propagates uncertainty in decay, curvature and amplitude into conditional contribution estimates. A workflow that fixes transformation parameters reports uncertainty conditional on those fixed choices unless it propagates their uncertainty separately.
Joint estimation does not resolve weak information about response shape. Correlated spending, limited spend ranges and a flexible baseline can leave attribution sensitive to priors even when predictions fit well. Posterior intervals remain conditional on the model and its assumptions.
Transformation order
adstock_first=True is the default. It applies adstock and then saturation.
With False, saturation acts on each period before adstock averages the
transformed responses.
The operations generally differ for varying spend. Under the default normalised geometric weights, a constant input with complete lag history stays constant after adstock. Both orders then return the same saturated response. Repeated moderate spend does not accumulate without bound under that normalisation. Start-up periods can differ because of zero padding.
Choose order using a stated response mechanism and assess sensitivity. A channel label alone does not determine the correct order. Optimisation and scenario outputs inherit this modelling choice.