# Marketing Science Center — datasets d'exemple

Version : 2026-08-18  
Licence : CC0 1.0 — voir `LICENSE-DATA.txt`  
Statut : données synthétiques à usage pédagogique ; elles ne décrivent aucune entreprise ni aucun marché réel.

## MSC-001 — Price Elasticity

Question : comment le volume varie-t-il avec le prix, toutes choses observées égales par ailleurs ?

Variables :

- `week` : semaine d'observation ;
- `price_eur` : prix unitaire observé en euros ;
- `units` : unités vendues ;
- `competitor_price_eur` : prix concurrent synthétique ;
- `promo` : indicateur de promotion (0/1) ;
- `season_index` : indice saisonnier centré autour de 1.

Méthode suggérée : régression log-log de `units` sur `price_eur`, avec contrôles disponibles. Le coefficient du logarithme du prix donne une élasticité conditionnelle au modèle spécifié.

Résultat attendu : une élasticité négative sur ce jeu construit. Comparer estimation simple et estimation avec contrôles.

Limites : 24 observations, prix par paliers, absence de coûts et de variables de concurrence détaillées. L'exercice ne permet ni recommandation de prix ni extrapolation à un marché réel.

## MSC-002 — Advertising Response

Question : la réponse marginale diminue-t-elle à mesure que la dépense augmente ?

Variables :

- `market` : identifiant synthétique de marché ;
- `weekly_spend_eur` : dépense média hebdomadaire ;
- `impressions_k` : impressions en milliers ;
- `response_index` : réponse incrémentale simulée ;
- `baseline_index` : niveau de base simulé autour de 100.

Méthode suggérée : comparer une droite, une fonction exponentielle saturante et une courbe logistique ; examiner les résidus et la stabilité des paramètres.

Résultat attendu : les modèles saturants décrivent mieux les rendements décroissants intégrés au jeu.

Limites : coupe transversale synthétique, aucune dynamique temporelle, aucun adstock, pas d'endogénéité de la dépense traitée. Un bon ajustement n'établit pas un effet causal.

## MSC-005 — Promotion Incrementality

Question : quelle différence de progression observe-t-on entre marchés test et contrôle ?

Variables :

- `market` : identifiant synthétique de marché ;
- `group` : groupe `test` ou `control` ;
- `pre_sales_eur` : ventes avant intervention ;
- `post_sales_eur` : ventes après intervention ;
- `promo_cost_eur` : coût promotionnel, nul dans le contrôle ;
- `stores` : nombre de magasins observés.

Méthode suggérée : différence-de-différences, `(post - pre)` du groupe test moins `(post - pre)` du groupe contrôle, avec incertitude estimée au niveau marché.

Résultat attendu : une progression moyenne supérieure dans le groupe test sur ce jeu construit.

Limites : affectation synthétique, petit nombre de marchés et une seule période avant/après. La plausibilité des tendances parallèles n'est pas démontrable ici ; le résultat ne constitue pas une preuve causale externe.

## MSC-004 — Customer Lifetime Value

Question : fréquence, récence et ancienneté permettent-elles d’ordonner une contribution future attendue ?

Variables : `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`. La valeur moyenne est vide quand `repeat_transactions=0`, car ces clients sont exclus de l’ajustement Gamma-Gamma.

Méthode suggérée : ajuster BG/NBD sur la période de calibration, vérifier les transactions prévues sur le holdout, puis convertir les transactions futures en contribution actualisée. Gamma-Gamma ne doit être ajouté qu’après contrôle de l’indépendance entre fréquence et valeur.

Résultat attendu : les clients récents et fréquents sont généralement classés plus haut, mais le classement doit être jugé sur les transactions du holdout et non sur l’ajustement seul.

Limites : 30 clients synthétiques, aucun coût de service ni traitement de rétention. L’échantillon illustre le flux de calcul ; il ne suffit pas à calibrer un modèle déployable.

## MSC-006 — Marketing Mix Modeling

Question : comment détecter qu’une série ne permet pas de séparer les contributions des canaux ?

Variables : `week`, `sales_units`, `search_spend_eur`, `social_spend_eur`, `tv_spend_eur`, `promotion`, `price_index`, `holiday`.

