Saltar al contenido principal
AI-901 • 38 Horas • Nivel Avanzado / Principal Quantitative Data Scientist

Ciencia de Datos Cuantitativa: Series Temporales, Forecasting Estocástico, Detección de Anomalías e Inferencia Causal

Descomposición STL, modelos ARIMA/SARIMAX, Temporal Fusion Transformers (TFT), detección de anomalías con Isolation Forests y Conformal Prediction, y estimación de impacto causal mediante Double Machine Learning (DML) y Diferencias en Diferencias.

Módulo 1: Módulo 1: Procesos Estocásticos, Estacionariedad y Modelos Clásicos de Series Temporales

Procesos Estocásticos, Pruebas de Raíz Unitaria (ADF/KPSS) y Descomposición Robusta STL (50 min)

Procesos Estocásticos, Pruebas de Raíz Unitaria (ADF/KPSS) y Descomposición Robusta STL

1. Estacionariedad Fuerte vs. Estacionariedad Débil (En Sentido Amplio)

Un proceso estocástico discreto ${Y_t}_{t in mathbb{Z}}$ es débilmente estacionario (covarianza-estacionario) si y solo si cumple tres condiciones invariantes en el tiempo: 1. Media constante: $mathbb{E}[Y_t] = mu, quad orall t$ 2. Varianza finita y constante: $ ext{Var}(Y_t) = sigma^2 < infty, quad orall t$ 3. Autocovarianza dependiente únicamente del rezago $k$: $gamma(t, t-k) = ext{Cov}(Y_t, Y_{t-k}) = gamma_k$

flowchart LR
    RAW["Serie Cruda Y_t (No Estacionaria)"] --> STL["Descomposición STL (LOESS Robusto)"]
    STL --> T["Tendencia T_t"]
    STL --> S["Estacionalidad Multi-PeríodoMSTL S_t"]
    STL --> R["Residuo R_t"]
    R --> TEST["Matriz Conjunta ADF + KPSS"]
    TEST -->|"ADF p < 0.05 y KPSS p > 0.05"| STAT["Proceso Estacionario I(0)"]
    TEST -->|"Raíz Unitaria Detectada"| DIFF["Diferenciación Fraccionaria d in (0,1)"]

2. Matriz Diagnóstica Conjunta: Augmented Dickey-Fuller (ADF) vs. KPSS

Utilizar exclusivamente el test ADF conduce a errores de especificación ante cambios estructurales (structural breaks). En producción se cruzan ambas hipótesis nulas:

| Resultado ADF ($H_0$: Raíz Unitaria) | Resultado KPSS ($H_0$: Estacionariedad) | Diagnóstico Estadístico Riguroso | Acción en Pipeline de Feature Engineering | | :--- | :--- | :--- | :--- | | Rechaza $H_0$ ($p < 0.05$) | No rechaza $H_0$ ($p > 0.05$) | Estacionariedad estricta confirmada $I(0)$ | Modelar directamente sin diferenciación | | No rechaza $H_0$ ($p ge 0.05$) | Rechaza $H_0$ ($p le 0.05$) | Caminata aleatoria con raíz unitaria $I(1)$ | Aplicar diferenciación $Delta Y_t = (1 - B)Y_t$ o FracDiff | | No rechaza $H_0$ | No rechaza $H_0$ | Potencia estadística insuficiente / Serie corta | Incrementar ventana histórica o usar priors bayesianos | | Rechaza $H_0$ | Rechaza $H_0$ | Heterocedasticidad condicional o Estacionalidad fraccional | Transformación Box-Cox ($lambda$) + GARCH / MSTL |

3. Diferenciación Fraccionaria (FracDiff) para Preservar Memoria a Largo Plazo

La diferenciación entera ($d=1$) destruye la correlación de baja frecuencia (memoria histórica). Siguiendo a López de Prado, expandimos el operador de rezago $(1-B)^d$ mediante series binomiales con $d in (0, 1)$:

$(1 - B)^d = sum_{k=0}^{infty} inom{d}{k} (-B)^k = 1 - d B + rac{d(d-1)}{2!} B^2 - rac{d(d-1)(d-2)}{3!} B^3 + cdots$

Los pesos $omega_k = -omega_{k-1} rac{d - k + 1}{k}$ permiten encontrar el mínimo $d^*$ que logra pasar el test ADF al $95%$ de confianza conservando la máxima correlación con la serie original.

Modelos SARIMAX, Filtros de Kalman en Espacio de Estados y Selección de Orden AICc/BIC (50 min)

