transformations#
Transformations namespace — saturation scatter and curve plots.
This module exposes TransformationPlots, which produces two
complementary visualisations for channel saturation analysis:
saturation_scatterplot()— one panel per channel showing observed spend vs. mean posterior contribution.saturation_curves()— extends the scatter with posterior sample curves and an HDI band.
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
|
Channel transformation plots (saturation scatter and curves). |