Méthode suggérée : comparer d’abord un benchmark temporel, examiner corrélations et VIF, puis tester la stabilité des coefficients avant toute transformation d’adstock ou de saturation.

Résultat attendu : `search_spend_eur` et `social_spend_eur` sont presque colinéaires. Le jeu doit produire des contributions de canaux instables selon la spécification ; c’est un exemple volontaire de non-identification.

Limites : 36 périodes synthétiques, aucune variation expérimentale et aucun choc exogène. Ce dataset ne permet ni attribution causale ni recommandation budgétaire.

## MSC-007 — Measurement Validity

Question : une échelle peut-elle être cohérente tout en échouant à distinguer confiance et satisfaction ?

Variables : `respondent_id`, `group`, `trust_1` à `trust_4`, `satisfaction_1` à `satisfaction_3`.

Méthode suggérée : calculer une fiabilité descriptive, examiner les corrélations inter-construits et traiter la taille d’échantillon comme un diagnostic préalable à toute CFA ou invariance.

Résultat attendu : les items de confiance sont cohérents, mais confiance et satisfaction sont volontairement très corrélées. Le résultat attendu est un signal d’échec de validité discriminante, pas une validation.

Limites : 30 réponses, soit 15 par groupe, ne permettent pas une CFA ou un test d’invariance défendable. Le jeu sert à reconnaître un échec et une insuffisance d’information.

## MSC-010 — Monte Carlo Inputs

Question : comment propager l’incertitude d’un scénario prix-volume-marge sans ignorer les dépendances ?

Variables : `scenario`, `input`, `distribution`, `param_1`, `param_2`, `param_3`, `unit`, `correlation_with`, `rho`. Pour une loi triangulaire, les trois paramètres sont minimum, mode et maximum ; `rho` fixe la corrélation déclarée avec l’entrée nommée.

Méthode suggérée : simuler conjointement les entrées, conserver une graine, calculer volume et contribution à chaque tirage, puis rapporter quantiles, probabilité de franchir un seuil et erreur Monte Carlo.

Résultat attendu : comparer la dispersion avec et sans la dépendance volume-élasticité déclarée. Son effet dépend du signe de `rho` et du modèle ; avec la corrélation négative fournie, elle amortit légèrement la dispersion.

Limites : distributions et corrélations pédagogiques, non calibrées sur un marché réel. Les dépendances multivariées ne sont que partielles et doivent être validées avant usage.

## MSC-P-007-RELIABILITY — Modèles alpha / oméga

Question : comment la tau-équivalence ou l’inégalité des charges modifie-t-elle alpha et oméga pour un même score total ?

Variables : `scenario`, `item`, `loading`, `residual_variance`. Les items sont standardisés, la variance du facteur vaut 1 et les erreurs sont indépendantes dans le modèle générateur.

Méthode suggérée : construire `R` avec `r_ij = loading_i × loading_j`, calculer alpha depuis `R` et oméga depuis les charges et résidus, puis simuler de nouveaux échantillons de répondants synthétiques depuis le processus générateur déclaré avec réestimation complète.

Résultat attendu : sous tau-équivalence, `α = ω = 0,814458`. Dans le scénario congénérique, `α = 0,782488`, `ω = 0,815454` et `ω−α = 0,032966`.

Limites : paramètres pédagogiques, modèle unidimensionnel normal et erreurs indépendantes. Aucune enquête réelle, aucun seuil universel et aucune preuve de validité.

## MSC-P-009-MATRIX — Matrice de corrélation ACP / AFE / AFC

Question : comment une même matrice distingue-t-elle réduction descriptive, facteurs communs et vérification confirmatoire ?

Variables : `v1` à `v3` sont les indicateurs synthétiques du premier facteur ; `v4` à `v6`, ceux du second. La diagonale vaut 1, les corrélations intrafacteur 0,64 et les corrélations interfacteurs 0,256. Le fichier ne contient aucune observation individuelle et ne définit aucun effectif empirique.

