In sintesi: Marketing Mix Modeling (MMM) era storicamente disponibile solo a enterprise (costo €100k-1M+). Il rilascio open source di Google Meridian (2024) e Meta Robyn (2020) ha reso MMM accessibile a PMI con revenue €500k+, multi-canale, almeno 12 mesi di storico dati settimanali. Output: ROI per canale, saturation curves, adstock decay, scenario planning. Costo DIY: 60-100h data scientist setup. Agenzia: €15-40k. Decisivo nel post-cookie era 2024-2026.
Quando MMM ha senso per PMI
Tre criteri minimi per ROI positivo:
- Revenue > €500k/anno. Sotto questa soglia, l'investimento in setup non è ripagato dalla riallocazione budget.
- Multi-canale: almeno 4-5 canali attivi (TV, digital display, social, search, email, retail). Single-channel non beneficia di MMM.
- 12+ mesi storico settimanale. MMM richiede serie temporale sufficiente per identificare effetti.
Profilo tipico: PMI italiana €5-50M revenue con 30-200k€/mese spend marketing distribuito su 5-8 canali. Profilo non adatto: SaaS B2B con < €500k revenue, brand single-channel TikTok-only, businesses con cycle long > 6 mesi.
Setup dati richiesto
Granularità: weekly, ideale 24-36 mesi storico (minimo 12).
Variabile dipendente: revenue settimanale (o conversioni, o lead, secondo business KPI primario).
Variabili indipendenti — canali marketing:
- Spend per canale (€): TV, digital display, social ads (Meta, TikTok), search ads (Google, Bing), email volume, influencer, OOH.
- Impressions/reach per canale (se disponibile, migliore di solo spend).
Variabili di controllo (fattori esterni):
- Stagionalità: dummy mese o sin/cos transformation.
- Promozioni: dummy promo periods.
- Pricing variation: average price index settimanale.
- Competitor activity: spend competitor stimato (se disponibile).
- Eventi: lancio prodotti, eventi macro (covid, holiday).
- Meteo: per categorie weather-sensitive.
Output dataset: tabella settimanale con ~25-50 colonne, 60-150 righe. Dimensione gestibile in Pandas.
Google Meridian: install + esempio Python
Meridian è il MMM bayesiano open source di Google, rilasciato 2024. Repository: github.com/google/meridian.
pip install google-meridian
# In Python
from meridian import constants
from meridian.data import load
from meridian.model import model
from meridian.model import prior_distribution
# Load dati (CSV con format documentato)
data = load.CsvDataLoader(
csv_path='dati_marketing.csv',
kpi_type='revenue',
media_to_channel=channel_mapping,
revenue_column='revenue',
media_columns=media_cols,
control_columns=control_cols,
).load()
# Setup priors bayesiani
priors = prior_distribution.PriorDistribution(
roi_m=tfd.LogNormal(loc=0.2, scale=0.7) # priors per ROI canali
)
# Build model
mmm = model.Meridian(
input_data=data,
model_spec=model.ModelSpec(prior=priors)
)
# Sample posterior (MCMC)
mmm.sample_posterior(n_chains=4, n_adapt=500, n_burnin=500, n_keep=1000)
# Output: ROI per canale, saturation curves, adstock
roi_summary = mmm.get_roi_estimates()
saturation = mmm.get_saturation_curves()
Tempo computation: 30-60 minuti su laptop standard per dataset 100 righe × 30 colonne. Cluster cloud (GCP/AWS) per dataset più grandi.
Bayesian priors: come settarli per PMI
Priors sono distribuzioni di probabilità a priori per parametri chiave del modello (ROI canale, adstock decay, saturation). Settarli bene aumenta la robustezza del modello, soprattutto con dataset limitati tipici PMI.
ROI prior canale. Default Meridian: LogNormal(0.2, 0.7) — ROI medio atteso 1.2x con incertezza ampia. Per PMI con storico ROAS noto, calibrare prior centrato su quel valore. Esempio: search ads prior ROI = LogNormal(2.0, 0.4) se storico ROAS 7-8x. Brand campaign TV prior più basso: LogNormal(0.0, 0.5) (ROI 1x base con varianza alta).
Adstock decay prior. Misura quanto perdura l'effetto di uno spend nel tempo. Range tipici per canale:
- Search ads: decay rate 0.1-0.3 (effetto immediato, decay rapido).
- Display/social: 0.2-0.5.
- TV/branded video: 0.5-0.8 (effetto persistente).
- Print/OOH: 0.3-0.6.
Saturation prior. Punto in cui la spesa addizionale non genera ROI proporzionale. Hill function parametrizzata. Default sufficiente per dataset standard.
Output: ROI, saturation, adstock
Tipici output Meridian per PMI mid-market:
| Canale | Spend (€/mese) | ROI mediano | CI 90% | Saturazione |
|---|---|---|---|---|
| Search ads | 15k | 5.8x | [4.2, 7.5] | 75% |
| Meta Ads | 25k | 2.1x | [1.5, 2.9] | 88% |
| Display | 10k | 0.9x | [0.4, 1.5] | 45% |
| TV brand | 40k | 1.4x | [0.8, 2.2] | 35% |
| 3k | 8.5x | [6.0, 11.0] | 60% |
Insight tipici dal pattern:
- Email + Search high ROI ma sopra 60-75% saturazione: aumentare spend ha rendimento decrescente.
- Meta Ads alta saturazione (88%): canale "tappato", ulteriore spend non efficiente.
- Display ROI < 1: distrugge valore, eliminare o rivedere targeting.
- TV bassa saturazione (35%): potenziale di scaling per brand building.
Decisioni: budget reallocation, scenario planning
Tipico action plan post-MMM:
- Eliminare canali ROI < 1. Display nell'esempio sopra, redeploy budget.
- Mantenere canali ROI > 1 sopra saturazione (Meta) ma non aumentare.
- Scalare canali ROI alto sotto saturazione (TV brand): aumentare spend del 30-50% e re-test.
- Scenario planning: Meridian permette di simulare "se sposto €10k da Display a TV, qual è expected revenue lift?". Output: distribuzione probabilistica di outcome.
Frequenza re-run: trimestrale. Re-calibration dopo cambiamenti significativi (lancio prodotto, espansione geografica, evento competitor).
Errori comuni
(1) Training set troppo corto. Sotto 12 mesi di dati settimanali, MMM è instabile. Sotto 6 mesi, completamente inaffidabile. Aspettare l'accumulo storico.
(2) Ignorare seasonality. Se il business ha stagionalità marcata, non includere fattore stagionale = MMM attribuisce a canali variazioni che sono in realtà cicliche.
(3) Multicollinearità tra canali. Se due canali sono spesso attivati insieme (es. TV + Meta sempre in promo), MMM fatica a separarli. Soluzione: variazione esplicita nello spending durante setup.
(4) Over-fitting a passato. MMM spiega bene il passato ma il futuro può essere diverso. Validare con holdout (ultimi 3 mesi out-of-sample) prima di decisioni.
(5) Ignorare external factor critici. Pricing, distribution, competitor — se non inclusi, MMM attribuisce loro effetti ai canali marketing, distorcendo ROI estimates.
Confronto Meridian vs Robyn vs Lightweight MMM
| Tool | Approach | Strength | Weakness |
|---|---|---|---|
| Meridian (Google) | Bayesian | Quantifica incertezza, priors flessibili | Compute intensive |
| Robyn (Meta) | Frequentist + ridge | Veloce, automatic feature eng | No incertezza, R-only |
| Lightweight MMM (Google ex) | Bayesian semplificato | Setup veloce | Meno potente di Meridian |
| Custom Python/R | Su misura | Massima flessibilità | Setup esteso |
Per PMI italiana standard: Meridian è il default 2026 per qualità output e supporto Google attivo. Robyn alternative se team R.
Costi: DIY vs agenzia
| Approach | Costo iniziale | Costo ricorrente | Tempo |
|---|---|---|---|
| DIY data scientist interno | €8-12k (60-100h) | €2-3k/trimestre maint | 8-12 settimane |
| Freelance MMM specialist | €10-20k | €3-5k/trimestre | 6-10 settimane |
| Agenzia mid-market | €15-40k | €5-10k/trimestre | 8-12 settimane |
| Big consultancy | €100-300k+ | €30-100k/trimestre | 12-20 settimane |
Sweet spot PMI mid-market: freelance specialist con tool open source (€10-20k iniziale), poi maintenance interno con il modello già costruito.
FAQ
MMM sostituisce Google Analytics e attribution model?
No, è complementare. GA + attribution model = digital touchpoint analysis (granulare, intra-canale). MMM = marketing mix totale (incluso offline). Entrambi servono. Setup ottimale: GA per tactical optimization, MMM per strategic budget allocation.
Cookie deprecation impatta MMM?
Marginalmente. MMM lavora su aggregate spend e revenue, non su user-level tracking. È il framework più resistente al post-cookie era. Per questo è in crescita 2024-2026 anche in PMI.
Posso fare MMM solo per digital o devo includere offline?
Idealmente entrambi. MMM digital-only è valido se l'azienda è 100% online (e-commerce pure play). Per PMI con TV/print/OOH/retail, includerli aumenta la qualità del modello.
Validità statistica con dataset PMI piccolo?
Bayesian framework gestisce bene small samples grazie ai priors. Confidence interval saranno larghi (incertezza alta), ma l'output rimane utile direzionalmente. Sotto 50 osservazioni settimanali (1 anno) = sconsigliato.
Quanto spesso re-runnare il modello?
Trimestrale standard. Re-run anticipato dopo eventi significativi (lancio prodotto, cambio strategia, espansione). Annuale completo recalibration con nuovi priors.
MMM funziona per SaaS B2B?
Più difficile per cycle lunghi (3-12 mesi). Setup richiede tracking di lead-to-deal conversion lag. Meglio per SaaS B2C o B2B-SMB con cycle < 3 mesi. Alternative per B2B enterprise: account-based attribution + multi-touch attribution.
Fonti e riferimenti
- Google Meridian — github.com/google/meridian (open source)
- Meta Robyn — facebookexperimental.github.io/Robyn (open source R)
- Sambol, J. & Wadlow, T. — "MMM Best Practices" (working paper, 2024)
- Hanssens, D., Parsons, L., Schultz, R. — "Market Response Models: Econometric and Time Series Analysis" (Springer, 2nd ed.)
- Pauwels, K. — "Modeling Marketing Dynamics by Time Series Econometrics" (Marketing Science Institute)
- Google — "Meridian Public Beta Whitepaper" (2024)
- Forrester — "MMM Adoption Trends" (2023-2024)
- WARC — Marketing Mix Modeling case studies

