mmm_attribution
Python
D_variables must include prior_weight. The value is applied to each raw input signal before saturation and scoring.
prior_weight: business weight assigned to each raw signal. A common way to estimate it is conversions / touchpoints, but it can also be set from domain knowledge or historical benchmarks.
import pandas as pd
from ChannelAttributionPro import mmm_attribution
token = "yourtoken"
Data = pd.read_csv("https://app.channelattribution.io/data/data_mmm_3.csv")
D_variables = pd.DataFrame({
"variable": [
"direct_searches",
"facebook_impressions",
"facebook_clicks",
"google_impressions",
"google_clicks",
"tv",
],
"channel": [
"direct",
"facebook_ads",
"facebook_ads",
"google_ads",
"google_ads",
"tv",
],
"measure": [
"direct_searches",
"impressions",
"clicks",
"impressions",
"clicks",
"views",
],
"prior_weight": [
0.50, # direct search
0.015, # Facebook impressions
0.21, # Facebook clicks
0.015, # Google impressions
0.25, # Google clicks
0.02, # TV views / GRP-like signal
],
})
target = "conversions"
res = mmm_attribution(
Data=Data,
D_variables=D_variables,
target=target,
model="linear", # "linear", "reward", or "copula"
max_p=12,
seed=1234567,
verbose=1,
password=token,
)
print(res.head())
Using a different internal model:
res_reward = mmm_attribution(
Data=Data,
D_variables=D_variables,
target=target,
model="reward",
max_p=12,
seed=1234567,
password=token,
)
res_copula = mmm_attribution(
Data=Data,
D_variables=D_variables,
target=target,
model="copula",
max_p=12,
nsim=1000,
seed=1234567,
password=token,
)