# Marketing Science Center — dataset di esempio

Versione: 2026-08-18  
Licenza: CC0 1.0 — vedere `LICENSE-DATA.txt`  
Stato: dati sintetici per uso didattico; non descrivono alcuna impresa o mercato reale.

## MSC-001 — Price Elasticity

Domanda: come varia il volume al variare del prezzo, mantenendo costanti i controlli osservati?

Variabili:

- `week`: settimana di osservazione;
- `price_eur`: prezzo unitario osservato in euro;
- `units`: unità vendute;
- `competitor_price_eur`: prezzo sintetico del concorrente;
- `promo`: indicatore di promozione (0/1);
- `season_index`: indice stagionale centrato intorno a 1.

Metodo suggerito: regressione log-log di `units` su `price_eur`, utilizzando i controlli disponibili. Il coefficiente del logaritmo del prezzo è un’elasticità condizionata al modello specificato.

Risultato atteso: elasticità negativa in questo dataset costruito. Confrontare una stima semplice con una stima che include i controlli.

Limiti: 24 osservazioni, prezzi a scaglioni, assenza di costi e variabili concorrenziali limitate. L’esercizio non consente né una raccomandazione di prezzo né l’estrapolazione a un mercato reale.

## MSC-002 — Advertising Response

Domanda: la risposta marginale diminuisce all’aumentare della spesa?

Variabili:

- `market`: identificatore sintetico del mercato;
- `weekly_spend_eur`: spesa settimanale per i media;
- `impressions_k`: impressioni in migliaia;
- `response_index`: risposta incrementale simulata;
- `baseline_index`: livello di base simulato intorno a 100.

Metodo suggerito: confrontare una retta, una funzione esponenziale saturante e una curva logistica; esaminare i residui e la stabilità dei parametri.

Risultato atteso: i modelli saturanti descrivono meglio i rendimenti decrescenti incorporati nei dati.

Limiti: sezione trasversale sintetica, nessuna dinamica temporale, nessun adstock e nessun trattamento dell’endogeneità della spesa. Un buon adattamento non dimostra un effetto causale.

## MSC-005 — Promotion Incrementality

Domanda: quale differenza di crescita si osserva tra mercati test e controllo?

Variabili:

- `market`: identificatore sintetico del mercato;
- `group`: gruppo `test` o `control`;
- `pre_sales_eur`: vendite prima dell’intervento;
- `post_sales_eur`: vendite dopo l’intervento;
- `promo_cost_eur`: costo promozionale, pari a zero nel gruppo di controllo;
- `stores`: numero di punti vendita osservati.

Metodo suggerito: differenza nelle differenze, sottraendo la variazione `(post - pre)` del gruppo di controllo da quella del gruppo test, con incertezza stimata a livello di mercato.

Risultato atteso: aumento medio maggiore nel gruppo test in questo dataset costruito.

Limiti: assegnazione sintetica, numero ridotto di mercati e un solo periodo prima/dopo. Le tendenze parallele non possono essere dimostrate qui; il risultato non costituisce evidenza causale esterna.

## MSC-004 — Customer Lifetime Value

Domanda: frequenza, recenza e anzianità permettono di ordinare la contribuzione futura attesa?

Variabili: `customer_id`, `calibration_end`, `repeat_transactions`, `recency_from_first_weeks`, `calibration_age_weeks`, `holdout_horizon_weeks`, `holdout_transactions`, `mean_repeat_transaction_value_eur`, `contribution_margin_rate`, `discount_rate_per_week`. Il valore medio ripetuto è vuoto quando `repeat_transactions=0`, perché tali clienti sono esclusi dalla stima Gamma-Gamma.

Metodo suggerito: stimare BG/NBD sulla calibrazione, validare le transazioni sul holdout e poi convertirle in contribuzione attualizzata. Aggiungere Gamma-Gamma solo dopo il controllo dell’indipendenza frequenza-valore.

Risultato atteso: i clienti recenti e frequenti tendono a essere ordinati più in alto, ma il ranking va giudicato sul holdout.

Limiti: 30 clienti sintetici, nessun costo di servizio o trattamento di ritenzione. Il campione illustra il flusso, non calibra un modello operativo.

## MSC-006 — Marketing Mix Modeling

Domanda: come rilevare che una serie non consente di separare i contributi dei canali?

Variabili: `week`, `sales_units`, `search_spend_eur`, `social_spend_eur`, `tv_spend_eur`, `promotion`, `price_index`, `holiday`.

