Saltar al contenido
Métodos de Econometría Aplicada con Python

Modelos de series de tiempo: enfoque de Box-Jenkins y modelos ARIMA en Python.

Introducción

La econometría es una disciplina que se dedica a la aplicación de métodos estadísticos para el análisis de datos económicos. Los modelos de series de tiempo son una herramienta fundamental en la econometría aplicada, y se utilizan ampliamente para el análisis y la predicción de variables económicas como el PIB, la inflación, las tasas de interés, entre otras.

El enfoque de Box-Jenkins es una metodología desarrollada por George Box y Gwilym Jenkins en los años setenta que permite identificar, estimar y diagnosticar modelos de series de tiempo adecuados para la descripción de un proceso estocástico. Este enfoque se compone de tres etapas fundamentales: identificación, estimación y diagnóstico de modelos.

El modelo ARIMA es uno de los modelos más utilizados en el enfoque de Box-Jenkins. Se compone de tres componentes: autoregresión (AR), media móvil (MA) y diferenciación (I). El modelo ARIMA se utiliza comúnmente para el modelado y la predicción de series de tiempo estacionarias.

En este curso, se utilizará Python como lenguaje de programación para el análisis y la modelación de series de tiempo. Se presentarán los fundamentos teóricos del enfoque de Box-Jenkins y de los modelos ARIMA, y se aplicarán estos conceptos utilizando ejemplos de datos económicos reales.

Resumen

Los modelos de series de tiempo son ampliamente utilizados en la econometría aplicada para analizar y predecir datos secuenciales a lo largo del tiempo. El enfoque de Box-Jenkins es una metodología para el análisis y modelización de series de tiempo.

Este enfoque se basa en un proceso iterativo de tres etapas: identificación, estimación y diagnóstico del modelo. En la etapa de identificación, se utiliza la función de autocorrelación y autocorrelación parcial para seleccionar la especificación adecuada del modelo autoregresivo (AR), el modelo de media móvil (MA) o el modelo autoregresivo integrado de media móvil (ARIMA).

En la etapa de estimación, se utilizan algoritmos de máxima verosimilitud o mínimos cuadrados ordinarios para estimar los parámetros del modelo seleccionado en la etapa anterior. Por último, en la etapa de diagnóstico, se realizan comprobaciones estadísticas y gráficas para determinar si el modelo ajustado es adecuado.

Una de las formas de implementar los modelos ARIMA en python es mediante el uso de la librería `statsmodels`. Esta librería proporciona una implementación completa para modelización de series de tiempo y análisis estadístico. En particular, cuenta con la clase `ARIMA` que permite ajustar y pronosticar modelos ARIMA a partir de datos de serie de tiempo.

El primer paso para modelar una serie de tiempo con `statsmodels` es importar las librerías necesarias y cargar los datos en un objeto `Series` de pandas. A continuación, se debe seleccionar la especificación del modelo ARIMA utilizando la función `auto_arima`, que implementa el método de Box-Jenkins para la selección automática de hiperparámetros del modelo.

Una vez que se ha seleccionado la especificación del modelo, se puede ajustar el modelo a los datos mediante la función `fit` de la clase `ARIMA`. A partir del modelo ajustado, se pueden realizar pronósticos para un número determinado de periodos futuros utilizando la función `forecast`.

En resumen, los modelos de series de tiempo son una herramienta valiosa para el análisis y predicción de datos secuenciales a lo largo del tiempo. El enfoque de Box-Jenkins proporciona una metodología sistemática para la identificación, estimación y diagnóstico de modelos ARIMA, y la librería `statsmodels` en python proporciona una implementación completa para modelado de series de tiempo y análisis estadístico.

Aplicación teórica

Introducción al Enfoque de Box-Jenkins

El enfoque de Box-Jenkins es un método integral para el análisis y la modelización de series temporales. Desarrollado por George Box y Gwilym Jenkins en su influyente libro "Time Series Analysis: Forecasting and Control" (1970), este enfoque es fundamental para identificar, estimar y diagnosticar modelos estadísticos en datos de series temporales. A continuación, se presenta una introducción detallada al enfoque de Box-Jenkins, que incluye su metodología y conceptos clave.