Modelos SARIMAX, Filtros de Kalman en Espacio de Estados y Selección de Orden AICc/BIC

1. Formulación Polinomial SARIMAX$(p,d,q)(P,D,Q)_s$ con Regresores Exógenos

El modelo autorregresivo integrado de media móvil estacional con variables exógenas $mathbf{X}_t in mathbb{R}^m$ se expresa mediante operadores de retardo $B^k Y_t = Y_{t-k}$:

$phi_p(B)Phi_P(B^s)(1 - B)^d(1 - B^s)^D left(Y_t - oldsymbol{eta}^ op mathbf{X}_t ight) = heta_q(B)Theta_Q(B^s) arepsilon_t, quad arepsilon_t sim mathcal{WN}(0, sigma^2)$

[!IMPORTANT]
Trampa de Regresión Espuria: En la implementación de estado de espacio (como statsmodels / statsforecast), los regresores $mathbf{X}_t$ se incluyen en la ecuación de observación antes de modelar el error como un proceso ARMA. Si $mathbf{X}_t$ posee tendencia estocástica, debe diferenciarse con el mismo operador $(1-B)^d(1-B^s)^D$.

2. Representación en Espacio de Estados y Recursión del Filtro de Kalman

Todo modelo ARIMA puede reescribirse como un sistema dinámico lineal gaussiano con estado latente $oldsymbol{alpha}_t in mathbb{R}^r$:

$egin{aligned} ext{Ecuación de Estado:} quad oldsymbol{alpha}_{t+1} &= mathbf{T}_t oldsymbol{alpha}_t + mathbf{R}_t oldsymbol{eta}_t, quad oldsymbol{eta}_t sim mathcal{N}(mathbf{0}, mathbf{Q}_t) \ ext{Ecuación de Medición:} quad Y_t &= mathbf{Z}_t oldsymbol{alpha}_t + mathbf{d}_t + arepsilon_t, quad arepsilon_t sim mathcal{N}(0, H_t) end{aligned}$

Esta formulación permite: 1. Manejo Exacto de Valores Faltantes (Missing Data): Cuando $Y_t$ es NULL, la ganancia de Kalman $mathbf{K}_t = mathbf{0}$ y la covarianza del estado simplemente se propaga ($mathbf{P}_{t|t} = mathbf{P}_{t|t-1}$) sin romper la verosimilitud. 2. Evaluación de Verosimilitud en $mathcal{O}(T)$ vía descomposición de error de predicción (Prediction Error Decomposition).

Backtesting sin Data Leakage: Rolling Window, Expanding Origin y Purged Embargo CV (45 min)

Backtesting sin Data Leakage: Rolling Window, Expanding Origin y Purged Embargo CV

1. Por Qué K-Fold Estándar Destruye Modelos Temporales

Aplicar $K$-Fold aleatorio viola la flecha causal del tiempo ($t_{ ext{train}} > t_{ ext{test}}$), filtrando shocks futuros a través de medias móviles centradas, normalizadores globales (StandardScaler ajustado sobre todo el dataset) y rezagos compartidos.

flowchart TD
    SPLIT["Partición Temporal Walk-Forward"] --> TR["Ventana Train: [t_0, t_k]"]
    TR --> PURGE["Zona de Purga (Horizon h): Elimina solapamiento de etiquetas t_k + h"]
    PURGE --> EMBARGO["Zona de Embargo: Previene autocorrelación serial residual"]
    EMBARGO --> TEST["Ventana Test: [t_k + h + e, t_k + h + e + w]"]

2. Métricas de Evaluación Libres de Escala: MASE y CRPS

- MAPE (Mean Absolute Percentage Error) diverge cuando $Y_t o 0$ y penaliza asimétricamente sobre-predicciones. - MASE (Mean Absolute Scaled Error - Hyndman & Koehler): Escala el error absoluto contra el pronóstico Seasonal Naive in-sample: $ ext{MASE} = rac{ rac{1}{H}sum_{t=T+1}^{T+H} |Y_t - hat{Y}_t|}{ rac{1}{T-s}sum_{t=s+1}^{T} |Y_t - Y_{t-s}|}$ Un $ ext{MASE} < 1$ demuestra empíricamente que el modelo supera al benchmark estacional.

Módulo 2: Módulo 2: Deep Learning para Series Temporales, Forecasting Probabilístico y Conformal Prediction

Arquitecturas Globales Deep Learning: N-BEATS, N-HiTS y Temporal Fusion Transformers (TFT) (55 min)

