Incrementality#

class pymc_marketing.mmm.incrementality.Incrementality(model, idata=None, data=None)[source]#

Incrementality and counterfactual analysis for MMM models.

Computes incremental channel contributions by comparing predictions with actual spend vs. counterfactual (perturbed) spend, accounting for adstock carryover effects. See the module docstring for the full mathematical formulation and design rationale.

Parameters:
modelMMM

Fitted MMM model instance.

idataxr.DataTree, optional

InferenceData containing posterior samples and fit data. If not provided, uses the incrementality test result data. Default is None.

frozen_deterministicsdict[str, str], optional

Mapping of deterministic variable names to group names for freezing. Variables in this dict will have their values frozen during counterfactual simulations. Default is empty dict.

Attributes:
idataxr.DataTree

Posterior samples and fit data.

dataMMMIDataWrapper

Data wrapper for accessing model data.

Raises:
ValueError

If both idata and data are provided, or neither is.

Examples

>>> incr = mmm.incrementality
>>> roas = incr.contribution_over_spend(frequency="quarterly")
>>> cac = incr.spend_over_contribution(frequency="monthly")

Methods

Incrementality.__init__(model[, idata, data])

Incrementality.compute_incremental_contribution(...)

Compute incremental channel contributions using counterfactual analysis.

Incrementality.contribution_over_spend(frequency)

Compute incremental contribution per unit of spend.

Incrementality.marginal_contribution_over_spend(...)

Compute marginal contribution per additional unit of spend.

Incrementality.spend_over_contribution(frequency)

Compute spend per unit of incremental contribution.