media_transformation#
Module for applying media transformations to media data.
Examples#
Create a media transformation for online and offline media channels:
from pymc_marketing.mmm import (
    GeometricAdstock,
    HillSaturation,
    MediaTransformation,
    MichaelisMentenSaturation,
)
# Shared media transformation for all offline media channels
offline_media_transform = MediaTransformation(
    adstock=GeometricAdstock(l_max=15),
    saturation=HillSaturation(),
    adstock_first=True,
)
# Shared media transformation for all online media channels
online_media_transform = MediaTransformation(
        adstock=GeometricAdstock(l_max=10),
        saturation=MichaelisMentenSaturation(),
        adstock_first=False,
    ),
)
Create a combined media configuration for offline and online media channels:
from pymc_marketing.mmm import (
    MediaConfig,
    MediaConfigList,
)
media_configs: MediaConfigList(
    [
        MediaConfig(
            name="offline",
            columns=["TV", "Radio"],
            media_transformation=offline_media_transform,
        ),
        MediaConfig(
            name="online",
            columns=["Facebook", "Instagram", "YouTube", "TikTok"],
            media_transformation=online_media_transform,
        ),
    ]
)
Apply the media transformation to media data in PyMC model:
import pymc as pm
import pandas as pd
df: pd.DataFrame = ...
media_columns = media_configs.media_values
coords = {
    "date": df["week"],
    "media": media_columns,
}
with pm.Model(coords=coords) as model:
    media_data = pm.Data(
        "media_data", df.loc[:, media_columns].to_numpy(), dims=("date", "media")
    )
    transformed_media_data = media_configs(media_data)
Classes
  | 
Configuration for a media transformation to certain media channels.  | 
  | 
Wrapper for a list of media configurations to apply to media data.  | 
  | 
Wrapper for applying adstock and saturation transformation to media data.  |