Arquitecturas Globales Deep Learning: N-BEATS, N-HiTS y Temporal Fusion Transformers (TFT)

1. Modelos Locales vs. Modelos Globales Cross-Series

Mientras ARIMA ajusta parámetros independientes $oldsymbol{ heta}_i$ por cada serie $i in {1,dots,N}$, un Modelo Global aprende una función parametrizada compartida $f_{oldsymbol{Theta}}$ sobre millones de series simultáneamente (ej. demanda de $500,000$ SKUs), transfiriendo patrones estacionales a productos con historial corto (Cold-Start).

2. Temporal Fusion Transformer (TFT): Arquitectura Interna

TFT combina codificación secuencial LSTM con Multi-Head Interpretable Attention y redes de compuerta Gated Residual Networks (GRN) para separar tres tipos de entradas: 1. Metadatos Estáticos ($mathbf{s}_i$): Categoría de producto, ubicación de tienda, segmento de cliente. 2. Entradas Pasadas Observadas ($mathbf{z}_{i, t-k:t}$): Tráfico histórico, ventas pasadas, latencia medida. 3. Entradas Futuras Conocidas ($mathbf{x}_{i, t+1:t+H}$): Calendario de feriados, promociones programadas, día de la semana.

3. Regresión Cuantílica Multi-Horizonte (Pinball Loss)

En lugar de predecir un único punto $hat{y}$, TFT predice simultáneamente los cuantiles $q in {0.10, 0.50, 0.90}$ para cada paso del horizonte $ au in {1,dots,H}$ minimizando la pérdida Pinball conjunta:

$mathcal{L}_{ ext{Quantile}}(y, hat{y}^{(q)}, q) = maxleft(q(y - hat{y}^{(q)}), ; (q - 1)(y - hat{y}^{(q)}) ight)$

Conformal Prediction para Series Temporales (EnbPI / ACI): Intervalos Libres de Distribución (50 min)

Conformal Prediction para Series Temporales (EnbPI / ACI): Intervalos Libres de Distribución

1. El Fallo de las Asunciones Gaussianas en Producción

Los intervalos paramétricos clásicos $hat{y}_t pm z_{1-alpha/2}hat{sigma}$ fallan catastróficamente bajo colas pesadas (fat tails), asimetría y cambios de régimen. Adaptive Conformal Inference (ACI) garantiza cobertura marginal e instantánea $1 - alpha$ sin asumir distribución paramétrica ni intercambiabilidad (exchangeability) estricta.

2. Actualización Dinámica de $alpha_t$ bajo Concept Drift (Algoritmo de Gibbs & Candès)

Si el residuo de no-conformidad $s_t = |Y_t - hat{Y}_t|$ supera el cuantil empírico $hat{Q}_{1-alpha_t}$, ocurriendo un error de cobertura $ ext{err}_t = mathbb{I}{Y_t otin hat{C}_t(alpha_t)}$, actualizamos el nivel de significancia efectivo en línea:

$alpha_{t+1} = alpha_t + gamma (alpha - ext{err}_t)$

Donde $gamma > 0$ es la tasa de adaptación: si el modelo comienza a fallar durante un shock de mercado ($ ext{err}_t = 1$), $alpha_{t+1}$ disminuye automáticamente, ensanchando el intervalo de predicción en el paso siguiente.

Pronóstico Jerárquico Coherente: Reconciliación Óptima MinT (Minimum Trace) (45 min)

Pronóstico Jerárquico Coherente: Reconciliación Óptima MinT (Minimum Trace)

1. El Problema de la Incoherencia en Árboles de Negocio

En retail o infraestructura cloud, las series forman una jerarquía agregada (Global $ o$ País $ o$ Región $ o$ Tienda $ o$ SKU). Si pronosticamos cada nivel independientemente ($hat{mathbf{y}}_h$), la suma de las hojas no coincide con el pronóstico agregado: $hat{mathbf{y}}_h eq mathbf{S}hat{mathbf{b}}_h$, donde $mathbf{S} in {0,1}^{n imes m}$ es la matriz de sumación.

2. Proyección Oblicua de Traza Mínima (Wickramasuriya et al.)

El estimador reconciliado óptimo insesgado minimiza la traza de la matriz de covarianza del error reconciliado $mathbf{W}_h$:

$ ilde{mathbf{y}}_h = mathbf{S}left(mathbf{S}^ op mathbf{W}_h^{-1} mathbf{S} ight)^{-1} mathbf{S}^ op mathbf{W}_h^{-1} hat{mathbf{y}}_h$