Metodo suggerito: partire da un benchmark temporale, esaminare correlazioni e VIF, poi verificare la stabilità dei coefficienti prima di adstock e saturazione.

Risultato atteso: search e social sono quasi collineari; i contributi risultano instabili tra specificazioni. È un esempio intenzionale di non identificazione.

Limiti: 36 periodi sintetici, nessuna variazione sperimentale o shock esogeno. Nessuna attribuzione causale o raccomandazione di budget.

## MSC-007 — Measurement Validity

Domanda: una scala può essere coerente senza distinguere fiducia e soddisfazione?

Variabili: `respondent_id`, `group`, da `trust_1` a `trust_4`, da `satisfaction_1` a `satisfaction_3`.

Metodo suggerito: calcolare l’affidabilità descrittiva, esaminare le correlazioni tra costrutti e trattare la numerosità come diagnostica preliminare a CFA o invarianza.

Risultato atteso: gli item di fiducia sono coerenti, ma fiducia e soddisfazione sono volutamente molto correlate. Il risultato è un allarme di validità discriminante, non una validazione.

Limiti: 30 risposte, 15 per gruppo, non sostengono CFA o invarianza difendibili. Il dataset mostra fallimento e informazione insufficiente.

## MSC-010 — Monte Carlo Inputs

Domanda: come propagare l’incertezza prezzo-volume-margine senza ignorare le dipendenze?

Variabili: `scenario`, `input`, `distribution`, `param_1`, `param_2`, `param_3`, `unit`, `correlation_with`, `rho`. Per la triangolare i parametri sono minimo, moda e massimo; `rho` dichiara la correlazione con l’input indicato.

Metodo suggerito: simulare congiuntamente con seme fisso, calcolare volume e contribuzione per estrazione, quindi riportare quantili, probabilità di soglia ed errore Monte Carlo.

Risultato atteso: confrontare la dispersione con e senza la dipendenza volume-elasticità dichiarata. L’effetto dipende dal segno di `rho` e dal modello; la correlazione negativa fornita riduce leggermente la dispersione.

Limiti: distribuzioni e correlazioni didattiche non calibrate; la dipendenza multivariata è solo parziale.

## MSC-P-007-RELIABILITY — Modelli alpha / omega

Domanda: come cambiano alpha e omega con tau-equivalenza o carichi disuguali per lo stesso punteggio totale?

Variabili: `scenario`, `item`, `loading`, `residual_variance`. Gli item sono standardizzati, la varianza del fattore è 1 e gli errori sono indipendenti nel modello generatore.

Metodo suggerito: costruire `R` con `r_ij = loading_i × loading_j`, calcolare alpha da `R` e omega da carichi e residui, poi simulare nuovi campioni di rispondenti sintetici dal processo generatore dichiarato ristimando il modello.

Risultato atteso: con tau-equivalenza, `α = ω = 0,814458`. Nello scenario congenerico, `α = 0,782488`, `ω = 0,815454` e `ω−α = 0,032966`.

Limiti: parametri didattici, modello unidimensionale normale ed errori indipendenti. Nessuna indagine reale, soglia universale o prova di validità.

## MSC-P-009-MATRIX — Matrice di correlazione PCA / EFA / CFA

Domanda: come può la stessa matrice distinguere riduzione descrittiva, fattori comuni e verifica confermativa?

Variabili: da `v1` a `v3` sono indicatori sintetici del primo fattore; da `v4` a `v6` del secondo. La diagonale vale 1, le correlazioni entro fattore 0,64 e quelle tra fattori 0,256. Il file non contiene osservazioni individuali e non definisce una numerosità empirica.

Metodo suggerito: calcolare gli autovalori PCA, stimare due fattori obliqui con EFA, quindi specificare due fattori correlati con CFA. Negli esempi software, `N = 300` è uno pseudo-campione illustrativo richiesto da alcuni comandi, non una proprietà dei dati.

Risultato atteso: autovalori `3,048`, `1,512` e `0,360` quattro volte; i primi due assi spiegano esattamente il 76% della varianza. La soluzione generatrice usa saturazioni 0,80, correlazione fattoriale 0,40 e unicità 0,36.

Limiti: esempio teorico esatto e tautologico, senza rumore campionario. Illustra il calcolo ma non fornisce errori standard, intervalli o validazione di una scala reale.

## MSC-P-002-RETARGETING: Correlazione e causalità

Domanda: quale parte della differenza di acquisto tra clienti con e senza retargeting rimane dopo la standardizzazione per intenzione precedente?

