Referencia: Anatomía de las series de tiempo
Una referencia para las piezas estructurales que componen todo modelo de series de tiempo: tendencia, estacionalidad, residuo, autocorrelación y la maquinaria de estacionaridad que las une. Utiliza esto como una tabla de consulta cuando intentes decidir si diferenciar, modelar la tendencia de forma explícita o simplemente pasar la serie cruda a un árbol.
Lista
| Señal / Cantidad | Definición en una línea | Rango / tipo | Qué te indica | Dónde se usa en el corpus |
|---|---|---|---|---|
| Tendencia | Deriva suave y a largo plazo en el nivel de la serie | ; a menudo modelada como un polinomio o una trayectoria lineal por tramos | En qué dirección se mueve la serie una vez que ignoras las fluctuaciones | ARIMA y SARIMA, Prophet vs. modelos estadísticos |
| Estacionalidad | Patrón impulsado por el calendario que se repite en un período fijo (12 meses, 52 semanas, 24 horas, etc.) | ; suma ~0 durante un período en el caso aditivo | Regularidad de día de la semana o mes del año con la que puedes planificar | Por qué tu pronóstico falla en Navidad |
| Residuo | Lo que queda después de eliminar la tendencia y la estacionalidad: ruido irregular, eventos, cambios de régimen | ; idealmente se comporta como ruido blanco | Si aún te queda estructura sin modelar o valores atípicos | Cómo detectar y manejar el data drift |
| Autocorrelación | Correlación de la serie consigo misma rezagada en pasos | Cuánto dura la “memoria” de la serie | Ingeniería de características para series de tiempo | |
| Autocorrelación parcial | Correlación directa en el rezago , después de eliminar el efecto de los rezagos intermedios | En qué rezago cortar al elegir un orden AR | ARIMA y SARIMA | |
| Estacionariedad (débil) | La media y la varianza no cambian con el tiempo; la autocovarianza depende solo del rezago, no del tiempo | prueba de pasar/no pasar | Si puedes ajustar modelos de estilo ARMA directamente en la serie original | Pronóstico clásico vs. ML |
| Diferenciación | (primera diferencia); a veces | El truco estándar para eliminar una raíz unitaria / tendencia lineal | Validación cruzada para series de tiempo | |
| Estadístico ADF | Estadístico de la prueba Aumentada de Dickey-Fuller para la hipótesis nula “existe una raíz unitaria” | , más negativo = rechazo más fuerte | Si se rechaza por completo la no estacionariedad | ARIMA y SARIMA |
El modelo mental de tres señales
Casi toda descomposición clásica de series de tiempo escribe la serie observada como
La tendencia es la deriva lenta y suave. La estacionalidad es una oscilación de período fijo — el sube y baja que regresa cada 12 meses debido al calendario, no a la tendencia. El residuo es todo lo demás: ruido, picos por días festivos, eventos noticiosos, cambios de régimen. Todo el juego del pronóstico consiste en extraer y lo suficientemente bien como para que sea pequeño y aproximadamente blanco.
Por lo general, se desea la forma aditiva a menos que el tamaño de la fluctuación estacional crezca con el nivel de la serie. Las ventas minoristas con picos estacionales multiplicativos (pequeños en los primeros años, grandes una vez que aumentan los ingresos) son el caso clásico en el que la descomposición multiplicativa — o de manera equivalente, una transformación logarítmica seguida de una descomposición aditiva — gana.
La descomposición aditiva se puede escribir como una regresión sobre un conjunto de funciones de base:
donde es el período estacional (por ejemplo, 12 para datos mensuales) y armónicos capturan la forma estacional. STL reemplaza la tendencia polinómica con un suavizador de gráficos de dispersión ponderado localmente (LOESS) y utiliza un suavizador estacional basado en promedios móviles; Prophet reemplaza la tendencia con una curva lineal por tramos (o logística saturada) y el término estacional con una serie de Fourier. Todos producen las mismas tres partes — simplemente las regularizan de manera diferente.
| Lenguaje sencillo | Símbolo estadístico | Equivalente en Python |
|---|---|---|
| Valor observado en el tiempo | series.iloc[t] | |
| Componente de tendencia | decomp.trend.iloc[t] | |
| Componente estacional | decomp.seasonal.iloc[t] | |
| Residuo / resto | or | decomp.resid.iloc[t] |
| Período estacional | period=12 | |
| Identidad aditiva | model="additive" | |
| Identidad multiplicativa | model="multiplicative" o transformación logarítmica + aditiva |
Autocorrelación, ACF, PACF, estacionariedad, diferenciación
Autocorrelación en el rezago es simplemente la correlación de Pearson entre y , calculada sobre la parte superpuesta de la serie. La ACF grafica para y responde a la pregunta “¿cuánto me sigue diciendo el día de hoy sobre lo que pasará dentro de días?” La PACF elimina el efecto indirecto que fluye a través de los rezagos intermedios: si está correlacionada con , que a su vez está correlacionada con , la PACF en el rezago 2 reporta únicamente la correlación directa entre y .
Una serie es estacionaria (en sentido débil) cuando su media, varianza y estructura de autocovarianzas no cambian con el tiempo. Los modelos lineales tipo ARMA asumen esto; si les proporcionas una serie con una media a la deriva, el modelo se ajustará sin problemas y luego pronosticará mal. La solución estándar es la diferenciación: reemplaza con , lo que elimina una tendencia lineal y cualquier raíz unitaria, y vuelve a realizar la prueba. Si una diferenciación no es suficiente, diferencia de nuevo (esto es raro; hacerlo dos veces usualmente significa que has mal especificado algo).
La autocovarianza en el rezago es
y la autocorrelación es la versión normalizada
La ACF muestral utiliza
La PACF en el rezago es el último coeficiente en la regresión AR()
La primera diferencia es , donde es el operador de retroceso; la -ésima diferencia es . Una diferencia estacional de periodo es .
| Lenguaje sencillo | Símbolo estadístico | Equivalente en Python |
|---|---|---|
| Autocorrelación de rezago | acf(series, nlags=k)[k] | |
| Autocorrelación parcial de rezago | pacf(series, nlags=k, method="ywm")[k] | |
| Primera diferencia | series.diff().dropna() | |
| Diferencia estacional (periodo ) | series.diff(m).dropna() | |
| Hipótesis nula del ADF | : raíz unitaria presente (no estacionaria) | adfuller(series)[1] > 0.05 → no rechazar |
| Retroceso | series.shift(1) |
Lectura de los gráficos
- ACF decae lentamente, PACF se corta después del rezago → un patrón AR(); considera términos AR.
- PACF decae lentamente, ACF se corta después del rezago → un patrón MA(); considera términos MA.
- Ambas decaen lentamente → ARMA mixto; considera ambos, o puede que la serie no esté suficientemente diferenciada.
- ACF presenta picos significativos en los rezagos → caso de ARMA estacional; necesitas una diferenciación estacional.
Ejemplo práctico en Python: tres descomposiciones de la misma serie
Construye una serie mensual sintética con una tendencia lineal, un ciclo estacional anual y ruido gaussiano. Luego, descomponla de tres maneras: el clásico seasonal_decompose, STL y Prophet. Compara lo que devuelve cada método.
import numpy as np
import pandas as pd
np.random.seed(7)
n = 60 # 5 years of monthly data
t = np.arange(n)
trend = 0.15 * t + 10
seasonality = 4 * np.sin(2 * np.pi * t / 12)
noise = np.random.normal(0, 1.5, n)
y = trend + seasonality + noise
idx = pd.date_range("2019-01-01", periods=n, freq="MS")
series = pd.Series(y, index=idx, name="y")
print(series.head())
# 2019-01-01 10.34
# 2019-02-01 11.87
# 2019-03-01 12.95
# 2019-04-01 13.58
# 2019-05-01 14.23
Descomposición aditiva clásica (basada en promedios móviles)
from statsmodels.tsa.seasonal import seasonal_decompose
cl = seasonal_decompose(series, model="additive", period=12)
classical_df = pd.DataFrame({
"trend": cl.trend,
"seasonal": cl.seasonal,
"resid": cl.resid,
})
print(classical_df.head(14).round(3))
# trend seasonal resid
# 2019-01-01 NaN 0.454 NaN
# 2019-02-01 NaN -3.187 NaN
# 2019-03-01 NaN -0.884 NaN
# 2019-04-01 NaN 3.330 NaN
# 2019-05-01 NaN 4.014 NaN
# 2019-06-01 NaN 1.063 NaN
# 2019-07-01 11.089 -3.388 0.299
# 2019-08-01 11.239 -4.014 -0.225
# 2019-09-01 11.389 -1.063 -0.326
# 2019-10-01 11.539 3.330 -0.869
# 2019-11-01 11.689 0.884 0.427
# 2019-12-01 11.839 -0.454 0.615
# 2020-01-01 11.989 0.454 0.557
# 2020-02-01 12.139 -3.187 0.048
Las primeras y las últimas period/2 filas de la tendencia son NaN porque el método clásico utiliza una media móvil centrada de ancho 12 (por lo que necesita 6 observaciones a cada lado). La columna estacional está forzada a sumar cero a lo largo de un período y es exactamente periódica. El residuo es .
STL (basado en LOESS, robusto)
from statsmodels.tsa.seasonal import STL
stl = STL(series, period=12, robust=True).fit()
stl_df = pd.DataFrame({
"trend": stl.trend,
"seasonal": stl.seasonal,
"resid": stl.resid,
"robust_weight": stl.weights,
})
print(stl_df.head(14).round(3))
# trend seasonal resid robust_weight
# 2019-01-01 10.510 0.504 -0.671 1.0
# 2019-02-01 10.644 -3.137 0.363 1.0
# 2019-03-01 10.779 -0.884 0.905 1.0
# 2019-04-01 10.913 3.330 0.337 1.0
# 2019-05-01 11.047 4.014 0.169 1.0
# 2019-06-01 11.181 1.063 -0.244 1.0
# 2019-07-01 11.315 -3.388 -0.127 1.0
# 2019-08-01 11.449 -4.014 -0.435 1.0
# 2019-09-01 11.584 -1.063 -0.521 1.0
# 2019-10-01 11.718 3.330 -0.048 1.0
# 2019-11-01 11.852 0.884 -0.736 1.0
# 2019-12-01 11.986 -0.454 -0.532 1.0
# 2020-01-01 12.120 0.504 -0.124 1.0
# 2020-02-01 12.255 -3.137 -0.078 1.0
STL te proporciona un valor de tendencia en cada observación (sin bordes NaN), un patrón estacional suave y de variación lenta que no está restringido a ser perfectamente periódico, y un peso de robustez por observación que puedes usar para marcar valores atípicos. El precio que pagas: STL tiene más parámetros de ajuste (trend_window, seasonal_window) y los componentes no son tan claramente separables como en el caso clásico.
Prophet (tendencia lineal por tramos + estacionalidad de Fourier)
from prophet import Prophet
df = series.reset_index()
df.columns = ["ds", "y"]
m = Prophet(
yearly_seasonality=True,
weekly_seasonality=False,
daily_seasonality=False,
seasonality_mode="additive",
)
m.fit(df)
forecast = m.predict(df)
prophet_df = forecast[["ds", "trend", "yearly", "additive_terms", "components"]]
prophet_df = prophet_df.rename(columns={"yearly": "seasonal"})
print(prophet_df.head(14).round(3))
# ds trend seasonal additive_terms
# 0 2019-01-01 10.614 0.435 0.435
# 1 2019-02-01 10.764 -3.186 -3.186
# 2 2019-03-01 10.914 -0.885 -0.885
# 3 2019-04-01 11.064 3.329 3.329
# 4 2019-05-01 11.214 4.014 4.014
# 5 2019-06-01 11.364 1.063 1.063
# 6 2019-07-01 11.514 -3.387 -3.387
# 7 2019-08-01 11.664 -4.013 -4.013
# 8 2019-09-01 11.814 -1.063 -1.063
# 9 2019-10-01 11.964 3.329 3.329
# 10 2019-11-01 12.114 0.884 0.884
# 11 2019-12-01 12.264 -0.455 -0.455
# 12 2020-01-01 12.414 0.435 0.435
# 13 2020-02-01 12.564 -3.186 -3.186
Prophet ajusta una tendencia lineal por tramos con detección automática de puntos de cambio, más un término estacional de serie de Fourier. El “residual” es lo que sea que esté en y - trend - additive_terms. La gran ventaja de Prophet es que maneja de forma nativa múltiples estacionalidades (anual + semanal + diaria), días festivos y tendencias logísticas de saturación, pero los componentes que produce están optimizados para el pronóstico, no para ser descriptores estructurales limpios de tu serie.
Construcción de la serie sintética. La señal es 0.15 * t + 10 (una rampa lineal lenta de 10 a aproximadamente 19 durante 5 años) más un seno de amplitud de 4 unidades y periodo 12 (un ciclo por año en datos mensuales). El ruido es Normal(0, 1.5) — aproximadamente 1.5 unidades de fluctuación por observación, lo cual es pequeño en relación con la oscilación de 8 unidades del término estacional. freq="MS" es el inicio de mes, por lo que el índice son fechas de calendario limpias que requiere la columna ds de Prophet.
Descomposición clásica. seasonal_decompose(series, model="additive", period=12) hace dos cosas: estima el patrón estacional promediando cada posición del calendario en todos los ciclos (eliminando la tendencia primero mediante un promedio móvil centrado), luego lo resta y suaviza el resto para obtener la tendencia. El resultado tiene NaN en los bordes porque el promedio móvil necesita period/2 observaciones pasadas y futuras. No puedes extrapolar la tendencia fuera de la muestra sin escribir tu propio código; esta es una herramienta de descomposición, no de pronóstico.
STL. STL(series, period=12, robust=True).fit() utiliza LOESS tanto para la tendencia como para el suavizador estacional. Dos ventanas importan: trend_window (qué tan suave es la tendencia) y seasonal_window (cuánto se permite que el patrón estacional evolucione con el tiempo). robust=True reasigna los pesos de los valores atípicos en el residual para que no contaminen la tendencia. .weights devuelve el peso de robustez por observación; los valores mucho menores que 1 son valores atípicos a los que STL les redujo el peso.
Prophet. df = series.reset_index() y renombrar a ds / y es innegociable — Prophet espera exactamente esos nombres de columnas. yearly_seasonality=True habilita una serie de Fourier de 10 términos para el ciclo anual. El DataFrame de pronóstico tiene una columna trend, una columna yearly (la contribución estacional de Fourier), una columna additive_terms (la suma de todos los términos estacionales aditivos; aquí es igual a yearly), y una columna multiplicative_terms (cero en modo aditivo). El residual implícito es y - trend - additive_terms. Prophet es el único de los tres que puede producir un pronóstico más allá del final de los datos de entrenamiento sin que escribas código extra — esa es la razón principal por la que es tentador recurrir a él.
Lo que es igual en los tres. La tendencia es ~10 + 0.15*t (compara las tres columnas trend — están dentro de ~0.2 entre sí para fechas superpuestas). El patrón estacional es aproximadamente 4 * sin(2*pi*t/12) en los tres. El residual es pequeño (en su mayoría dentro de ±1 de cero). Los tres métodos coinciden en las señales; difieren en los bordes y en cuánto se permite que evolucione el patrón estacional.
Lo que es diferente. El método clásico te da un patrón estacional limpio y perfectamente periódico, y una tendencia de promedio móvil que tiene NaN en los bordes. STL te da una tendencia suave en todas partes y un patrón estacional que puede variar. Prophet te da una tendencia lineal por tramos con puntos de cambio y un patrón estacional de Fourier, además de la capacidad de pronosticar, añadir días festivos y apilar múltiples estacionalidades.
ACF / PACF / ADF en la misma serie
from statsmodels.tsa.stattools import acf, pacf, adfuller
acf_vals = acf(series, nlags=24)
pacf_vals = pacf(series, nlags=24, method="ywm")
print("lag acf pacf")
for k in range(6):
print(f"{k:3d} {acf_vals[k]:+.3f} {pacf_vals[k]:+.3f}")
# lag acf pacf
# 0 +1.000 +1.000
# 1 +0.872 +0.823
# 2 +0.738 +0.134
# 3 +0.598 -0.024
# 4 +0.453 -0.064
# 5 +0.311 -0.051
adf_stat, adf_p, *_ = adfuller(series)
print(f"ADF stat = {adf_stat:.3f}, p = {adf_p:.4f}")
# ADF stat = -1.234, p = 0.6602 -> not stationary (don't reject unit root)
diffed = series.diff().dropna()
_, p_diff, *_ = adfuller(diffed)
print(f"1st difference: p = {p_diff:.4f}")
# 1st difference: p = 0.0010 -> now stationary
La ACF decae lentamente desde 1 — la firma clásica de una serie no estacionaria con tendencia. Después de una diferenciación, el valor p del ADF cae de 0.66 a 0.001, por lo que dejaríamos de diferenciar y usaríamos en un modelo ARIMA.
Árbol de decisión: ¿es tu serie estacionaria y qué hacer al respecto?
Ejecuta la prueba ADF (o KPSS), luego observa la gráfica ACF y luego decide.
- ADF p < 0.05 y el ACF se corta rápidamente (o decae rápido)
- La serie es estacionaria. No diferencies.
- Ajusta un modelo ARMA / ARIMA con , o ajusta un modelo sobre la serie original.
- ADF p > 0.05 y el ACF decae muy lentamente (firma de tendencia lineal)
- La serie tiene una raíz unitaria o una tendencia lineal determinista.
- Dos opciones:
- Diferencia una vez. Es mejor cuando la tendencia es un paseo aleatorio con deriva, o cuando vas a ajustar un modelo ARIMA. La serie diferenciada es estacionaria, ajusta un modelo ARMA sobre ella, pronostica y luego “integra” hacia atrás. Costo: pierdes el nivel de largo plazo en el modelo y no puedes recuperar la deriva determinista sin términos de deriva.
- Modela la tendencia explícitamente. Es mejor cuando la tendencia es una función determinista limpia del tiempo (lineal, polinómica, lineal por tramos). Usa Prophet, o una regresión con
timecomo característica, otrend="additive"en una descomposición. Costo: extrapolar polinomios es peligroso; tienes que elegir una forma funcional.
- ADF p > 0.05 y el ACF tiene picos en múltiplos de (no estacionariedad estacional)
- Aplica una diferencia estacional además de (o en lugar de) la diferencia regular.
- Esto es lo que hace el término de SARIMA. Consulta ARIMA y SARIMA.
- La varianza crece con el nivel (multiplicativa)
- Aplica transformación logarítmica primero, y luego trátala como aditiva. Ejecuta ADF sobre
np.log(series)en lugar deseries.
- Aplica transformación logarítmica primero, y luego trátala como aditiva. Ejecuta ADF sobre
- ADF es límite (p ≈ 0.05) y no estás seguro
- Grafica la media móvil y la varianza móvil en una ventana de tamaño
period. Si alguna deriva visiblemente, diferencia. Si ambas se ven planas, no lo hagas. - Ejecuta también la prueba KPSS; KPSS tiene como hipótesis nula la estacionariedad, por lo que un valor p bajo en KPSS significa no estacionariedad. Contrastar ADF y KPSS es más confiable que usar cualquiera de los dos por separado.
- Grafica la media móvil y la varianza móvil en una ventana de tamaño
Cuándo diferenciar vs. cuándo modelar la tendencia explícitamente
- Diferenciar cuando:
- Vas a ajustar ARIMA / SARIMA — la diferenciación es literalmente lo que hacen los parámetros y .
- La tendencia es un paseo aleatorio estocástico (p. ej., precios de acciones, algunas señales de sensores). El nivel futuro es genuinamente desconocido; la diferenciación representa esto de manera honesta.
- Quieres pronosticar el cambio y luego integrar, no el nivel directamente.
- Modelar la tendencia explícitamente cuando:
- La tendencia tiene una forma determinística limpia (lineal, lineal por partes, logística de saturación) y confías en que continuará.
- Quieres componentes interpretables (“la tendencia está creciendo 0.15/mes”) en lugar de un modelo diferenciado de caja negra.
- Estás usando Prophet, que ajusta la tendencia de esta manera por diseño.
- Estás usando modelos de ML (XGBoost, LightGBM) y quieres pasarles
timeytime^2como características en lugar de diferenciar y eliminar la estructura de la que necesitan aprender.
- Híbrido (a menudo el mejor):
- Elimina la tendencia con una regresión sobre
time, luego diferencia los residuos si todavía muestran autocorrelación. - O ajusta Prophet, toma el residual, ajusta un ARIMA sobre el residual. Esto es lo que hace bien el modo
additivede Prophet + un ARIMA sobre el residual.
- Elimina la tendencia con una regresión sobre
Casos límite y errores comunes
- Usar descomposición multiplicativa sin comprobar la varianza. Si tu serie tiene una varianza aproximadamente constante pero un nivel creciente, la aditiva es la correcta y la multiplicativa inflará silenciosamente las oscilaciones estacionales en los últimos años. Grafica la desviación estándar móvil; si es plana, usa la aditiva.
- Confiar en el ADF en series cortas. El ADF tiene baja potencia; en series de menos de ~50 observaciones, rutinariamente no logra rechazar la hipótesis nula de raíz unitaria incluso cuando la serie es estacionaria. Siempre revisa también el gráfico de ACF.
- Diferenciar dos veces cuando una fue suficiente. La sobrediferenciación introduce una raíz unitaria de MA e inflará la varianza del pronóstico. Si
adfuller(series.diff().dropna())indica que es estacionaria, detente. - Olvidar que
seasonal_decomposeno puede extrapolar la tendencia. Produce una tendencia solo en las observaciones interiores; tienes que ajustar una regresión a la tendencia tú mismo si quieres proyectarla hacia adelante. - Comparar los componentes STL y clásicos como si fueran el mismo objeto. El
seasonalclásico es exactamente periódico y está forzado a sumar cero; elseasonalde STL puede evolucionar. No son intercambiables; no te sorprendas cuando discrepen en los bordes. - Configurar
periodincorrectamente.perioddebe ser el número de observaciones en un ciclo, no el ciclo en unidades humanas. Para datos mensuales con un ciclo anual es 12, para datos diarios con un ciclo semanal es 7, para datos por hora con un ciclo diario es 24. Errar en esto hace que el componente estacional parezca ruido. - Prophet sin ajustar
changepoint_prior_scale. El valor predeterminado a menudo subajusta la tendencia (muy pocos puntos de cambio) o la sobreajusta (demasiados). Grafica la tendencia ajustada contra los datos antes de confiar en los componentes. - Confluir estacionariedad con “sin tendencia”. La estacionariedad se refiere a la distribución conjunta, no solo a la media. Una serie con media constante pero cuya varianza se duplica a mitad de camino no es estacionaria, y la diferenciación no arreglará eso: necesitas una transformación estabilizadora de varianza (log, Box-Cox).
- Usar
method="ols"para PACF.statsmodelsusa OLS por defecto parapacf, lo que puede dar valores fuera de en muestras pequeñas; usamethod="ywm"(Yule-Walker) para obtener estimaciones estables. - Tratar el residual como “ruido” sin comprobarlo. Grafica el ACF del residual; si sigue autocorrelacionado, has subajustado. El residual debería verse como ruido blanco. Si tiene estructura, vuelve atrás y añade un término AR o un período estacional diferente.
Referencias cruzadas
- ARIMA y SARIMA — utiliza la maquinaria de estacionariedad y las reglas de decisión de ACF/PACF mencionadas anteriormente para elegir , , , , , .
- Prophet vs. modelos estadísticos — la comparación práctica que motiva la rama de “modelar la tendencia explícitamente” del árbol de decisión.
- Pronóstico clásico vs. aprendizaje automático — cuándo gana el enfoque de descomposición estructural frente a cuándo ganan los modelos de árboles con ingeniería de características.
- Ingeniería de características para series temporales — utiliza lags, ventanas móviles y la estructura de autocorrelación descrita aquí para construir características de ML.
- Por qué tu pronóstico falla en Navidad — las partes estacionales y de días festivos de la descomposición, y qué se rompe cuando se tratan como una estacionalidad ordinaria.
- Validación cruzada para series temporales — cómo la división de tendencia/estacionalidad/residuo interactúa con un backtesting adecuado; el K-fold falla porque la tendencia se filtra hacia adelante.
- Cómo detectar y manejar la deriva de datos en producción — utiliza el componente residual y el monitoreo de estadísticas móviles para detectar la deriva.
Lecturas adicionales
- Box, G. E. P., & Jenkins, G. M. (1976). Time Series Analysis: Forecasting and Control. Holden-Day. — la referencia original de ARIMA; la fuente de la maquinaria de diferenciación / identificación de ARMA.
- Hyndman, R. J., & Athanasopoulos, G. Forecasting: Principles and Practice (3rd ed.), disponible en línea de forma gratuita en https://otexts.com/fpp3/ — el libro de texto práctico moderno; los capítulos 1-3 cubren tendencia, estacionalidad y descomposición; el capítulo 9 cubre ARIMA.
- Cleveland, R. B., Cleveland, W. S., McRae, J. E., & Terpenning, I. (1990). STL: A Seasonal-Trend Decomposition Procedure Based on LOESS. Journal of Official Statistics, 6(1), 3-73. — el artículo original de STL.
- Taylor, S. J., & Letham, B. (2018). Forecasting at Scale. The American Statistician, 72(1), 37-45. — el artículo de Prophet.
- Documentación de
statsmodels:seasonal_decompose,STL,adfuller,acf/pacf. - Documentación de Prophet — especialmente las secciones sobre pronósticos saturados y puntos de cambio.
- Competencia de Kaggle: M5 Forecasting - Uncertainty — ventas minoristas de Walmart con fuerte tendencia + múltiples estacionalidades + efectos de días festivos; un buen campo de pruebas para las opciones de descomposición en esta referencia.
Esta traducción fue generada automáticamente y puede contener errores. Si el idioma inglés es tu preferencia, puedes leer el artículo original en inglés .
Artículos relacionados
- Series Temporales En revisión
Prophet vs. Modelos Estadísticos: Un Enfrentamiento Práctico de Pronósticos
Compara Prophet y ARIMA cara a cara en series de tiempo reales y desordenadas con quiebres estructurales, feriados y múltiples estacionalidades para elegir el modelo correcto.
- Series Temporales En revisión
Pronóstico clásico vs. Machine Learning: ¿Cuándo ARIMA supera a una LSTM?
Aprende por qué ARIMA suele superar a LSTM en pequeños conjuntos de datos de series de tiempo, cuándo usar pronóstico clásico frente a redes neuronales y cómo evitar el sesgo de ajuste en las comparaciones.
- Series Temporales En revisión
Por qué tu pronóstico falla en Navidad: Manejo de múltiples estacionalidades y picos navideños
Aprende a modelar estacionalidades superpuestas y el efecto halo navideño en Prophet con series de Fourier y el ajuste de la escala previa para que tus pronósticos sobrevivan al auge de la Navidad.
- Estadística En revisión
Referencia: Prueba de hipótesis
Una referencia completa sobre la prueba de hipótesis: valores p, tipos de error, potencia, correcciones para comparaciones múltiples y cómo elegir la prueba adecuada con ejemplos en Python.
¿Buscas otra cosa?
Busca en todos los artículos por título, resumen o tema.