# Marketing Science Center — datasets de ejemplo

Versión: 2026-08-18  
Licencia: CC0 1.0 — véase `LICENSE-DATA.txt`  
Estado: datos sintéticos con fines educativos; no describen ninguna empresa ni mercado real.

## MSC-001 — Price Elasticity

Pregunta: ¿cómo cambia el volumen con el precio, manteniendo constantes los controles observados?

Variables:

- `week`: semana de observación;
- `price_eur`: precio unitario observado en euros;
- `units`: unidades vendidas;
- `competitor_price_eur`: precio sintético del competidor;
- `promo`: indicador de promoción (0/1);
- `season_index`: índice estacional centrado alrededor de 1.

Método sugerido: regresión log-log de `units` sobre `price_eur`, utilizando los controles disponibles. El coeficiente del logaritmo del precio es una elasticidad condicionada al modelo especificado.

Resultado esperado: elasticidad negativa en este dataset construido. Comparar una estimación simple con otra que incluya controles.

Límites: 24 observaciones, precios escalonados, ausencia de costes y variables competitivas limitadas. El ejercicio no permite recomendar un precio ni extrapolar a un mercado real.

## MSC-002 — Advertising Response

Pregunta: ¿disminuye la respuesta marginal a medida que aumenta la inversión?

Variables:

- `market`: identificador sintético del mercado;
- `weekly_spend_eur`: inversión semanal en medios;
- `impressions_k`: impresiones en miles;
- `response_index`: respuesta incremental simulada;
- `baseline_index`: nivel base simulado alrededor de 100.

Método sugerido: comparar una recta, una función exponencial saturante y una curva logística; examinar los residuos y la estabilidad de los parámetros.

Resultado esperado: los modelos saturantes describen mejor los rendimientos decrecientes incorporados en los datos.

Límites: corte transversal sintético, sin dinámica temporal, sin adstock y sin tratamiento de la endogeneidad de la inversión. Un buen ajuste no demuestra un efecto causal.

## MSC-005 — Promotion Incrementality

Pregunta: ¿qué diferencia de crecimiento se observa entre los mercados test y control?

Variables:

- `market`: identificador sintético del mercado;
- `group`: grupo `test` o `control`;
- `pre_sales_eur`: ventas antes de la intervención;
- `post_sales_eur`: ventas después de la intervención;
- `promo_cost_eur`: coste promocional, cero en el grupo de control;
- `stores`: número de tiendas observadas.

Método sugerido: diferencia en diferencias, restando el cambio `(post - pre)` del grupo de control al del grupo test, con incertidumbre estimada a nivel de mercado.

Resultado esperado: mayor incremento medio en el grupo test dentro de este dataset construido.

Límites: asignación sintética, pocos mercados y un único periodo antes/después. Aquí no pueden demostrarse tendencias paralelas; el resultado no constituye evidencia causal externa.

## MSC-004 — Customer Lifetime Value