Variabili: `prior_intent` (0 bassa, 1 alta), `retargeted` (assegnazione alla politica fissa, 0 no, 1 sì), `n` (numerosità della cella) e `purchases` (acquisti entro 30 giorni). Campione sintetico: 10.000 clienti dalla popolazione idonea. La politica A=1 permette una sola impression display fissa entro 24 ore, con limite di una in sette giorni; A=0 la sopprime.

Metodo suggerito: calcolare la differenza grezza dei rischi, poi i rischi standardizzati `Σₗ E[Y|A=a,L=l]P(L=l)` e la loro differenza. Risultato atteso: associazione grezza `15,14` punti; ATE standardizzato `2,80` punti; intervallo di Wald al 95% `[1,20; 4,40]` punti.

Limiti: aggregati sintetici, un solo confondente osservato e nessuna randomizzazione. L’IC di Wald assume celle binomiali indipendenti e condiziona su numerosità e pesi osservati. L’interpretazione causale richiede coerenza, scambiabilità condizionale, positività e assenza d’interferenza; l’intervallo non include il bias di confondenti omessi.

## MSC-P-018-PREDICTIVE-CAUSAL: Regressione predittiva e causale

Domanda: perché una variabile post-trattamento può migliorare la previsione senza essere ammissibile per l’effetto causale totale?

Variabili: `customer_id`, `split`, `baseline_intent_z`, `prior_spend_eur`, `reminder_assigned`, `engagement_index_7d`, `spend_30d_eur`. Le prime due covariate sono pretrattamento; l’engagement è misurato sette giorni dopo l’assegnazione.

Metodo suggerito: stimare le previsioni su 1.800 righe train, valutare RMSE, MAE e R² su 600 righe holdout, quindi stimare separatamente l’ATE sulle 2.400 unità randomizzate senza aggiustare il mediatore. Usare il seed `20260819` e lo script Python fornito.

Risultato atteso: il modello con engagement riduce RMSE del `15,20%`, IC bootstrap 95% `[11,05%; 19,62%]`. L’ATE stimato è `8,3667 €`, IC HC1 `[7,8704 €; 8,8631 €]`, con verità sintetica `8,80 €`. Aggiustare l’engagement riduce il coefficiente di trattamento a `2,0657 €`, che non è l’effetto totale.

Limiti: dati interamente sintetici, relazioni lineari e assegnazione casuale indipendente per costruzione. L’IC bootstrap descrive questo holdout; l’IC HC1 non tratta drift futuro, contaminazione o trasporto a un’altra popolazione.

## MSC-P-021-PANEL: Effetti fissi, casuali e CRE

Domanda: come separare l’associazione intra-negozio tra quota display e ordini dall’associazione tra negozi?

Variabili: `store_id` (12 negozi sintetici), `week` (8 periodi), `display_share_pct` (quota di visite esposte, in punti percentuali) e `orders_per_1000` (ordini per 1.000 visite). Il panel bilanciato contiene 96 righe.

Metodo suggerito: stimare slope pooled, slope within mediante centratura per negozio, slope between sulle medie, RE standard con quasi-centratura GLS e CRE/Mundlak con `xit−x̄i` e `x̄i`. L’esempio usa FE a un fattore per negozio; aggiungere effetti settimana per assorbire shock temporali comuni.

Risultato atteso: pooled `−1,140472`, FE/within `−0,600000`, between `−1,200000`, RE standard di riferimento `−0,689372`, CRE `βW=−0,600000` e `βB=−1,200000`. La SE sandwich per negozio è `0,022972` con correzione finita `G/(G−1)`; l’IC t(11) al 95% è `[−0,650562; −0,549438]`. Python 3.13 e base R 4.5 riproducono il metodo dei momenti dichiarato; gli output RE nativi SPSS/SAS possono variare con stimatore e opzioni.

Limiti: dati interamente sintetici, solo 12 cluster, panel bilanciato e processo lineare dichiarato. L’intervallo illustra la convenzione didattica dichiarata senza garantire un’inferenza affidabile con pochi cluster. Tratta il rumore clusterizzato dell’esempio, non confondimento variabile nel tempo, causalità inversa, errore di misura o selezione. I coefficienti sono associativi.

## MSC-P-026-LOGIT-PROBIT: Confronto predittivo binario

Domanda: Logit e Probit producono probabilità, effetti marginali e diagnostica holdout abbastanza diversi da cambiare una decisione?