Méthode suggérée : calculer les valeurs propres pour l’ACP, estimer deux facteurs obliques pour l’AFE, puis spécifier deux facteurs corrélés pour l’AFC. Dans les exemples logiciels, `N = 300` est un pseudo-effectif pédagogique nécessaire à certaines commandes, pas une propriété des données.

Résultat attendu : valeurs propres `3,048`, `1,512` et `0,360` quatre fois ; les deux premiers axes expliquent exactement 76 % de la variance. La solution génératrice utilise des saturations de 0,80, une corrélation factorielle de 0,40 et des unicités de 0,36.

Limites : exemple théorique exact et tautologique, sans bruit d’échantillonnage. Il illustre les calculs mais ne fournit ni erreurs standards, ni intervalles, ni validation d’une échelle réelle.

## MSC-P-002-RETARGETING : Corrélation et causalité

Question : quelle part de l’écart d’achat entre clients reciblés et non reciblés subsiste après standardisation sur l’intention préalable ?

Variables : `prior_intent` (0 faible, 1 forte), `retargeted` (affectation à la politique fixe, 0 non, 1 oui), `n` (effectif de cellule) et `purchases` (achats sous 30 jours). Échantillon synthétique : 10 000 clients issus de la population éligible. La politique A=1 autorise une impression display fixe sous 24 heures, plafonnée à une sur sept jours ; A=0 les supprime.

Méthode suggérée : calculer la différence brute des risques, puis les risques standardisés `Σₗ E[Y|A=a,L=l]P(L=l)` et leur différence. Résultat attendu : association brute `15,14` points ; ATE standardisé `2,80` points ; intervalle de Wald à 95 % `[1,20 ; 4,40]` points.

Limites : agrégats synthétiques, un seul confondeur observé et aucune randomisation. L’IC de Wald suppose des cellules binomiales indépendantes et conditionne sur les effectifs et poids observés. L’interprétation causale exige cohérence, échangeabilité conditionnelle, positivité et absence d’interférence ; l’intervalle n’intègre pas le biais d’un confondeur omis.

## MSC-P-018-PREDICTIVE-CAUSAL : Régression prédictive et causale

Question : pourquoi une variable post-traitement peut-elle améliorer la prévision sans être admissible pour estimer l’effet causal total ?

Variables : `customer_id`, `split`, `baseline_intent_z`, `prior_spend_eur`, `reminder_assigned`, `engagement_index_7d`, `spend_30d_eur`. Les deux premières covariables sont prétraitement ; l’engagement est mesuré sept jours après l’assignation.

Méthode suggérée : ajuster les prédictions sur 1 800 lignes train, évaluer RMSE, MAE et R² sur 600 lignes holdout, puis estimer séparément l’ATE sur les 2 400 unités randomisées sans ajuster le médiateur. Utiliser la graine `20260819` et le script Python fourni.

Résultat attendu : le modèle avec engagement réduit le RMSE de `15,20 %`, IC bootstrap à 95 % `[11,05 % ; 19,62 %]`. L’ATE estimé vaut `8,3667 €`, IC HC1 `[7,8704 € ; 8,8631 €]`, pour une vérité synthétique de `8,80 €`. Ajuster l’engagement ramène le coefficient de traitement à `2,0657 €`, qui n’est pas l’effet total.

Limites : données entièrement synthétiques, relations linéaires et assignation aléatoire indépendante par construction. L’IC bootstrap décrit ce holdout ; l’IC HC1 ne traite ni dérive future, ni contamination, ni transport à une autre population.

## MSC-P-021-PANEL : Effets fixes, aléatoires et CRE

Question : comment séparer l’association intra-magasin entre part display et commandes de l’association entre magasins ?

Variables : `store_id` (12 magasins synthétiques), `week` (8 périodes), `display_share_pct` (part de visites exposées, en points de pourcentage) et `orders_per_1000` (commandes pour 1 000 visites). Le panel équilibré contient 96 lignes.

Méthode suggérée : estimer la pente poolée, la pente within par centrage magasin, la pente between sur les moyennes, un RE standard par quasi-centrage GLS et un CRE/Mundlak avec `xit−x̄i` et `x̄i`. L’exemple est un FE magasin à un facteur ; ajouter des effets semaine pour absorber les chocs temporels communs.