Conceptos Básicos

El enfoque de Box-Jenkins se basa en el análisis de series temporales, que son datos ordenados cronológicamente. La metodología se centra en modelos autorregresivos integrados de medias móviles (ARIMA), y en su extensión, los modelos SARIMA (ARIMA estacional). Los modelos ARIMA se utilizan para modelar y predecir datos que exhiben patrones a lo largo del tiempo, considerando tanto la estructura de autocorrelación como la variabilidad estacional.

Pasos del Enfoque de Box-Jenkins

El enfoque de Box-Jenkins se divide en tres etapas principales: identificación, estimación y diagnóstico.

Identificación:
   - Análisis de la Serie Temporal: Examinar la serie temporal para detectar patrones, tendencias y estacionalidades. Esto incluye gráficos de la serie temporal, análisis de autocorrelación (ACF) y autocorrelación parcial (PACF).
   - Transformación: Si la serie temporal no es estacionaria (es decir, sus propiedades estadísticas cambian con el tiempo), se puede aplicar una transformación como la diferenciación para lograr la estacionariedad.
   - Selección del Modelo: Basado en el análisis ACF y PACF, seleccionar un modelo candidato. Los modelos comunes son AR (Autorregresivo), MA (Media Móvil) y ARMA (Autorregresivo de Media Móvil). Si la serie muestra estacionalidad, se utilizarán modelos ARIMA estacionales.

Estimación:
   - Ajuste del Modelo: Utilizar métodos estadísticos para estimar los parámetros del modelo seleccionado. El método de máxima verosimilitud es comúnmente usado para estimar los parámetros de un modelo ARIMA.
   - Verificación de Supuestos: Asegurar que los supuestos del modelo se cumplen. Estos supuestos incluyen la normalidad de los errores y la independencia de los residuos.

Diagnóstico:
   - Evaluación del Modelo: Comprobar la adecuación del modelo ajustado a los datos. Esto incluye la revisión de los residuos para verificar si son ruido blanco (es decir, sin patrones sistemáticos).
   - Validación Cruzada: Validar el modelo usando datos no utilizados en el ajuste para evaluar su capacidad predictiva.
   - Ajustes y Refinamientos: Si el modelo no es adecuado, se pueden hacer ajustes, como la selección de un modelo diferente o la inclusión de variables adicionales.

Modelos ARIMA y SARIMA

- ARIMA (Autorregresivo Integrado de Media Móvil): Es el modelo básico del enfoque Box-Jenkins, que combina tres componentes:
  - AR (Autorregresivo): Representa la relación entre la serie temporal actual y sus valores pasados.
  - I (Integrado): Representa el número de diferenciaciones necesarias para hacer la serie estacionaria.
  - MA (Media Móvil): Representa la relación entre la serie temporal actual y los errores pasados.

  La forma general del modelo ARIMA se denota como ARIMA(p,d,q), donde \( p \) es el orden del componente autorregresivo, \( d \) es el grado de diferenciación, y \( q \) es el orden del componente de media móvil.

- SARIMA (ARIMA Estacional): Extiende el modelo ARIMA para manejar estacionalidades en la serie temporal. Incluye componentes estacionales adicionales:
  - SAR (Autorregresivo Estacional)
  - SMA (Media Móvil Estacional)
  - SI (Integrado Estacional)

  La forma general del modelo SARIMA se denota como SARIMA(p,d,q)(P,D,Q)_s, donde \( (P,D,Q) \) son los parámetros estacionales y \( s \) es el período estacional.

Aplicaciones y Usos

El enfoque Box-Jenkins es ampliamente utilizado en áreas como finanzas, economía, ingeniería y ciencias sociales para la predicción y el análisis de datos de series temporales. Se aplica en la modelización de ventas, demanda de productos, precios de activos financieros y muchos otros fenómenos que varían con el tiempo.