Variabili: `customer_id`, `split` (`train` o `holdout`), `prior_engagement_z`, `discount_pct`, `mobile`, `purchase`. Il file contiene 1.200 clienti sintetici, 800 per il training e 400 per il holdout. Seed fisso: `20260819`.

Metodo suggerito: stimare i due link con lo stesso predittore lineare sul training, poi confrontare sullo stesso holdout l’effetto marginale medio dell’engagement con IC delta al 95%, Brier, log-loss, AUC, calibration-in-the-large e due profili di coda.

Risultato atteso: AME `19,8738` punti per Logit e `19,8780` per Probit; Brier `0,175319` e `0,175367`; log-loss `0,527456` e `0,527414`; AUC `0,809401` e `0,809743`. Le differenze sono minime in questo esempio.

Limiti: l’esito è generato da un processo logistico didattico, senza campagne o clienti reali. Gli IC riguardano gli AME sotto il modello dichiarato, non ogni differenza di metrica. Il dataset non prova equivalenza universale né un effetto causale dell’engagement.

## MSC-P-020-PRICE-ENDOGENEITY: Endogeneità del prezzo e 2SLS

Domanda: quale risposta log-log della quantità alla variazione di prezzo indotta da uno shock del costo del fornitore si può stimare sotto ipotesi IV dichiarate?

Variabili: `product_id`, `week`, `log_quantity`, `log_price`, `supplier_cost_shock`, `promotion`, `season_index`. Il file contiene 600 righe sintetiche, 60 prodotti e 10 settimane. Seme fisso: `20260820`.

Metodo suggerito: confrontare OLS e 2SLS usando `supplier_cost_shock` come strumento escluso e `promotion` e `season_index` come controlli; calcolare poi R² parziale, Wald cluster del primo stadio, intervallo cluster per prodotto e diagnostica control function. Python 3.13 standard library è il riferimento eseguibile; R 4.5 è il riferimento complementare.

Risultato atteso: `βOLS = −0,577216`, `βIV = −1,011208`, ES IV `0,083104`, IC 95% `[−1,174092; −0,848325]`, R² parziale `0,310020` e Wald cluster `χ²(1)=255,749005`. Il coefficiente generatore è `−1,20`; lo scarto realizzato è rumore campionario, non un benchmark.

Limiti: dati interamente sintetici, strumento valido solo per costruzione e struttura lineare log-log. La rilevanza è misurabile; indipendenza ed esclusione non sono provate dalla diagnostica. Non si stabiliscono prezzo ottimale, trasporto fuori supporto o effetto reale.

## MSC-P-030-SURVIVAL — Ritenzione e sopravvivenza censurata

Domanda: come stimare la probabilità di restare attivi a 12 e 18 mesi quando alcuni clienti sono ancora attivi alla fine, e descrivere l'associazione condizionale tra piano e hazard di churn?

Variabili: `customer_id`, `plan_group`, `baseline_engagement_z`, `start_date`, `end_date`, `duration_months`, `churn_event`, `censor_reason`. Il dataset contiene 600 clienti sintetici reclutati in 90 giorni, 401 churn e 199 osservazioni censurate. `duration_months` è la durata analitica; le date sono arrotondate al giorno. Seed fisso: `20260820`.

Metodo suggerito: Kaplan-Meier con intervalli log-log di Greenwood, log-rank, Cox aggiustato per gruppo ed engagement iniziale, poi interazione gruppo × `log(t/12)` come diagnostica dichiarata dei rischi proporzionali.

Risultato atteso: mensile dà `S9=0,489303`, `S12=0,380325` e `S18=0,254876`; annuale dà `S9=0,779045`, `S12=0,702150` e `S18=0,534170`. Cox aggiustato: `HR=0,494368`, IC 95% `[0,397306; 0,615142]`. Interazione temporale: `p=0,082475`.

Limiti: dati interamente sintetici, censura indipendente solo per costruzione, finestra massima 24 mesi e selezione osservazionale del piano. Un input richiesto mancante o non valido arresta l'analisi e riporta il numero di righe interessate, senza imputazione. La sensibilità calcolata confronta 9, 12 e 18 mesi e aggiunge l'interazione temporale dichiarata. I risultati sono associativi e non provano effetti causali.

## Decisioni possibili e impossibili

Questi dataset permettono di riprodurre un calcolo, confrontare specificazioni e discutere l’incertezza. Non permettono di stabilire benchmark di settore, prevedere vendite reali o raccomandare automaticamente un prezzo, un budget o una promozione.
