Building Your First Marketing Mix Model in Python

Emily Park

Prerequisites

  • Python 3.8+
  • pandas, numpy, statsmodels, matplotlib
  • Basic understanding of regression

Step 1: Prepare the Data

import pandas as pd
import numpy as np

df = pd.read_csv('marketing_data.csv')

Step 2: Apply Adstock Transformation

def geometric_adstock(series, decay=0.7):
    result = np.zeros(len(series))
    result[0] = series.iloc[0]
    for i in range(1, len(series)):
        result[i] = series.iloc[i] + decay * result[i-1]
    return result

df['tv_adstock'] = geometric_adstock(df['tv_spend'], 0.8)

Step 3: Build the Model

import statsmodels.api as sm

X = df[['tv_adstock', 'digital_adstock', 'search_spend', 'promo_flag', 'temperature']]
X = sm.add_constant(X)
y = df['sales']

model = sm.OLS(y, X).fit()
print(model.summary())
Pythonhands-onregressionadstockbeginner-friendly