Conclusión

El enfoque de Box-Jenkins proporciona una metodología estructurada y rigurosa para el análisis de series temporales. Al seguir los pasos de identificación, estimación y diagnóstico, los analistas pueden construir modelos robustos que capturen la dinámica temporal de los datos y mejoren las predicciones. La capacidad de manejar tanto datos no estacionales como estacionales hace que el enfoque Box-Jenkins sea una herramienta valiosa en la estadística y la econometría.

 

Modelos ARIMA

Los modelos ARIMA (Autoregressive Integrated Moving Average) son una clase de modelos estadísticos ampliamente utilizados para el análisis y la predicción de series de tiempo. Su popularidad se debe a su capacidad para capturar diferentes estructuras de datos a lo largo del tiempo, como tendencias y estacionalidades. A continuación, profundizaremos en cada componente de un modelo ARIMA, sus ecuaciones, y cómo estos modelos se pueden aplicar en la práctica.

Descomposición del Modelo ARIMA

El modelo ARIMA se compone de tres partes:

1. AR (Autoregressive): Este componente utiliza la relación dependiente entre una observación y un cierto número de rezagos (valores anteriores) para explicar el comportamiento de la serie.

2. I (Integrated): Esta parte de la integración se refiere a la diferenciación de los datos para hacerlos estacionarios, es decir, eliminar cualquier tendencia o estacionalidad en los datos.

3. MA (Moving Average): El componente de media móvil modela el error del modelo como una combinación lineal de términos de error obtenidos en momentos pasados.

Un modelo ARIMA se denota como ARIMA(\(p, d, q\)), donde:

- \(p\) es el orden del componente AR,
- \(d\) es el orden de diferenciación necesaria para lograr la estacionariedad,
- \(q\) es el orden del componente MA.

Componentes del Modelo

Componente Autoregresivo (AR)

El modelo autoregresivo de orden \(p\) se expresa como:

\[
y_t = c + \phi_1 y_{t-1} + \phi_2 y_{t-2} + \ldots + \phi_p y_{t-p} + \epsilon_t
\]

donde:
- \(y_t\) es el valor de la serie en el tiempo \(t\),
- \(c\) es una constante,
- \(\phi_1, \phi_2, \ldots, \phi_p\) son los coeficientes del modelo,
- \(\epsilon_t\) es el error aleatorio en el tiempo \(t\).

Este componente sugiere que el valor actual de la serie es una función lineal de sus valores pasados.

Componente Integrado (I)

El componente integrado aborda la no estacionariedad en la serie. Para una serie no estacionaria, se calcula la diferencia entre valores consecutivos hasta que la serie se vuelva estacionaria. Por ejemplo, una diferencia de primer orden se define como:

\[
y_t' = y_t - y_{t-1}
\]

Aplicar una diferencia de orden \(d\) a la serie implica que se diferencie \(d\) veces.

### Componente de Media Móvil (MA)

El modelo de media móvil de orden \(q\) se define como:

\[
y_t = \mu + \epsilon_t + \theta_1 \epsilon_{t-1} + \theta_2 \epsilon_{t-2} + \ldots + \theta_q \epsilon_{t-q}
\]

donde:
- \(\mu\) es la media de la serie,
- \(\theta_1, \theta_2, \ldots, \theta_q\) son los coeficientes del modelo,
- \(\epsilon_t\) es el término de error en el tiempo \(t\).

Este modelo sugiere que el valor actual de la serie es una combinación lineal de los errores pasados.

Construcción del Modelo ARIMA

La construcción de un modelo ARIMA generalmente sigue los siguientes pasos:

1. Identificación: Se analizan los gráficos de la serie de tiempo, como la función de autocorrelación (ACF) y la función de autocorrelación parcial (PACF), para determinar los valores iniciales de \(p\), \(d\) y \(q\).

2. Estimación: Se utilizan técnicas de estimación, como el método de máxima verosimilitud, para estimar los parámetros del modelo.

