Tiempedia: Modelos SARIMA y Órdenes Estacionales

Tiempedia: Modelos SARIMA y Órdenes Estacionales

Guía del artículo

  1. Modelos SARIMA
  2. Estimación y pronóstico
  3. Ejemplo Python
  4. Aplicaciones



Nuestro viaje a través del emocionante mundo de las series de tiempo ha sido una odisea de aprendizaje continuo. Desde los conceptos iniciales hasta los modelos de suavizamiento exponencial, desde los modelos autoregresivos (AR) hasta las combinaciones de AR y media móvil (ARMA), y desde los modelos ARIMA hasta la selección de órdenes, cada parte previa nos ha llevado un paso más cerca de la maestría en el análisis y predicción de series temporales.

En esta octava entrega, nos adentraremos en un terreno crucial: los "Modelos SARIMA" (Seasonal ARIMA). Estos modelos son especialmente efectivos para comprender y predecir series de tiempo con componentes estacionales. Además, abordaremos otro desafío importante en el análisis de series temporales: la selección de órdenes estacionales (P, D, Q) y órdenes no estacionales (p, d, q) para optimizar nuestros modelos.

Antes de sumergirnos en los Modelos SARIMA y las complejidades de la selección de órdenes, recordemos todo lo que hemos aprendido en "Tiempedia". Cada parte previa ha contribuido a construir una base sólida para comprender mejor este tema crucial.

En esta parte, exploraremos la formulación de los Modelos SARIMA, cómo se ajustan a los datos y cómo seleccionar las órdenes adecuadas para capturar las estacionalidades en nuestras series temporales. Al dominar estos conceptos, estaremos mejor preparados para enfrentar la variabilidad estacional en una amplia gama de datos.

Sin más demora, adentrémonos en el mundo de los Modelos SARIMA y las órdenes estacionales, y descubramos cómo pueden mejorar nuestra capacidad para comprender y predecir eventos temporales.



1. Modelos SARMA

El modelo SARMA, que significa "Seasonal Autoregressive Moving Average," es una extensión del modelo ARMA (Autoregressive Moving Average) que incluye componentes tanto estacionales como no estacionales para modelar series de tiempo con patrones de estacionalidad.

Aquí está la descripción y formulación del modelo SARMA:

Componente Autoregresivo Estacional (SAR):

  • El componente SAR se refiere a la parte autoregresiva estacional del modelo.
  • Representa la relación entre las observaciones pasadas en la misma serie de tiempo, pero con un retraso estacional.
  • El término SAR(p) se refiere a la parte autoregresiva estacional con un orden de estacionalidad p.

La fórmula general del componente SAR es: Xt=ϕ1Xtp+ϕ2Xt−2p+…+ϕpXtp∗+at

Donde:

  • Xt es el valor en el tiempo t.
  • ϕ1,ϕ2,…,ϕp son los coeficientes autoregresivos estacionales.
  • p es el orden de estacionalidad.

Componente Media Móvil Estacional (SMA):

  • El componente SMA se refiere a la parte de media móvil estacional del modelo.
  • Representa la relación entre los errores pasados en la misma serie de tiempo, pero con un retraso estacional.
  • El término SMA(q) se refiere a la parte de media móvil estacional con un orden de estacionalidad q.

La fórmula general del componente SMA es: Xt=atθ1atpθ2at−2p−…−θqatq

Donde:

  • at son los errores en el tiempo t.
  • θ1,θ2,…,θq son los coeficientes de media móvil estacional.
  • q es el orden de estacionalidad.

Componente de Estacionalidad:

  • El componente de estacionalidad refleja el patrón estacional en los datos y es una característica clave del modelo SARMA.
  • Puede ser aditivo o multiplicativo, dependiendo de si el patrón estacional se suma o multiplica por las observaciones.

La fórmula general del componente de estacionalidad es: St=Stm

Donde:

  • St es el componente de estacionalidad en el tiempo t.
  • m es el número de períodos en una temporada.

Componente No Estacional (ARMA):

  • Además de los componentes estacionales, el modelo SARMA también puede incluir un componente ARMA no estacional para capturar la autocorrelación no estacional en los datos.
  • Este componente ARMA sigue la misma lógica que en el modelo ARMA estándar.

