Síntesis Metodológica
Flujo de trabajo recomendado paso a paso: del análisis exploratorio al pronóstico. Tabla completa de funciones R del repositorio de la profesora Nelfi González.
¿Qué hace la diferencia entre un análisis superficial y uno riguroso?
Después de dominar los módulos anteriores, ya tienes las herramientas. Pero en la práctica, la mayoría de los errores no son técnicos —son de proceso: saltarse pasos, no revisar los residuos, comparar modelos sin criterio, o confiar en un R² alto sin verificar los supuestos.
Este módulo formaliza el flujo de trabajo que un analista experto sigue en cada proyecto de series de tiempo. No es un listado burocrático: es el orden natural en que los problemas se revelan y se resuelven. Cada paso depende del anterior. Saltarse uno es asumir que el resultado será bueno —y esa apuesta suele perderse.
Este módulo consolida el flujo de trabajo completo: desde el primer gráfico hasta el pronóstico final validado. Úsalo como lista de verificación en cada análisis. Cada paso tiene código ejecutable que sigue el ejemplo de AirPassengers —la serie más completa del curso.
6.1 Flujo de trabajo recomendado
Análisis exploratorio
- Graficar la serie: ¿tendencia creciente/decreciente? ¿oscilaciones estacionales?
- ¿La varianza aumenta con el nivel? → considerar log(Y_t)
- Usar decompose() para una primera estimación visual de T_t y S_t
- Calcular acf() de la serie original para detectar la periodicidad s
Transformación
- Si la varianza crece con el nivel: trabajar con log(Y_t) → modelo multiplicativo
- Si la varianza es constante: trabajar con Y_t → modelo aditivo
- Verificar visualmente que el log estabiliza la varianza
Modelado de tendencia
- Desestacionalizar la serie (con decompose() o STL) y graficar T_t
- Observar la forma de la tendencia — ¿lineal? ¿cuadrática? ¿cública?
- Ajustar modelos polinomiales de grado 1, 2, 3 y comparar AIC/BIC
- No elegir el grado por los ciclos visibles en los residuos
Modelado de estacionalidad
- Season plot: cada año como línea — ¿se separan hacia arriba? → multiplicativo
- Subseries plot: cada mes en su panel — ¿pendiente creciente en todos? → multiplicativo
- Boxplot por período: cajas más grandes en meses pico → varianza heterogénea → multiplicativo
- Si los 3 coinciden en amplitud creciente → log(); si son planos → serie original
- Patrón estable año a año → dummies (seasonaldummy); patrón evolutivo → Fourier o STL
Ajuste del modelo completo
- Combinar predictores de tendencia y estacionalidad en data.frame
- Ajustar con lm() (modelos aditivo y log) o nls() (exponencial)
- Obtener tabla de coeficientes, R² ajustado, F-global
- Calcular valores ajustados y residuos
Diagnóstico de residuos
- Graficar Ê_t vs t (media cero, sin tendencia residual)
- Graficar Ê_t vs Ŷ_t (homocedasticidad)
- ACF y PACF de residuos (independencia)
- Q-Q plot y test Shapiro-Wilk (normalidad)
- Durbin-Watson o Ljung-Box para autocorrelación
Pronóstico y validación
- Generar predicciones puntuales para h periodos adelante
- Calcular intervalos de predicción al 95%
- Comparar con periodo de prueba (ex-post): MAE, RMSE, MAPE, cobertura
6.2 Tabla de funciones R clave (repositorio Nelfi González)
| Función | Propósito | Argumentos clave |
|---|---|---|
| Mipoly(tiempo, grado) | Genera data.frame con columnas t¹, …, tᵖ | tiempo: vector 1:n, grado: entero ≥ 1 |
| seasonaldummy(serie, h) | Crea s−1 variables indicadoras estacionales | h: periodos futuros para pronóstico |
| Mytrigon(tiempo, Frecuencias) | Crea senos y cosenos para frecuencias dadas | Frecuencias: vector Fⱼ |
| lm(formula, data) | Ajuste MCO de modelos lineales (base R) | formula, data, subset |
| regexponencialv02(respuesta, data) | Ajuste no lineal de modelo exponencial-polinomial | respuesta, data, grado, dummies |
| exp.crit.inf.resid(resid, n.par) | Calcula AIC y BIC en escala original (para log-modelos) | residuos, número de parámetros |
| amplitud.cobertura(real, LIP, LSP) | Mide precisión y cobertura de intervalos de predicción | vectores de reales, LI y LS |
| interpdeltas(modelo, gradopoly, aditivo) | Extrae y grafica efectos estacionales δᵢ | modelo lm, grado polinomio, tipo |
| spec.pgram(x, ...) | Calcula el periodograma (base R) | taper, log, spans |
| stl(serie, s.window) | Descomposición STL con LOESS (base R) | s.window: "periodic" o entero impar |
Lo que el diagnóstico de residuos te dice — guía de lectura
Los residuos son la firma del modelo: revelan lo que no capturaste. Aprende a leerlos:
- Residuos con tendencia (suben o bajan con t) → la tendencia del modelo no es suficiente. Sube el grado del polinomio o usa log(Y).
- Residuos con patrón estacional visible (picos en los mismos meses cada año) → la estacionalidad no fue modelada o no fue correcta. Añade dummies o armónicos.
- Residuos con varianza creciente (embudo) → el modelo es aditivo pero debería ser multiplicativo (log).
- ACF con barras significativas en los primeros rezagos → autocorrelación residual. Necesitas ARIMA sobre el error o más predictores.
- Q-Q plot con colas pesadas → los residuos no son normales. Revisa atípicos o considera transformaciones adicionales.
- Residuos limpios (ruido blanco) → el modelo capturó toda la estructura. Puedes confiar en los pronósticos.
6.3 Errores comunes y cómo evitarlos
✗ Elegir el grado del polinomio por los ciclos en los residuos
Los ciclos indican falta de estacionalidad o autocorrelación, no mayor grado de tendencia. La tendencia se modela observando la componente Tt del decompose(), no los residuos completos.
✗ Olvidar la corrección exp(MSE/2) al volver de log
Las predicciones en escala original siempre deben multiplicarse por exp(MSE/2). Omitirla produce estimaciones sesgadas hacia abajo.
✗ Incluir s dummies en lugar de s−1
Incluir las s indicadoras junto al intercepto genera colinealidad perfecta. R elimina una automáticamente pero lo hace silenciosamente, lo que puede confundir la interpretación.
✗ Comparar AIC/BIC entre modelos log y no-log directamente
AIC y BIC no son comparables entre escalas. Use la función exp.crit.inf.resid() que calcula los criterios en la escala original, o compare RMSE/MAPE en el periodo de prueba.
✗ Extrapolar muy lejos del rango de entrenamiento
Los modelos polinomiales de alto grado pueden divergir rápidamente fuera de la muestra. Prefiera grado bajo para pronóstico y valide con un periodo ex-post.