3. Diagnóstico: Se verifica la adecuación del modelo mediante el análisis de los residuos y otras pruebas estadísticas.

4. Predicción: Una vez validado, el modelo se utiliza para realizar predicciones.

Aplicaciones y Consideraciones

Los modelos ARIMA son aplicables en diversas áreas, como finanzas, economía, producción, entre otros. Son útiles para predecir ventas, precios de acciones, demanda de productos y otras variables económicas.

Sin embargo, es importante considerar que los modelos ARIMA asumen que la serie de tiempo es lineal y que los errores son independientes y distribuidos normalmente, lo que puede no ser el caso en todas las situaciones. Además, determinar los valores apropiados de \(p\), \(d\) y \(q\) requiere un análisis cuidadoso de los datos y a veces pruebas y errores.

En conclusión, los modelos ARIMA son herramientas poderosas para el análisis de series de tiempo, permitiendo a los analistas capturar dinámicas complejas en los datos y realizar predicciones informadas.
 

Modelos GARCH

Los Modelos GARCH (Generalized Autoregressive Conditional Heteroskedasticity) son una extensión de los modelos ARCH (Autoregressive Conditional Heteroskedasticity), que fueron desarrollados para modelar la volatilidad en series temporales financieras. La principal característica de los modelos GARCH es que permiten que la varianza condicional dependa no solo de los errores pasados, sino también de las varianzas condicionales pasadas, lo que los hace especialmente útiles para capturar la persistencia en la volatilidad observada en los mercados financieros.

Introducción a los Modelos ARCH

Antes de profundizar en los modelos GARCH, es esencial entender el modelo ARCH, introducido por Robert Engle en 1982. Un modelo ARCH(\(p\)) se expresa como:

\[
y_t = \mu + \epsilon_t, \quad \epsilon_t = \sigma_t z_t, \quad z_t \sim N(0, 1)
\]

\[
\sigma_t^2 = \alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \alpha_2 \epsilon_{t-2}^2 + \dots + \alpha_p \epsilon_{t-p}^2
\]

Donde:
- \(y_t\) es el valor observado de la serie en el tiempo \(t\).
- \(\mu\) es la media condicional.
- \(\epsilon_t\) es el término de error o residuo, que sigue una distribución normal con media cero y varianza \(\sigma_t^2\).
- \(\sigma_t^2\) es la varianza condicional en el tiempo \(t\), que depende de los errores pasados \(\epsilon_{t-i}\).

El modelo ARCH captura la heterocedasticidad condicional, es decir, permite que la volatilidad cambie con el tiempo dependiendo de los errores pasados.

Extensión a los Modelos GARCH

Los modelos GARCH, propuestos por Bollerslev en 1986, generalizan los modelos ARCH al permitir que la varianza condicional dependa tanto de los errores pasados como de las varianzas condicionales pasadas. Un modelo GARCH(\(p, q\)) se define como:

\[
y_t = \mu + \epsilon_t, \quad \epsilon_t = \sigma_t z_t, \quad z_t \sim N(0, 1)
\]

\[
\sigma_t^2 = \alpha_0 + \sum_{i=1}^{q} \alpha_i \epsilon_{t-i}^2 + \sum_{j=1}^{p} \beta_j \sigma_{t-j}^2
\]

Donde:
- \(p\) es el orden de la componente GARCH, que refleja el número de varianzas pasadas incluidas en el modelo.
- \(q\) es el orden de la componente ARCH, que refleja el número de errores pasados considerados.
- \(\alpha_0\) es el término constante (a menudo positivo).
- \(\alpha_i\) son los coeficientes de los términos ARCH, que ponderan los errores pasados \(\epsilon_{t-i}^2\).
- \(\beta_j\) son los coeficientes de los términos GARCH, que ponderan las varianzas condicionales pasadas \(\sigma_{t-j}^2\).

Interpretación Económica