Utilizando la contracción de Ledoit-Wolf para estimar $mathbf{W}_h$, MinT mejora simultáneamente la precisión tanto del nivel agregado ejecutivo como del nivel granular de SKU.

Módulo 3: Módulo 3: Detección de Anomalías en Tiempo Real y Análisis de Cambio de Régimen

Detección de Anomalías Robusta: Residuos STL + MAD, Isolation Forests y Autoencoders Variacionales (50 min)

Detección de Anomalías Robusta: Residuos STL + MAD, Isolation Forests y Autoencoders Variacionales

1. Por Qué la Media y Desviación Estándar ($3sigma$) Tienen Punto de Ruptura 0%

Un único outlier extremo corrompe tanto la media muestral $ar{x}$ como la desviación estándar $s$, enmascarando anomalías subsecuentes (masking effect). La estadística robusta reemplaza $(ar{x}, s)$ por la Mediana y la Desviación Absoluta Mediana (MAD), cuyo punto de ruptura es del $50%$:

$ ext{MAD} = ext{median}left(|R_t - ext{median}(R)| ight), qquad Z_{ ext{robusto}}(t) = rac{0.6745 cdot |R_t - ext{median}(R)|}{ ext{MAD}}$

Donde $R_t = Y_t - T_t - S_t$ es el residuo desestacionalizado y $0.6745 = Phi^{-1}(0.75)$ garantiza consistencia asintótica con la desviación estándar normal.

2. Detección de Cambio de Régimen Estructural: BOCPD y PELT

Para distinguir entre un spike puntual (transitorio) y un cambio permanente de nivel o varianza (changepoint), utilizamos PELT (Pruned Exact Linear Time) minimizando:

$sum_{i=1}^{m+1} left[mathcal{C}left(y_{( au_{i-1}+1): au_i} ight) ight] + eta m$

Con poda dinámica que reduce la complejidad de $mathcal{O}(T^2)$ a $mathcal{O}(T)$ cuando el número de puntos de cambio crece linealmente con el tiempo.

Inferencia Causal Estructural: Grafos Acíclicos Dirigidos (DAGs), Operador do(X) y Criterio Backdoor (55 min)

Inferencia Causal Estructural: Grafos Acíclicos Dirigidos (DAGs), Operador do(X) y Criterio Backdoor

1. Correlación Condicional vs. Intervención Causal de Pearl

Predecir $mathbb{E}[Y mid X = x]$ mide asociación pasiva observacional; decidir políticas de negocio (ej. cambiar precio, otorgar descuento, escalar nodos) requiere estimar la distribución post-intervención $mathbb{E}[Y mid ext{do}(X = x)]$, la cual elimina todas las aristas entrantes a $X$ en el grafo causal $mathcal{G}$.

flowchart TD
    Z["Vector de Confusores Z (Segmento, Historial, Estacionalidad)"] --> X["Tratamiento X (Descuento / Cambio de Algoritmo)"]
    Z --> Y["Resultado Y (Retención / Ingreso Neto)"]
    X -->|"Efecto Causal Directo (ATE / CATE)"| Y
    X --> C["Colisionador C (Ticket de Soporte Post-Venta)"]
    Y --> C

2. Las Tres Reglas de bloqueo en DAGs

1. Confusor (Fork $X leftarrow Z ightarrow Y$): Abre un camino no-causal (backdoor path). Debe condicionarse en $Z$. 2. Mediador (Chain $X ightarrow M ightarrow Y$): Transmite el efecto causal. Condicionar en $M$ bloquea el efecto total que deseamos medir (overcontrol bias). 3. Colisionador (Collider $X ightarrow C leftarrow Y$): Está bloqueado por defecto. Condicionar en un colisionador $C$ (o sus descendientes) abre una correlación espuria (Paradoja de Berkson).

Estimación Causal Moderna: Double Machine Learning (DML), Diferencias en Diferencias y Control Sintético (50 min)

Estimación Causal Moderna: Double Machine Learning (DML), Diferencias en Diferencias y Control Sintético

1. Double / Debiased Machine Learning (Chernozhukov et al.)

Cuando el vector de confusores $mathbf{Z} in mathbb{R}^p$ es de alta dimensión y tiene relaciones no lineales con el tratamiento $T$ y el resultado $Y$, usar directamente un modelo ML regularizado (XGBoost/Lasso) para predecir $Y = heta T + g(mathbf{Z}) + arepsilon$ introduce un sesgo de regularización de orden superior ($n^{-1/2}$ diverge).

