Vai al contenuto principale
Copertina editoriale del modulo Marketing Data Science, Forecasting e Decision Models

Incrementality testing e holdout

Misurare l'effetto incrementale del marketing con holdout test e gruppi di controllo.

AD
Creato da Andrii Dyshkantiuk
Lezione 86 / 216 Livello: Avanzato Durata: 22 min Prerequisiti: 1

Cosa imparerai

  • Comprendere il problema analitico e il contesto decisionale
  • Applicare esempi, metriche e controlli a casi reali

Incrementality testing e holdout

La piattaforma mostra ROAS positivo, ma il dubbio resta: quante vendite sarebbero arrivate comunque senza esposizione? Incrementality testing e holdout sposta la domanda dal credito attribuito al valore aggiunto, usando gruppi di controllo per misurare impatto reale.

Una scena da cui partire

Leggi la lezione come difesa contro la confusione tra conversioni osservate e conversioni create. Il holdout è costoso perché rinunci a trattare una parte del pubblico, ma è proprio quel costo a comprare evidenza.

  • Contesto: Quale campagna potrebbe solo intercettare domanda esistente?
  • Metodo: Quale holdout rende credibile il confronto?
  • Applicazione: Quale budget cambieresti solo dopo una prova incrementale?

Perché ogni canale mente senza holdout

Un utente vede un annuncio Facebook e compra. Tre possibilità:

  1. Ha comprato a causa dell’annuncio (incrementale) → il canale crea valore reale
  2. Avrebbe comprato comunque (cannibalizzazione) → stai pagando per una conversione gratuita
  3. È un nuovo cliente organico attribuito erroneamente → ti stai prendendo credito immeritato

Senza holdout test, i casi 2 e 3 sono indistinguibili dal caso 1. E nella media dei settori rappresentano il 40-70% delle “conversioni attribuite”.

Progettare un holdout test

import random

users = df['user_id'].unique()
holdout_size = int(len(users) * 0.10)  # 10% controllo
holdout_set = set(random.sample(list(users), holdout_size))

df['is_holdout'] = df['user_id'].isin(holdout_set)
# Il gruppo holdout NON riceve campagne su questo canale
# per la durata del test

# Dopo 30 giorni: analisi
exposed = df.query('is_holdout == False')
control = df.query('is_holdout == True')

lift_absolute = exposed['converted'].mean() - control['converted'].mean()
lift_relative = lift_absolute / control['converted'].mean() * 100
from scipy.stats import ttest_ind
_, p_value = ttest_ind(exposed['converted'], control['converted'])

print(f"Incremental lift: {lift_absolute:.4f} ({lift_relative:.1f}%), p={p_value:.4f}")

Regole per un holdout valido:

  • Randomizzazione vera, non “prendo gli inattivi” — altrimenti il gruppo di controllo non è comparabile
  • Dimensione sufficiente: minimo 1.000 utenti per gruppo per potenza statistica
  • Durata minima: 1 ciclo di acquisto completo (2-4 settimane per e-commerce, 1-3 mesi per SaaS)
  • Il gruppo di controllo NON deve MAI ricevere campagne su quel canale per l’intero periodo
  • Misura il lift su METRICHE DI BUSINESS (revenue, profit), non su metriche intermedie (CTR, clicks)

Tipi di holdout test

TipoMetodoProContro
GeograficoSpegni campagne in mercato A, tieni in BSemplice, nessun impatto UXMercati diversi possono avere dinamiche diverse
TemporaleSpegni per 2 settimane, confronta con 2 settimane prima/dopoFacile, stesso mercatoStagionalità, trend esterni confondono
Utente (gold standard)Random split a livello utenteIl più robusto statisticamenteUtenti nel controllo potrebbero notare assenza ads
Ghost adsMostri ad placebo (es. PSA) al controlloControllo perfetto, utente non notaComplesso da implementare, richiede ad server

Calcolare il vero ROAS incrementale

# ROAS apparente (quello che tutti misurano)
apparent_roas = exposed['revenue'].sum() / campaign_spend

# ROAS incrementale
incremental_revenue = (exposed['revenue'].mean() - control['revenue'].mean()) * len(exposed)
incremental_roas = incremental_revenue / campaign_spend

print(f"Apparent ROAS: {apparent_roas:.1f}x")
print(f"Incremental ROAS: {incremental_roas:.1f}x")

if incremental_roas > apparent_roas * 0.5:
    print("Canale genuinamente efficace")
else:
    print("ATTENZIONE: maggior parte delle conversioni non incrementali")