La interpretación de los coeficientes \(\alpha_i\) y \(\beta_j\) en un modelo GARCH es fundamental para entender la dinámica de la volatilidad. Un valor alto de \(\alpha_i\) sugiere que los shocks recientes (errores grandes en periodos anteriores) tienen un fuerte impacto en la volatilidad actual. Por otro lado, un valor alto de \(\beta_j\) indica que la volatilidad tiene una memoria larga, es decir, que persiste en el tiempo.

La suma \(\sum_{i=1}^{q} \alpha_i + \sum_{j=1}^{p} \beta_j\) también es crucial. Si esta suma es cercana a 1, indica que la volatilidad es altamente persistente, lo que es típico en muchas series financieras, como los rendimientos de acciones. Si la suma es menor que 1, la volatilidad es estacionaria y tiende a volver a un nivel medio a lo largo del tiempo.

Ejemplo de un Modelo GARCH(1,1)

El modelo GARCH más simple y ampliamente utilizado es el GARCH(1,1), que se expresa como:

\[
\sigma_t^2 = \alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2
\]

Este modelo considera que la varianza condicional actual \(\sigma_t^2\) depende de la varianza condicional del periodo anterior \(\sigma_{t-1}^2\) y del cuadrado del error del periodo anterior \(\epsilon_{t-1}^2\). 

Por ejemplo, si \(\alpha_0 = 0.1\), \(\alpha_1 = 0.2\) y \(\beta_1 = 0.7\), la ecuación se convierte en:

\[
\sigma_t^2 = 0.1 + 0.2 \epsilon_{t-1}^2 + 0.7 \sigma_{t-1}^2
\]

Estimación de los Parámetros

Los parámetros de un modelo GARCH se estiman generalmente mediante el método de máxima verosimilitud. Dado que los residuos \(\epsilon_t\) dependen de la varianza condicional \(\sigma_t^2\), y esta a su vez depende de los parámetros \(\alpha_i\) y \(\beta_j\), el proceso de estimación involucra maximizar la función de verosimilitud conjunta de los errores normalizados \(z_t\).

 Aplicaciones de los Modelos GARCH

Los modelos GARCH se utilizan ampliamente en finanzas para modelar la volatilidad de activos financieros, como acciones, bonos y tipos de cambio. También son útiles para la gestión de riesgos, la valoración de opciones y otros instrumentos derivados, y en la predicción de la volatilidad futura.

Conclusión

Los modelos GARCH son herramientas poderosas para capturar y modelar la volatilidad en series temporales financieras. Su capacidad para incorporar tanto la heterocedasticidad condicional como la persistencia en la volatilidad los hace ideales para aplicaciones donde la volatilidad es una variable clave, como en el análisis de riesgos y la valoración de activos financieros.

Aplicación práctica

Un ejemplo práctico de cómo utilizar el enfoque de Box-Jenkins y modelos ARIMA en Python: Primero, importamos las librerías necesarias:


import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import statsmodels.api as sm 

Luego, cargamos los datos de una serie de tiempo de ejemplo y visualizamos su gráfico:


data = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv')
date_rng = pd.date_range(start='1/1/1991', end='1/1/2004', freq='M')
data['date'] = date_rng data.set_index('date', inplace=True)
data.dropna(inplace=True) plt.plot(data) 

A continuación, identificamos los parámetros para el modelo ARIMA utilizando la biblioteca `pmdarima`:


from pmdarima import auto_arima 
stepwise_model = auto_arima(data, start_p=1, start_q=1,max_p=3, max_q=3, m=12, start_P=0, seasonal=True, d=None, D=1, trace=True, error_action='ignore', suppress_warnings=True, stepwise=True) 
stepwise_model.summary()

Finalmente, ajustamos el modelo y hacemos predicciones:


train = data.loc['1991-01-01':'2002-01-01'] 
test = data.loc['2002-01-01':] 
stepwise_model.fit(train) 
future_forecast = stepwise_model.predict(n_periods=len(test)) 
test['Prediction'] = future_forecast 
plt.plot(train) 
plt.plot(test[['A10', 'Prediction']])