La fórmula general del componente ARMA no estacional es: Xt=ϕ1Xt−1+ϕ2Xt−2+…+ϕpXtp+atθ1at−1−θ2at−2−…−θqatq

Donde:

  • Xt es el valor en el tiempo t.
  • ϕ1,ϕ2,...,ϕp son los coeficientes autoregresivos no estacionales.
  • θ1,θ2,…,θq son los coeficientes de media móvil no estacionales.

El modelo SARMA se utiliza para modelar series de tiempo que exhiben patrones de estacionalidad tanto a corto plazo como a largo plazo. La elección de los órdenes p, q, P y Q (para los componentes no estacionales y estacionales) se basa en el análisis de autocorrelación y autocorrelación parcial de los datos, así como en la intuición y el conocimiento del dominio.


Selección de órdenes (p, d, q) y (P, D, Q)

La selección de los órdenes (p, d, q) y (P, D, Q) en un modelo SARIMA (Seasonal Autoregressive Integrated Moving Average) es uno de los pasos más importantes en el análisis de series de tiempo. Estos órdenes determinan cómo se modelarán los componentes estacionales y no estacionales de la serie de tiempo. Aquí hay un proceso general para seleccionar estos órdenes:


Paso 1: Identificación de la Diferenciación (d y D)

Primero, debes identificar los órdenes de diferenciación necesarios para hacer que la serie de tiempo sea estacionaria, tanto a nivel no estacional (d) como estacional (D). Esto implica aplicar diferenciaciones sucesivas hasta que la serie sea estacionaria. Utiliza pruebas estadísticas como la Prueba de Dickey-Fuller Aumentada (ADF) para evaluar la estacionariedad. Deja de diferenciar cuando la serie se vuelve estacionaria (p-value < 0.05) o cuando los gráficos de ACF y PACF de los datos diferenciados sugieran que ya no hay tendencias evidentes.


Paso 2: Identificación del Orden AR y MA (p, q, P, Q)

Una vez que la serie es estacionaria (o después de aplicar las diferenciaciones necesarias), observa los gráficos de autocorrelación (ACF) y autocorrelación parcial (PACF) tanto para los rezagos no estacionales como estacionales. Estos gráficos te ayudarán a identificar los órdenes AR (p) y MA (q) para los componentes no estacionales, así como los órdenes AR estacionales (P) y MA estacionales (Q) para los componentes estacionales.

Componente No Estacional (p, q):

  • Los picos significativos en los gráficos ACF y PACF no estacionales pueden sugerir los órdenes p y q. Por ejemplo, un pico significativo en el gráfico PACF a rezago p sugiere un término AR(p), y un pico significativo en el gráfico ACF a rezago q sugiere un término MA(q).

Componente Estacional (P, Q):

  • Los picos significativos en los gráficos ACF y PACF estacionales pueden sugerir los órdenes P y Q para los componentes estacionales.


Paso 3: Ajuste y Evaluación de Modelos

Ajusta varios modelos SARIMA utilizando diferentes combinaciones de órdenes (p, d, q) y (P, D, Q) que hayas identificado en el Paso 2. Evalúa la calidad de estos modelos utilizando métricas de evaluación como el Error Cuadrático Medio (RMSE), el Error Absoluto Medio (MAE) y el Error Absoluto Porcentual Medio (MAPE) en un conjunto de datos de prueba. También puedes considerar utilizar criterios de información como el AIC (Criterio de Información de Akaike) o el BIC (Criterio de Información Bayesiano) para seleccionar el mejor modelo.


Paso 4: Selección del Mejor Modelo

Selecciona el modelo SARIMA que tenga el mejor rendimiento en función de las métricas de evaluación y otros criterios relevantes. Este será tu modelo SARIMA final.


Es importante destacar que la selección de órdenes (p, d, q) y (P, D, Q) puede requerir experimentación y ajustes iterativos. También es útil considerar el conocimiento del dominio y la intuición sobre el comportamiento de los datos al seleccionar los órdenes. Además, las bibliotecas de software como statsmodels en Python suelen ofrecer funciones que realizan la selección automática de órdenes basándose en criterios como el AIC o el BIC. Estas funciones pueden ser útiles como punto de partida en la selección de órdenes adecuados.



