Strip away the tooling and this program is one regression, stated on Pre-Read slide 5:
Each term is a family, not a single variable. Baseline overall carries the intercept and seasonality (and later splits into the brand-health pillars - Track 2.4). Media Impact is every paid channel, transformed before it enters (module 1.5). Price and Promo carry own price, promo price and promo TDP; Distribution is TDP; Macro is a small set of economy variables. The Base* footnote on the slide bundles price, distribution, macro, competitor price, intercept and seasonality - the non-media side you met as "Bucket 2 = Base" in module 1.1.
So why not just hand this equation to ordinary least squares and read off the coefficients? Because on this data, OLS produces confident nonsense. Three failure modes do the damage.
1. Multicollinearity - the killer
Marketing variables move together by design, not accident. TV and digital video flight in the same campaign windows; price cuts land exactly when promo TDP spikes; competitor price tracks own price because everyone reprices with the same input costs. When predictors are near-copies of each other, OLS cannot tell whose effect is whose: coefficients become unstable, standard errors balloon, and signs flip - a price coefficient comes out positive, a media channel negative. The diagnostic is VIF (variance inflation factor): it measures how much a coefficient's variance is inflated because that predictor is predictable from the others. On this program's data, VIFs run very high precisely because many variables are derivatives of each other - the KT sessions are blunt that this is expected, not fixable by wishing.
2. Heteroskedasticity
Error variance is not constant: big-sales weeks (promo peaks, festive season) swing by more in absolute terms than quiet weeks. OLS's coefficient estimates survive, but its standard errors - and therefore every significance claim - do not. The Breusch-Pagan test flags it (Track 3.1).
3. Autocorrelation
Weekly series remember themselves: this week's sales resemble last week's, and advertising's effect carries over across weeks. Residuals end up correlated in time, which again invalidates naive standard errors. The Durbin-Watson statistic flags it - and the carryover itself is real signal the model should capture, not noise to be tolerated.
MMM keeps the regression core and wraps it in constraints and transformations that inject business knowledge where the data alone is ambiguous:
- Sign constraints. Media, promo and distribution must be non-negative; own price, inflation and competitor spends must be negative. The first run at every level is sign-constrained - a free fit with only the signs pinned - to see where the model wants to go.
- Bounded coefficients. Every variable gets an allowable coefficient range (LB/UB) derived from contribution and ROI expectations - the program calls this bound setting, and it is a craft with its own two modules (1.6 and 1.7). Note the vocabulary: bounds are hard ranges on a frequentist model, distinct from "priors" in the Bayesian sense, even though they play a similar knowledge-injection role.
- Transformations outside the model. Media enters adstocked and saturated (module 1.5); transformed variables are fed in, so the linear form stays linear while the response shapes are non-linear.
- Constrained search over many candidates. Rather than one fit, the pipeline builds models over all combinations of transformation parameters, scores each on a priority-ordered list of diagnostics plus business KPIs, and iterates sign-constrained → constrained at every level until targets are met.
MMX vs PnP: two model forms
The program runs two constructs side by side. MMX (the media model, Shirsha's training session) is linear additive: contributions simply add, which is why promo TDP and promo price can be tested as separate variables and reported together. PnP (price and promotions, Diya's session) is multiplicative - a log-log fit - because price, promo and distribution genuinely interact: a discount works differently at high and low distribution, and elasticities are the natural output. Data appetite differs too: PnP needs at least 1 year of history, MMX at least 2 (it must see seasonality repeat).
What the client sees - and what they don't
Because variables are collinear derivatives of each other and bounds are constrained hard, per-variable p-values are close to meaningless here - so the program does not report p-values or VIF to the client. What is reported and asked for: R-squared, adjusted R-squared, and MAPE. Internally the full diagnostic battery still runs (it drives model selection - Track 3.1); the caveat is about what constitutes an honest client-facing claim.
competitor_price is deliberately collinear with own price. You will watch the price sign flip and the VIFs inflate first-hand, then re-fit with signs and bounds and watch it stabilise. The lesson is taught by failure, not lecture.UL_Rapid ROI_Pre-Read_Document 1.pptxslide 5 (core equation and Base* footnote), slide 13 (equation with + Error), slide 14 (sign constraints, transformations, all-combinations model building, evaluation criteria)UL - KT.docx(2 Jun session): MMX linear-additive vs PnP multiplicative/log-log contrast, promo variables tested separately in MMX, PnP 1-year vs MMX 2-year data minimums, high-VIF/insignificant-p-value stance and the R²/adj-R²/MAPE client-reporting ruleUL - KT (4).docx(25 Jun session): linear-regression model form, transformations outside the model, sign-constrained then constrained run patternTraining Plan_MMX.xlsxsessions "MMX Model Media construct" (Shirsha) and "MMX Model PnP construct" (Diya)
CURRICULUM.md Track 1.3).