Pregunta: ¿frecuencia, recencia y antigüedad permiten ordenar la contribución futura esperada?

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`. El valor medio repetido queda vacío cuando `repeat_transactions=0`, porque esos clientes se excluyen del ajuste Gamma-Gamma.

Método sugerido: ajustar BG/NBD en calibración, validar transacciones en holdout y convertirlas después en contribución descontada. Añadir Gamma-Gamma solo tras comprobar independencia frecuencia-valor.

Resultado esperado: los clientes recientes y frecuentes suelen quedar más arriba, pero el ranking debe juzgarse en el holdout.

Límites: 30 clientes sintéticos, sin coste de servicio ni tratamiento de retención. La muestra ilustra el proceso, no calibra un modelo operativo.

## MSC-006 — Marketing Mix Modeling

Pregunta: ¿cómo detectar que una serie no permite separar las contribuciones de los canales?

Variables: `week`, `sales_units`, `search_spend_eur`, `social_spend_eur`, `tv_spend_eur`, `promotion`, `price_index`, `holiday`.

Método sugerido: empezar con un benchmark temporal, revisar correlaciones y VIF y probar estabilidad de coeficientes antes de adstock o saturación.

Resultado esperado: search y social son casi colineales; las contribuciones deben resultar inestables entre especificaciones. Es un ejemplo deliberado de no identificación.

Límites: 36 periodos sintéticos, sin variación experimental ni shock exógeno. No permite atribución causal ni recomendación presupuestaria.

## MSC-007 — Measurement Validity

Pregunta: ¿una escala puede ser coherente sin distinguir confianza y satisfacción?

Variables: `respondent_id`, `group`, de `trust_1` a `trust_4`, de `satisfaction_1` a `satisfaction_3`.

Método sugerido: calcular fiabilidad descriptiva, revisar correlaciones entre constructos y tratar el tamaño muestral como diagnóstico previo a AFC o invariancia.

Resultado esperado: los ítems de confianza son coherentes, pero confianza y satisfacción están deliberadamente muy correlacionadas. Se espera una alerta de validez discriminante, no validación.

Límites: 30 respuestas, 15 por grupo, no sostienen AFC ni invariancia defendibles. El dataset enseña a reconocer fallo e información insuficiente.

## MSC-010 — Monte Carlo Inputs

Pregunta: ¿cómo propagar incertidumbre precio-volumen-margen sin ignorar dependencias?

Variables: `scenario`, `input`, `distribution`, `param_1`, `param_2`, `param_3`, `unit`, `correlation_with`, `rho`. En una triangular, los parámetros son mínimo, moda y máximo; `rho` declara la correlación con la entrada indicada.

Método sugerido: simular conjuntamente con semilla fija, calcular volumen y contribución por iteración e informar cuantiles, probabilidad de umbral y error Monte Carlo.

Resultado esperado: comparar la dispersión con y sin la dependencia volumen-elasticidad declarada. Su efecto depende del signo de `rho` y del modelo; la correlación negativa incluida reduce ligeramente la dispersión.

Límites: distribuciones y correlaciones didácticas no calibradas; la dependencia multivariante es parcial.

## MSC-P-007-RELIABILITY — Modelos alfa / omega

Pregunta: ¿cómo cambian alfa y omega con tau-equivalencia o cargas desiguales para la misma puntuación total?

Variables: `scenario`, `item`, `loading`, `residual_variance`. Los ítems están estandarizados, la varianza del factor es 1 y los errores son independientes en el modelo generador.

Método sugerido: construir `R` con `r_ij = loading_i × loading_j`, calcular alfa desde `R` y omega desde cargas y residuos, y simular nuevas muestras de encuestados sintéticos desde el proceso generador declarado reestimando todo el modelo.

Resultado esperado: con tau-equivalencia, `α = ω = 0,814458`. En el escenario congenérico, `α = 0,782488`, `ω = 0,815454` y `ω−α = 0,032966`.

Límites: parámetros didácticos, modelo unidimensional normal y errores independientes. Ninguna encuesta real, umbral universal o prueba de validez.

## MSC-P-009-MATRIX — Matriz de correlación ACP / AFE / AFC

Pregunta: ¿cómo puede la misma matriz distinguir reducción descriptiva, factores comunes y contraste confirmatorio?

Variables: `v1` a `v3` son indicadores sintéticos del primer factor; `v4` a `v6`, del segundo. La diagonal es 1, las correlaciones intrafactor son 0,64 y las interfactor 0,256. El archivo no contiene observaciones individuales ni define un tamaño muestral empírico.

Método sugerido: calcular los autovalores del ACP, estimar dos factores oblicuos con AFE y especificar dos factores correlacionados con AFC. En los ejemplos de software, `N = 300` es un pseudotamaño ilustrativo requerido por algunos comandos, no una propiedad de los datos.

Resultado esperado: autovalores `3,048`, `1,512` y `0,360` cuatro veces; los dos primeros ejes explican exactamente el 76% de la varianza. La solución generadora usa cargas de 0,80, correlación factorial de 0,40 y unicidades de 0,36.

Límites: ejemplo teórico exacto y tautológico, sin ruido muestral. Ilustra el cálculo, pero no proporciona errores estándar, intervalos ni validación de una escala real.

## MSC-P-002-RETARGETING: Correlación y causalidad

Pregunta: ¿qué parte de la diferencia de compra entre clientes con y sin retargeting permanece tras estandarizar por intención previa?

Variables: `prior_intent` (0 baja, 1 alta), `retargeted` (asignación a la política fija, 0 no, 1 sí), `n` (tamaño de celda) y `purchases` (compras en 30 días). Muestra sintética: 10.000 clientes de la población elegible. La política A=1 permite una impresión display fija en 24 horas, limitada a una en siete días; A=0 la suprime.

Método sugerido: calcular la diferencia bruta de riesgos y luego los riesgos estandarizados `Σₗ E[Y|A=a,L=l]P(L=l)` y su diferencia. Resultado esperado: asociación bruta `15,14` puntos; ATE estandarizado `2,80` puntos; intervalo de Wald al 95% `[1,20; 4,40]` puntos.

Límites: agregados sintéticos, un solo confusor observado y sin aleatorización. El IC de Wald supone celdas binomiales independientes y condiciona por tamaños y pesos observados. La interpretación causal exige consistencia, intercambiabilidad condicional, positividad y ausencia de interferencia; el intervalo no incluye el sesgo por confusores omitidos.

## MSC-P-018-PREDICTIVE-CAUSAL: Regresión predictiva y causal

Pregunta: ¿por qué una variable posterior al tratamiento puede mejorar la predicción sin ser admisible para el efecto causal total?

Variables: `customer_id`, `split`, `baseline_intent_z`, `prior_spend_eur`, `reminder_assigned`, `engagement_index_7d`, `spend_30d_eur`. Las dos primeras covariables son pretratamiento; la interacción se mide siete días después de la asignación.

Método sugerido: ajustar predicciones en 1.800 filas train, evaluar RMSE, MAE y R² en 600 filas holdout y estimar por separado el ATE en las 2.400 unidades aleatorizadas sin ajustar el mediador. Usar la semilla `20260819` y el script Python proporcionado.

Resultado esperado: el modelo con interacción reduce el RMSE un `15,20%`, IC bootstrap 95% `[11,05%; 19,62%]`. El ATE estimado es `8,3667 €`, IC HC1 `[7,8704 €; 8,8631 €]`, con una verdad sintética de `8,80 €`. Ajustar la interacción reduce el coeficiente de tratamiento a `2,0657 €`, que no es el efecto total.

Límites: datos totalmente sintéticos, relaciones lineales y asignación aleatoria independiente por construcción. El IC bootstrap describe este holdout; el IC HC1 no cubre deriva futura, contaminación ni transporte a otra población.

## MSC-P-021-PANEL: Efectos fijos, aleatorios y CRE

Pregunta: ¿cómo separar la asociación dentro de tienda entre cuota de display y pedidos de la asociación entre tiendas?

Variables: `store_id` (12 tiendas sintéticas), `week` (8 periodos), `display_share_pct` (proporción de visitas expuestas, en puntos porcentuales) y `orders_per_1000` (pedidos por 1.000 visitas). El panel equilibrado contiene 96 filas.

Método sugerido: estimar pendiente agrupada, pendiente within mediante centrado por tienda, pendiente between sobre medias, RE estándar por cuasicentrado GLS y CRE/Mundlak con `xit−x̄i` y `x̄i`. El ejemplo usa FE de tienda de un factor; añada efectos de semana para absorber shocks temporales comunes.

Resultado esperado: agrupada `−1,140472`, FE/within `−0,600000`, between `−1,200000`, RE estándar de referencia `−0,689372`, CRE `βW=−0,600000` y `βB=−1,200000`. El EE sandwich por tienda es `0,022972` con corrección finita `G/(G−1)`; el IC t(11) del 95% es `[−0,650562; −0,549438]`. Python 3.13 y base R 4.5 reproducen el método de momentos declarado; las salidas RE nativas SPSS/SAS pueden diferir según estimador y opciones.

Limitaciones: datos completamente sintéticos, solo 12 grupos, panel equilibrado y proceso lineal declarado. El intervalo ilustra la convención pedagógica declarada sin garantizar inferencia fiable con pocos grupos. Trata ruido agrupado del ejemplo, no confusión variable, causalidad inversa, error de medición o selección. Los coeficientes son asociativos.

## MSC-P-026-LOGIT-PROBIT: Comparación predictiva binaria

Pregunta: ¿Logit y Probit producen probabilidades, efectos marginales y diagnósticos holdout lo bastante distintos como para cambiar una decisión?

Variables: `customer_id`, `split` (`train` o `holdout`), `prior_engagement_z`, `discount_pct`, `mobile`, `purchase`. El archivo contiene 1.200 clientes sintéticos, 800 para entrenamiento y 400 para holdout. Semilla fija: `20260819`.

Método sugerido: ajustar ambos enlaces con el mismo predictor lineal en entrenamiento y comparar en el mismo holdout el efecto marginal medio de la interacción con IC delta del 95%, Brier, log-loss, AUC, calibración global y dos perfiles de cola.

Resultado esperado: AME `19,8738` puntos para Logit y `19,8780` para Probit; Brier `0,175319` y `0,175367`; log-loss `0,527456` y `0,527414`; AUC `0,809401` y `0,809743`. Las diferencias son mínimas en este ejemplo.

Limitaciones: el resultado se genera mediante un proceso logístico didáctico, sin campañas ni clientes reales. Los IC se refieren a los AME bajo el modelo declarado, no a cada diferencia de métrica. El dataset no demuestra equivalencia universal ni un efecto causal de la interacción.

## MSC-P-020-PRICE-ENDOGENEITY: Endogeneidad del precio y 2SLS

Pregunta: ¿qué respuesta log-log de la cantidad a la variación del precio inducida por un shock de coste del proveedor puede estimarse bajo supuestos IV declarados?

Variables: `product_id`, `week`, `log_quantity`, `log_price`, `supplier_cost_shock`, `promotion`, `season_index`. El archivo contiene 600 filas sintéticas, 60 productos y 10 semanas. Semilla fija: `20260820`.

Método sugerido: comparar OLS y 2SLS con `supplier_cost_shock` como instrumento excluido y `promotion` y `season_index` como controles; calcular después R² parcial, Wald agrupado de primera etapa, intervalo agrupado por producto y diagnóstico de función de control. Python 3.13 standard library es la referencia ejecutable; R 4.5 es la referencia complementaria.

Resultado esperado: `βOLS = −0,577216`, `βIV = −1,011208`, EE IV `0,083104`, IC 95% `[−1,174092; −0,848325]`, R² parcial `0,310020` y Wald agrupado `χ²(1)=255,749005`. El coeficiente generador es `−1,20`; la diferencia realizada es ruido muestral, no un benchmark.

Limitaciones: datos totalmente sintéticos, instrumento válido solo por construcción y estructura lineal log-log. La relevancia es medible; independencia y exclusión no quedan probadas por los diagnósticos. No se establece precio óptimo, transporte fuera del soporte ni efecto real.

## MSC-P-030-SURVIVAL — Retención y supervivencia censurada

Pregunta: ¿cómo estimar la probabilidad de seguir activo a 12 y 18 meses cuando algunos clientes siguen activos al final, y describir la asociación condicional entre plan y hazard de churn?

Variables: `customer_id`, `plan_group`, `baseline_engagement_z`, `start_date`, `end_date`, `duration_months`, `churn_event`, `censor_reason`. El dataset contiene 600 clientes sintéticos reclutados durante 90 días, 401 churns y 199 observaciones censuradas. `duration_months` es la duración analítica; las fechas se redondean al día. Semilla fija: `20260820`.

Método sugerido: Kaplan-Meier con intervalos log-log de Greenwood, log-rank, Cox ajustado por grupo y engagement inicial, e interacción grupo × `log(t/12)` como diagnóstico declarado de riesgos proporcionales.

Resultado esperado: mensual da `S9=0,489303`, `S12=0,380325` y `S18=0,254876`; anual da `S9=0,779045`, `S12=0,702150` y `S18=0,534170`. Cox ajustado: `HR=0,494368`, IC 95% `[0,397306; 0,615142]`. Interacción temporal: `p=0,082475`.

Limitaciones: datos totalmente sintéticos, censura independiente solo por construcción, ventana máxima de 24 meses y selección observacional del plan. Una entrada requerida ausente o no válida detiene el análisis e informa el número de filas afectadas, sin imputación. La sensibilidad calculada compara 9, 12 y 18 meses y añade la interacción temporal declarada. Los resultados son asociativos y no prueban efectos causales.

## Decisiones posibles e imposibles

Estos datasets permiten reproducir un cálculo, comparar especificaciones y debatir la incertidumbre. No permiten establecer un benchmark sectorial, prever ventas reales ni recomendar automáticamente un precio, un presupuesto o una promoción.