2. Estimación y pronóstico

Una vez que hayas seleccionado los órdenes adecuados (p, d, q) y (P, D, Q) para tu modelo SARIMA y hayas ajustado el modelo a tus datos, puedes proceder a realizar estimaciones y pronósticos. Aquí tienes los pasos para estimar y pronosticar con un modelo SARIMA en Python utilizando la biblioteca statsmodels:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX

# Cargar tus datos de serie de tiempo (reemplaza esto con tus datos)
# ts es tu serie de tiempo, asegúrate de tener tus datos y fechas correctamente.
# Aquí asumimos que ya tienes un DataFrame llamado 'ts'.
# ts.index debe ser de tipo datetime.
# Por ejemplo, puedes cargar tus datos desde un archivo CSV: ts = pd.read_csv('datos.csv', parse_dates=['Fecha'], index_col='Fecha')

# Ajustar el modelo SARIMA con los órdenes (p, d, q) y (P, D, Q) seleccionados
order = (p, d, q)  # Órdenes no estacionales
seasonal_order = (P, D, Q, m)  # Órdenes estacionales (m es el número de períodos por temporada)
model = SARIMAX(ts, order=order, seasonal_order=seasonal_order)
results = model.fit()

# Estimaciones (ajustar el modelo a los datos existentes)
estimated = results.fittedvalues

# Pronósticos (pronosticar valores futuros)
n_forecast = 12  # Número de períodos a pronosticar
forecast = results.get_forecast(steps=n_forecast)

# Obtener intervalos de confianza para los pronósticos
forecast_ci = forecast.conf_int()

# Visualizar los datos originales, las estimaciones y los pronósticos
plt.figure(figsize=(12, 6))
plt.plot(ts, label='Datos Originales')
plt.plot(estimated, label='Estimaciones', color='orange')
plt.plot(forecast.predicted_mean, label='Pronósticos', color='green')
plt.fill_between(forecast_ci.index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], color='pink', alpha=0.3, label='Intervalo de Confianza')
plt.title('Modelo SARIMA: Estimaciones y Pronósticos')
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.legend()
plt.show()        

Asegúrate de reemplazar (p, d, q), (P, D, Q, m), y ts con los valores apropiados para tu modelo SARIMA y tus datos de serie de tiempo. Este código ajusta el modelo SARIMA a tus datos, realiza estimaciones y pronósticos, y muestra un gráfico que incluye los datos originales, las estimaciones y los pronósticos, junto con un intervalo de confianza.

Recuerda que la calidad de los pronósticos depende en gran medida de la elección adecuada de los órdenes (p, d, q) y (P, D, Q), así como de la calidad de tus datos y de la validez de las suposiciones del modelo SARIMA en relación con tu serie de tiempo específica.



3. Ejemplo Python

Aquí tienes un ejemplo en Python de cómo ajustar un modelo SARIMA (Seasonal Autoregressive Integrated Moving Average) a una serie de tiempo y realizar pronósticos utilizando la biblioteca statsmodels. En este ejemplo, utilizaremos una serie de tiempo sintética para fines ilustrativos:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX

# Crear una serie de tiempo sintética (reemplaza esto con tus datos)
np.random.seed(42)
date_rng = pd.date_range(start='2023-01-01', end='2023-12-31', freq='D')
ts = pd.Series(np.random.randn(len(date_rng)), index=date_rng)

# Ajustar el modelo SARIMA
order = (1, 1, 1)  # Órdenes no estacionales (p, d, q)
seasonal_order = (1, 1, 1, 7)  # Órdenes estacionales (P, D, Q, m), aquí m=7 para datos diarios
model = SARIMAX(ts, order=order, seasonal_order=seasonal_order)
results = model.fit()

# Pronosticar valores futuros
n_forecast = 30  # Número de días a pronosticar
forecast = results.get_forecast(steps=n_forecast)

# Obtener intervalos de confianza para los pronósticos
forecast_ci = forecast.conf_int()