Non stupirti se un canale con ROAS apparente di 5x ha ROAS incrementale di 1.5x. È normale. Significa che il canale è ancora profittevole ma molto meno di quanto sembri.

Caso reale: l’holdout che ha salvato $50M a eBay

Nel 2012, eBay spendeva $50M/anno su Google Ads per keyword “eBay” (brand keywords). Fecero un holdout geografico: spensero le ads in 30 mercati USA, mantenendole in 30 mercati simili. Dopo 60 giorni: zero differenza di revenue tra mercati con e senza ads. Gli utenti che cercavano “eBay” su Google avrebbero comunque cliccato il risultato organico (primo in classifica) e comprato. I $50M erano spesa pura senza alcun effetto incrementale.

eBay tagliò completamente le brand keywords. Il traffico organico assorbì il 99.5% del volume precedente. Il revenue restò invariato. L’hanno chiamato “il più costoso test A/A della storia” — perché il gruppo di controllo e il gruppo esposto si comportavano esattamente allo stesso modo.

Paper accademico: Blake, Nosko & Tadelis (2015), Econometrica.

Incrementality program

Costruisci un programma permanente di testing:

  1. Ogni canale significativo (>5% del budget) ha un holdout test almeno una volta l’anno
  2. Dopo ogni cambio di strategia (nuovo targeting, nuova creatività), test di incrementality
  3. Reporting: ogni report di canale include ROAS apparente E incrementale
  4. Budget allocation: basata su ROAS incrementale, non apparente

Controllo di qualità

Prima di usare incrementality testing e holdout in una decisione, controlla sempre completezza, duplicati, timezone, definizioni cambiate e segmenti esclusi. Molte analisi apparentemente sofisticate falliscono perché il dato di partenza misura un comportamento diverso da quello che il team crede di osservare.

Problema reale

Nel dominio di marketing data science, Incrementality testing e holdout serve a risolvere questo problema: usare modelli e segmentazioni per decidere dove intervenire, non per produrre complessità fine a se stessa. La lezione non va trattata come teoria isolata, ma come un modo per migliorare una scelta concreta con dati, assunzioni esplicite e controlli minimi.

Obiettivo operativo: Comprendere il problema analitico e il contesto decisionale; Applicare esempi, metriche e controlli a casi reali. Se alla fine non sai indicare quale decisione cambia, quale dato osservi e quale errore vuoi evitare, la lezione non è ancora diventata competenza applicata.

Modello concettuale

FaseCosa chiarireOutput
DomandaQuale scelta reale deve migliorare?Decisione da prendere
MisuraQuale segnale osservabile rappresenta il problema?Metrica o dato sorgente
ControlloQuale baseline rende il risultato interpretabile?Confronto credibile
AzioneChe cosa cambia dopo l’analisi?Prossimo passo operativo

Il modello concettuale è intenzionalmente semplice: decisione, dato, controllo, azione. Ogni approfondimento tecnico deve rafforzare almeno uno di questi quattro punti.

Formalizzazione rigorosa

Per rendere Incrementality testing e holdout analizzabile, definisci prima l’unità di lavoro: cliente, campagna, segmento, previsione o feature. Poi collega questa unità a una metrica osservabile: lift, errore, stabilità, valore marginale e costo operativo. Infine dichiara la decisione attesa: modello, esperimento, segmento attivabile o raccomandazione.

ElementoSpecifica richiesta
Unità di analisicliente, campagna, segmento, previsione o feature
Segnale principalelift, errore, stabilità, valore marginale e costo operativo
BaselinePeriodo precedente, gruppo comparabile, benchmark o scenario controfattuale
Decisionemodello, esperimento, segmento attivabile o raccomandazione
RischioScambiare un numero disponibile per una prova sufficiente

La formalizzazione e solida quando un altro analista può riprodurre la logica, criticare le assunzioni e ottenere la stessa decisione partendo dagli stessi dati.

Esempio o caso studio

Paid social dichiara ROAS 4x, ma in una regione holdout le vendite crescono quasi allo stesso ritmo. Il caso costringe il team a misurare lift incrementale, non solo revenue attribuita, e a decidere se il canale merita davvero budget aggiuntivo.

Evidenza osservataLettura prudenteAzione consigliata
Il numero miglioraPotrebbe essere effetto reale o variazione normaleCercare confronto e segmento
Un segmento cambia più degli altriLa media aggregata nasconde una differenzaSeparare coorti o casi d’uso
Il costo cresce insieme al risultatoL’impatto va letto sul margineStimare trade-off e sostenibilità

Lab / esercizio

Livello base

