transformations#

Transformations namespace — saturation scatter and curve plots.

This module exposes TransformationPlots, which produces two complementary visualisations for channel saturation analysis:

Examples#

Build the helper from a fitted model and draw the basic scatter plot:

from pymc_marketing.mmm.plotting.transformations import TransformationPlots

tp = TransformationPlots(mmm.data)
fig, axes = tp.saturation_scatterplot()

Filter to a single geo dimension:

fig, axes = tp.saturation_scatterplot(dims={"geo": "geo_a"})

Pass a date-filtered InferenceData without rebuilding the helper:

from pymc_marketing.data.idata import filter_idata_by_dates

filtered = filter_idata_by_dates(
    mmm.idata, start_date="2023-01-01", end_date="2024-01-02"
)
fig, axes = tp.saturation_scatterplot(idata=filtered)

Customise visual elements via scatter_kwargs:

fig, axes = tp.saturation_scatterplot(
    figsize=(20, 6), scatter_kwargs={"alpha": 0.5}
)

Overlay saturation curves in original (un-scaled) space:

curves = mmm.sample_saturation_curve(max_value=2)  # original scale
fig, axes = tp.saturation_curves(curves=curves)

Plot in scaled space by matching original_scale=False to the curve source:

scaled_curves = mmm.sample_saturation_curve(max_value=2, original_scale=False)
fig, axes = tp.saturation_curves(curves=scaled_curves, original_scale=False)

Fine-tune every visual layer independently:

fig, axes = tp.saturation_curves(
    curves=curves,
    scatter_kwargs={"alpha": 0.4},
    hdi_kwargs={"alpha": 0.1},
    mean_curve_kwargs={"linestyle": "--"},
    sample_curves_kwargs={"linestyle": ":", "alpha": 0.5},
)

Classes

TransformationPlots(data)

Channel transformation plots (saturation scatter and curves).