MMM.build_model#

MMM.build_model(X, y, **kwargs)[source]#

Build a probabilistic model using PyMC for marketing mix modeling.

The model incorporates channels, control variables, and Fourier components, applying adstock and saturation transformations to the channel data. The final model is constructed with multiple factors contributing to the response variable.

Parameters:
Xpd.DataFrame

The input data for the model, which should include columns for channels, control variables (if applicable), and Fourier components (if applicable).

yUnion[pd.Series, np.ndarray]

The target/response variable for the modeling.

**kwargsdict

Additional keyword arguments that might be required by underlying methods or utilities.

Examples

Initialize model with custom configuration

from pymc_marketing.mmm import GeometricAdstock, LogisticSaturation
from pymc_marketing.mmm.multidimensional import MMM
from pymc_marketing.prior import Prior

custom_config = {
    "intercept": Prior("Normal", mu=0, sigma=2),
    "saturation_beta": Prior("Gamma", mu=1, sigma=3),
    "saturation_lambda": Prior("Beta", alpha=3, beta=1),
    "adstock_alpha": Prior("Beta", alpha=1, beta=3),
    "likelihood": Prior("Normal", sigma=Prior("HalfNormal", sigma=2)),
    "gamma_control": Prior("Normal", mu=0, sigma=2, dims="control"),
    "gamma_fourier": Prior("Laplace", mu=0, b=1, dims="fourier_mode"),
}

model = MMM(
    date_column="date_week",
    channel_columns=["x1", "x2"],
    adstock=GeometricAdstock(l_max=8),
    saturation=LogisticSaturation(),
    control_columns=[
        "event_1",
        "event_2",
        "t",
    ],
    yearly_seasonality=2,
    model_config=custom_config,
)