Scrivi una scheda di una pagina per Incrementality testing e holdout: decisione da supportare, metrica primaria, baseline, rischio principale e azione se il segnale e confermato.

Livello intermedio

Costruisci una tabella con tre segmenti, periodi o scenari. Per ciascuno indica cosa cambia, quale spiegazione alternativa e plausibile e quale controllo useresti prima di raccomandare un azione.

Livello research-grade

Prepara un decision memo: ipotesi, dati richiesti, criteri di esclusione, controlli di qualità, soglia decisionale, rischio residuo e piano di monitoraggio dopo la decisione.

Dataset e materiali consigliati

Usa CRM, campagne, transazioni, feature marketing, testo, embeddings e serie storiche. Se non hai accesso a dati reali, crea un dataset sintetico con almeno 200 righe, una dimensione temporale, una dimensione segmento e una metrica di outcome.

Errore tipico da evitare

L’errore più comune e usare Incrementality testing e holdout come etichetta invece che come processo. Succede quando il team mostra un grafico senza decisione, una metrica senza baseline, o una conclusione senza indicare quale assunzione potrebbe invalidarla.

La domanda di controllo è: se questo risultato fosse instabile, quale scelta sbaglierei? Se la risposta non è concreta, manca ancora il collegamento tra analisi e azione.

Quiz o checkpoint

  1. Quale decisione concreta dovrebbe migliorare questa lezione?
  2. Quale unità di analisi rende il problema misurabile?
  3. Quale baseline useresti per evitare una lettura ingenua?
  4. Quale errore tipico potrebbe cambiare la conclusione?
  5. Quale output consegneresti a uno stakeholder non tecnico?

Riepilogo operativo

Incrementality testing e holdout diventa utile quando produce una decisione più chiara, non quando aggiunge terminologia. Usa il framework problema, modello, formalizzazione, esempio, lab e checkpoint per trasformare la lezione in pratica verificabile. Categoria: Tecnico. Difficoltà: advanced. Tempo stimato: 22 min.

Approfondimento di pratica

Per consolidare Incrementality testing e holdout, trattala come una piccola prova di lavoro dentro un caso growth in cui segmenti, modelli o previsioni devono cambiare una decisione commerciale. Non basta dire di aver capito la lezione: devi produrre una raccomandazione misurabile con baseline, azione, rischio e criterio di verifica. Questo passaggio serve a rendere la conoscenza trasferibile, perché obbliga a separare contesto, misura, azione e limite.

Esempio operativo

Parti da una domanda semplice: quale scelta diventerebbe migliore se applicassi bene questa lezione? Nel modulo marketing data science, la risposta deve sempre collegare un problema reale a un output osservabile. Se stai studiando una lezione di tipo Tecnico, costruisci un esempio con tre righe: il contesto in cui nasce la domanda, il dato o il modello che useresti per leggerla, e la decisione che prenderesti dopo aver controllato i rischi.

Un esempio valido non deve essere grande. Può essere una tabella con una baseline e due segmenti, una query che verifica una definizione, un disegno di esperimento, un controllo su un modello o un memo di dieci righe. La qualità non dipende dalla complessità tecnica, ma dalla tracciabilità del ragionamento: chi legge deve capire perché hai scelto quella metrica, quale alternativa hai scartato e quale evidenza ti farebbe cambiare idea.

Checkpoint di lavoro

  • Scrivi la decisione che questa lezione dovrebbe migliorare, usando un verbo operativo: allocare, fermare, correggere, lanciare, misurare, priorizzare o investigare.
  • Definisci il segnale principale e almeno un guardrail. Il segnale dice dove guardi; il guardrail evita che una scelta localmente buona rovini il sistema.
  • Aggiungi una baseline. Senza baseline non sai se il numero e alto, basso, stabile, anomalo o solo raccontato male.
  • Esplicita il rischio più probabile: produrre un modello interessante ma scollegato da budget, canali o responsabilità operative. Scrivilo prima della raccomandazione, non dopo.
  • Chiudi con un output consegnabile: dashboard, query, schema, memo, esperimento, notebook o checklist. Deve essere qualcosa che un reviewer possa aprire e criticare.

Riepilogo di padronanza

Hai davvero assimilato Incrementality testing e holdout quando riesci a usarla in tre modi: spiegare il concetto senza gergo inutile, applicarlo a un caso piccolo ma realistico, e difendere una raccomandazione includendo limiti e prossimi controlli. Se manca uno di questi tre elementi, torna al modello concettuale e riduci l’ambizione dell’esempio. Meglio una prova piccola ma rigorosa di un grande progetto che non rende verificabile la decisione.