Datos sucios, series temporales y forecasting. Limpia un historial de ventas roto y genera predicciones con intervalo de confianza para el equipo de compras.
El área de logística te entrega un historial de ventas con dos años de datos sucios. Tu misión: limpiarlos, modelarlos y proyectar la demanda futura con intervalo de confianza.
Este taller simula un escenario real de negocio: el área de logística de una empresa te entrega un historial de ventas semanales con dos años de datos, pero el archivo está lleno de problemas. Tu misión es construir un pipeline completo que limpie esos datos y genere una predicción confiable.
Dado un dataset histórico con huecos temporales y anomalías, construir una visualización interactiva que:
Una empresa distribuidora necesita planificar inventario para las próximas 8–12 semanas. El historial exportado del ERP tiene los siguientes problemas:
No se trata de memorizar un algoritmo.
El reto tiene tres niveles. Elige según tu experiencia — todos parten del mismo dataset generado automáticamente en el browser.
El pipeline tiene cuatro etapas secuenciales. Cada una es un módulo independiente que alimenta al siguiente.
Antes de limpiar, hay que entender qué está mal.
Reemplazar valores inválidos con estimaciones razonables.
Entrenar un modelo de serie temporal sobre los datos limpios.
Proyectar la demanda futura comunicando la incertidumbre.
Conceptos técnicos clave para implementar cada etapa del pipeline correctamente en JavaScript puro.
No necesitas un servidor — simula el dataset completo en JavaScript.
s = (s * 9301 + 49297) % 233280if (r() < 0.12) val = nullIdentifica valores que se alejan demasiado de la media.
z = (valor - media) / std|z| > umbral (ej. 2.5σ) → outlier → tratar como NaNEl modelo más completo para series con tendencia y estacionalidad.
α nivel, β tendencia, γ estacionalidad(S + B·h) · I[h % periodo]Mide qué tan bien ajusta el modelo antes de predecir.
MAE = media(|real - fitted|) — error absoluto medioMAPE = media(|real - fitted| / real) · 100 — error porcentual interpretableRMSE = √media((real - fitted)²) — penaliza errores grandesR² = 1 - SS_res / SS_tot — bondad de ajuste (1 = perfecto)El IC debe ampliarse a medida que predices más lejos — es correcto matemáticamente.
margen[h] = z · RMSE · √(1 + h / steps)max(0, predicción - margen)predicción + margenfill: '+1' para rellenar la banda entre curvasEstas tres preguntas forman el reporte de una página. No tienen respuesta única — se evalúa el razonamiento, no la cifra exacta.
Explora la solución de referencia (Nivel 3). Cambia los parámetros del sidebar, ejecuta el pipeline completo y observa cómo cambian diagnóstico, limpieza, modelo y forecast.