Résultat attendu : poolée `−1,140472`, FE/within `−0,600000`, between `−1,200000`, RE standard de référence `−0,689372`, CRE `βW=−0,600000` et `βB=−1,200000`. La SE sandwich par magasin vaut `0,022972` avec correction finie `G/(G−1)` ; l’IC t(11) à 95 % est `[−0,650562 ; −0,549438]`. Python 3.13 et base R 4.5 reproduisent la méthode de moments déclarée ; les sorties RE natives SPSS/SAS peuvent différer selon l’estimateur et les options.

Limites : données entièrement synthétiques, 12 clusters seulement, panel équilibré et processus linéaire déclaré. L’intervalle illustre la convention pédagogique déclarée sans garantir une inférence fiable avec peu de clusters. Il traite le bruit groupé de l’exemple, pas la confusion variant dans le temps, la causalité inverse, l’erreur de mesure ou le biais de sélection. Les coefficients sont associatifs.

## MSC-P-026-LOGIT-PROBIT : Comparaison prédictive binaire

Question : Logit et Probit produisent-ils des probabilités, effets marginaux et diagnostics holdout suffisamment différents pour changer une décision ?

Variables : `customer_id`, `split` (`train` ou `holdout`), `prior_engagement_z`, `discount_pct`, `mobile`, `purchase`. Le fichier contient 1 200 clients synthétiques, dont 800 pour l’apprentissage et 400 pour le holdout. Graine fixe : `20260819`.

Méthode suggérée : ajuster les deux liens avec le même prédicteur linéaire sur l’apprentissage, puis comparer sur le même holdout l’effet marginal moyen de l’engagement avec IC delta à 95 %, le score de Brier, la log-loss, l’AUC, la calibration-in-the-large et deux profils de queue.

Résultat attendu : AME `19,8738` points pour Logit et `19,8780` pour Probit ; Brier `0,175319` et `0,175367` ; log-loss `0,527456` et `0,527414` ; AUC `0,809401` et `0,809743`. Les écarts sont minimes dans cet exemple.

Limites : outcome généré par un processus logistique pédagogique, sans campagne ni client réels. Les IC concernent les AME sous le modèle déclaré, pas toutes les différences de métriques. Le jeu ne prouve ni équivalence universelle ni effet causal de l’engagement.

## MSC-P-020-PRICE-ENDOGENEITY : Endogénéité du prix et 2SLS

Question : quelle réponse log-log des quantités à la variation de prix induite par un choc de coût fournisseur peut-on estimer sous des hypothèses IV déclarées ?

Variables : `product_id`, `week`, `log_quantity`, `log_price`, `supplier_cost_shock`, `promotion`, `season_index`. Le fichier contient 600 lignes synthétiques, 60 produits et 10 semaines. Graine fixe : `20260820`.

Méthode suggérée : comparer OLS et 2SLS avec `supplier_cost_shock` comme instrument exclu, `promotion` et `season_index` comme contrôles, puis calculer R² partiel, Wald clusterisé de première étape, IC clusterisé par produit et diagnostic par fonction de contrôle. Python 3.13 standard library est la référence exécutable ; R 4.5 est la référence compagnon.

Résultat attendu : `βOLS = −0,577216`, `βIV = −1,011208`, ET IV `0,083104`, IC 95 % `[−1,174092 ; −0,848325]`, R² partiel `0,310020` et Wald clusterisé `χ²(1)=255,749005`. Le coefficient générateur vaut `−1,20` ; l’écart réalisé est un bruit d’échantillonnage, pas un benchmark.

Limites : données entièrement synthétiques, instrument valide seulement par construction et structure linéaire log-log. La pertinence est mesurable ; indépendance et exclusion ne sont pas prouvées par les diagnostics. Aucun prix optimal, transport hors support ou effet réel n’est établi.

## Décisions possibles et impossibles

Ces jeux permettent de reproduire un calcul, comparer des spécifications et discuter l'incertitude. Ils ne permettent pas d'établir un benchmark sectoriel, de prévoir des ventes réelles ou de recommander automatiquement un prix, un budget ou une promotion.