Solución DML mediante Ortogonalización de Neyman y Cross-Fitting: 1. Ajustar un modelo ML $hat{ell}(mathbf{Z}) = mathbb{E}[Y mid mathbf{Z}]$ en los folds auxiliares y calcular el residuo del resultado: $ ilde{Y}_i = Y_i - hat{ell}(mathbf{Z}_i)$. 2. Ajustar un segundo modelo ML $hat{m}(mathbf{Z}) = mathbb{E}[T mid mathbf{Z}]$ y calcular el residuo del tratamiento: $ ilde{T}_i = T_i - hat{m}(mathbf{Z}_i)$. 3. Regresar los residuos ortogonalizados (Teorema de Frisch-Waugh-Lovell no paramétrico): $hat{ heta}_{ ext{DML}} = left( rac{1}{n}sum_{i=1}^n ilde{T}_i^2 ight)^{-1} rac{1}{n}sum_{i=1}^n ilde{T}_i ilde{Y}_i$

Para estimar efectos heterogéneos individuales $ au(mathbf{z}) = ext{CATE}(mathbf{z})$, sustituimos el paso 3 por un Causal Forest o R-Learner minimizando $sum_i left( ilde{Y}_i - au(mathbf{Z}_i) ilde{T}_i ight)^2$.

Módulo 4: Módulo 4: Laboratorio Cuantitativo de Anomalías y Evaluación de Certificación

Ingeniería de Características Temporales In-Database: Ventanas Deslizantes Sin Fuga de Futuro (45 min)

Ingeniería de Características Temporales In-Database: Ventanas Deslizantes Sin Fuga de Futuro

1. Construcción de Lags y Estadísticos Móviles Estrictamente Causales en SQL

Al generar features temporales dentro de PostgreSQL / DuckDB / Snowflake, la cláusula ROWS BETWEEN N PRECEDING AND 1 PRECEDING garantiza matemáticamente que el registro actual $t$ jamás se incluya en la línea base contra la cual se evalúa una anomalía en $t$:

SELECT
  metric_ts,
  service_name,
  latency_ms,
  AVG(latency_ms) OVER (
    PARTITION BY service_name
    ORDER BY metric_ts
    ROWS BETWEEN 24 PRECEDING AND 1 PRECEDING
  ) AS baseline_mean_prev24h,
  STDDEV_SAMP(latency_ms) OVER (
    PARTITION BY service_name
    ORDER BY metric_ts
    ROWS BETWEEN 24 PRECEDING AND 1 PRECEDING
  ) AS baseline_std_prev24h
FROM telemetry_timeseries;

Laboratorio Práctico: Detección de Anomalías Estacionales y Estimación Difference-in-Differences en SQL (60 min)

Laboratorio Práctico: Detección de Anomalías Estacionales y Estimación Difference-in-Differences en SQL

Contexto del Desafío Cuantitativo

Eres el Principal Data Scientist de una plataforma de pagos. Se ha desplegado un nuevo motor de enrutamiento inteligente en la región LATAM-SOUTH (grupo de tratamiento is_treated = 1) a partir del periodo post_intervention = 1, mientras que LATAM-NORTH (is_treated = 0) actuó como grupo de control bajo tendencias paralelas.

En la base de datos existe la tabla causal_experiment_panel con las columnas: - region (TEXT) - is_treated (INTEGER: 1 tratamiento, 0 control) - post_intervention (INTEGER: 1 post-despliegue, 0 pre-despliegue) - conversion_rate_bps (NUMERIC: tasa de conversión en puntos base)

Objetivo de la Consulta SQL

Escribe una consulta SQL que calcule mediante una CTE los promedios de conversion_rate_bps de los 4 cuadrantes y devuelva una única fila con las siguientes columnas: 1. treated_diff: cambio post minus pre en el grupo tratado (is_treated = 1) redondeado a 2 decimales. 2. control_diff: cambio post minus pre en el grupo control (is_treated = 0) redondeado a 2 decimales. 3. did_ate_bps: el estimador causal Difference-in-Differences (treated_diff - control_diff) redondeado a 2 decimales.

Evaluación de Certificación: Ciencia de Datos Cuantitativa, Series Temporales e Inferencia Causal (45 min)

Evaluación de Certificación: AI-901

Demuestra tu dominio sobre procesos estocásticos, pruebas conjuntas ADF/KPSS, Temporal Fusion Transformers, Conformal Prediction y Double Machine Learning (DML).