# Visualizar los datos originales y los pronósticos
plt.figure(figsize=(12, 6))
plt.plot(ts, label='Datos Originales')
plt.plot(forecast.predicted_mean, label='Pronósticos', color='green')
plt.fill_between(forecast_ci.index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], color='pink', alpha=0.3, label='Intervalo de Confianza')
plt.title('Modelo SARIMA: Pronósticos')
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.legend()
plt.show()        

En este ejemplo:

  1. Creamos una serie de tiempo sintética (ts) para simular datos de una serie de tiempo.
  2. Ajustamos un modelo SARIMA con órdenes no estacionales (1, 1, 1) y órdenes estacionales (1, 1, 1, 7) para datos diarios con un período estacional semanal.
  3. Pronosticamos los valores futuros para los próximos 30 días.
  4. Calculamos el intervalo de confianza de los pronósticos.
  5. Visualizamos los datos originales y los pronósticos, incluyendo el intervalo de confianza.


Recuerda que en una aplicación real, debes reemplazar la serie de tiempo sintética con tus propios datos y ajustar los órdenes SARIMA según las características de tu serie de tiempo. Además, ten en cuenta que la calidad de los pronósticos depende de la elección adecuada de los órdenes y de la validez de las suposiciones del modelo SARIMA en relación con tus datos.



4. Aplicaciones

Los modelos SARIMA (Seasonal Autoregressive Integrated Moving Average) son ampliamente utilizados en una variedad de aplicaciones de análisis de series de tiempo debido a su capacidad para capturar patrones estacionales y tendencias en los datos. Aquí hay algunas aplicaciones comunes de los modelos SARIMA:

  1. Predicción de Ventas: Las empresas utilizan modelos SARIMA para predecir las ventas futuras de productos y ajustar sus estrategias de inventario y marketing en consecuencia.
  2. Predicción de Demanda: En la industria minorista y de logística, los modelos SARIMA se utilizan para pronosticar la demanda de productos y optimizar la gestión de inventario y la cadena de suministro.
  3. Finanzas y Mercados: Los modelos SARIMA se aplican en la predicción de precios de acciones, tasas de interés y otros indicadores financieros, lo que ayuda a los inversores y analistas en la toma de decisiones.
  4. Climatología y Meteorología: Los datos climáticos y meteorológicos a menudo exhiben patrones estacionales. Los modelos SARIMA se utilizan para pronosticar temperaturas, precipitaciones y otros fenómenos climáticos.
  5. Economía: Los economistas utilizan modelos SARIMA para pronosticar variables económicas como el PIB, la inflación y el desempleo.
  6. Tráfico y Transporte: Los modelos SARIMA se aplican en la predicción de tráfico en carreteras, demanda de transporte público y programación de vuelos.
  7. Salud Pública: Se pueden utilizar modelos SARIMA para predecir brotes de enfermedades infecciosas y gestionar recursos en la atención médica.
  8. Consumo de Energía: Las empresas de servicios públicos emplean modelos SARIMA para prever la demanda de energía eléctrica y gestionar la generación y distribución de energía.
  9. Ventas de Comercio Electrónico: Las empresas en línea utilizan modelos SARIMA para pronosticar las ventas en línea y optimizar la disponibilidad de productos.
  10. Análisis de Volumen de Datos: En el análisis de grandes volúmenes de datos, los modelos SARIMA pueden ayudar a identificar patrones de estacionalidad y tendencias en datos temporales.
  11. Planificación de Recursos Humanos: Los departamentos de recursos humanos pueden utilizar modelos SARIMA para pronosticar la demanda de personal y programar turnos de trabajo.


Estos son solo algunos ejemplos de las numerosas aplicaciones de los modelos SARIMA en diversos sectores. Los modelos SARIMA son especialmente útiles cuando se trata de datos temporales que exhiben patrones estacionales y tendencias que pueden ser difíciles de capturar con otros enfoques.





Espero que este artículo te haya sido interesante y te sirva para aclarar algunas dudas. si te quedó alguna duda me puedes contactar o dejarla en los comentarios. Si tienes alguna opinión también déjala en los comentarios.

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas