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

Análisis de cointegración y corrección del error de series de tiempo en Python.

Introducción

Análisis de Cointegración y Corrección del Error en Series Temporales

El análisis de cointegración y corrección del error en series temporales es una técnica fundamental en econometría aplicada, diseñada para modelar las relaciones de largo plazo entre dos o más variables económicas a lo largo del tiempo. A diferencia del análisis de corto plazo que puede estar influenciado por factores temporales, esta técnica se centra en identificar y medir la relación de equilibrio a largo plazo entre las variables.

Conceptos Clave:

  1. Cointegración: Es un concepto que implica que dos o más series temporales están integradas de manera tal que una combinación lineal de ellas tiene un orden de integración menor o igual al máximo orden de integración de las series individuales. Esto sugiere que, aunque las series puedan tener tendencias individuales, existe una relación de largo plazo que las mantiene vinculadas.

  2. Corrección del Error: Se refiere al ajuste que se produce en el corto plazo cuando una variable se aleja temporalmente de su relación de equilibrio de largo plazo. Este ajuste implica que cualquier desviación de la relación de equilibrio será corregida con el tiempo.

Aplicación en Python:

En el contexto de un curso que utiliza Python para implementar estas técnicas, se explorarán varias herramientas y métodos:

  • Modelos de Corrección de Error (VEC): Se implementan para capturar las dinámicas de ajuste a largo plazo entre las variables mediante la inclusión de términos de corrección de error en un modelo VAR.

  • Pruebas de Raíz Unitaria: Son utilizadas para verificar la estacionariedad de las series y determinar si la cointegración es aplicable.

  • Análisis de Relación Lineal y No Lineal: Se exploran técnicas para modelar la relación entre las variables económicas, no solo en términos lineales sino también considerando posibles relaciones no lineales.

Beneficios del Curso:

  • Proporciona una comprensión profunda de cómo modelar relaciones económicas de largo plazo utilizando herramientas avanzadas de econometría.
  • Enseña habilidades prácticas en programación Python para implementar y analizar estos modelos en datos reales.
  • Prepara a los estudiantes para realizar análisis sofisticados que son relevantes en economía, finanzas, y otras disciplinas que involucran series temporales.

En resumen, el análisis de cointegración y corrección del error de series temporales es crucial para entender las relaciones económicas a largo plazo. Utilizando Python, los estudiantes podrán no solo comprender estos conceptos teóricos, sino también aplicarlos de manera práctica en estudios y análisis de datos económicos reales.

Resumen

Análisis de Cointegración en Econometría

La cointegración es una técnica que se utiliza en econometría para analizar la relación a largo plazo entre dos o más series de tiempo. Se usa para determinar si dos o más variables están relacionadas entre sí y si esa relación es duradera o no. En otras palabras, si dos o más variables se mueven juntas a lo largo del tiempo y si hay una relación estable entre ellas.

Para realizar el análisis de cointegración en Python, se puede utilizar la biblioteca statsmodels. Primero, es necesario importar la biblioteca con el siguiente comando:

import statsmodels.tsa.stattools as ts

Luego, se puede utilizar la función coint para realizar el análisis de cointegración y corregir los errores de series de tiempo. La sintaxis de la función es la siguiente:

coint(x, y)

Donde x y y son las dos series de tiempo que se van a analizar. La función devuelve cuatro valores: el estadístico de prueba, el valor p, los valores críticos y los residuos. El valor p es una medida de la significancia estadística de la prueba de cointegración. Si el valor p es menor que 0.05, se puede rechazar la hipótesis nula de que no hay cointegración entre las dos series de tiempo.

Modelos de Corrección de Errores (VECM)

Una vez que se ha determinado que existe una relación de cointegración, se puede aplicar la corrección de errores utilizando Modelos de Corrección de Errores (VEC, por sus siglas en inglés). Para implementar esta técnica en Python, se puede utilizar la función vecm.VECM de la biblioteca statsmodels. La sintaxis de la función es la siguiente:

vecm_model = vecm.VECM(data, k, deterministic='co')
result = vecm_model.fit()

Donde data es una matriz que contiene las dos series de tiempo, k es el número máximo de retrasos que se utilizarán en el modelo y deterministic es la opción para especificar si se utiliza una tendencia determinista en el modelo. El resultado de esta función es un objeto que contiene información sobre el modelo ajustado y los residuos corregidos. Se puede utilizar este objeto para hacer predicciones futuras y analizar la relación a largo plazo entre las dos series de tiempo.

Aplicación teórica

Fundamentos del Análisis de Cointegración

El análisis de cointegración es una herramienta crucial en econometría, orientada a examinar las relaciones a largo plazo entre variables no estacionarias. La idea central es que, aunque las series temporales individuales puedan no ser estacionarias, sus combinaciones lineales pueden serlo, lo que sugiere una relación estable en el tiempo.

Para comenzar, es fundamental entender la estacionariedad. Una serie temporal se considera estacionaria si sus propiedades estadísticas, como la media y la varianza, no cambian con el tiempo. Las series que muestran tendencias o patrones cambiantes suelen ser no estacionarias. Matemáticamente, una serie temporal no estacionaria puede representarse con la siguiente ecuación:

\[ Y_t = \mu + \phi Y_{t-1} + \epsilon_t \]

Aquí, \(Y_t\) es el valor de la serie en el tiempo \(t\), \(\mu\) es una constante, \(\phi\) es el coeficiente de autorregresión, y \(\epsilon_t\) es el término de error. Una serie es no estacionaria si \(\phi = 1\), lo que indica la presencia de una raíz unitaria.

La cointegración se define cuando dos o más series temporales no estacionarias tienen una combinación lineal que es estacionaria. Es decir, si \(Y_t\) y \(X_t\) son no estacionarias en nivel, pero se vuelven estacionarias después de aplicar \(d\) diferencias, y si existe una combinación lineal \(\alpha Y_t + \beta X_t\) que resulta en una serie estacionaria, entonces las series están cointegradas.

Para verificar la no estacionariedad, se utilizan pruebas de raíz unitaria como el Test de Dickey-Fuller Aumentado (ADF). La ecuación del Test ADF es:

\[ \Delta Y_t = \alpha + \beta t + \gamma Y_{t-1} + \sum_{i=1}^p \delta_i \Delta Y_{t-i} + \epsilon_t \]

En esta ecuación, \(\Delta\) representa el operador de diferencia, \(\alpha\) es una constante, \(\beta t\) es un término de tendencia temporal, y \(\gamma\) es el coeficiente asociado al término de la raíz unitaria. El objetivo es determinar si \(\gamma\) es significativamente diferente de cero. Si \(\gamma\) es cero, la serie tiene una raíz unitaria y es no estacionaria.

El método de Johansen se utiliza para probar la cointegración cuando se confirma que las series son no estacionarias. Este método permite identificar el número de relaciones de cointegración entre varias series. Se basa en el modelo vectorial autorregresivo (VAR) de orden \(p\):

\[ Y_t = \Pi_1 Y_{t-1} + \Pi_2 Y_{t-2} + \cdots + \Pi_p Y_{t-p} + \epsilon_t \]

En esta formulación, \(Y_t\) es un vector de series temporales y \(\Pi_i\) son matrices de coeficientes. La cointegración se analiza mediante los valores propios de la matriz \(\Pi\). Los estadísticos utilizados son el de traza y el de máximo valor propio:

- **Estadístico de Traza (Trace Statistic):**

\[ \text{Trace}(\lambda) = -T \sum_{i=r+1}^k \log(1 - \hat{\lambda}_i) \]

- **Estadístico de Máximo Valor Propio (Maximum Eigenvalue Statistic):**

\[ \text{Max}(\lambda) = -T \log(1 - \hat{\lambda}_{r+1}) \]

Aquí, \(T\) es el número de observaciones y \(\hat{\lambda}_i\) son los valores propios de la matriz \(\Pi\).

Cuando se identifica cointegración, se puede construir un modelo de corrección de errores (ECM) para capturar las relaciones a largo plazo entre las variables. La ecuación del modelo de corrección de errores es:

\[ \Delta Y_t = \alpha + \beta \Delta X_t + \gamma (Y_{t-1} - \theta X_{t-1}) + \epsilon_t \]

En este modelo, \(Y_{t-1} - \theta X_{t-1}\) es el término de corrección de errores, que refleja la desviación de la relación de largo plazo. Este enfoque permite analizar cómo las variables se ajustan para restablecer el equilibrio a largo plazo cuando se desvían de él.

El análisis de cointegración proporciona una metodología para comprender las relaciones estables entre variables económicas a lo largo del tiempo. Al identificar y modelar estas relaciones, los economistas pueden mejorar la precisión de las predicciones y la formulación de políticas basadas en datos temporales.

 

Modelos de Corrección del Error (ECM)

 

Los Modelos de Corrección del Error (ECM, por sus siglas en inglés) son una herramienta poderosa en econometría para modelar relaciones de largo plazo y cómo las variables se ajustan a esas relaciones a corto plazo. Estos modelos son útiles cuando se identifican relaciones de cointegración entre series temporales no estacionarias, ya que permiten capturar y analizar tanto las dinámicas de corto plazo como el equilibrio de largo plazo.

1. Concepto de ECM

El ECM se basa en la idea de que, aunque las series temporales puedan desviarse temporalmente de su equilibrio a largo plazo, la corrección de errores se produce cuando las variables se ajustan para restablecer dicho equilibrio. La idea es modelar la relación a largo plazo y permitir que las series temporales ajusten sus desviaciones a partir de ese equilibrio en el corto plazo.

2. Formulación del Modelo ECM

Considera dos series temporales, \( Y_t \) y \( X_t \), que están cointegradas. El modelo ECM se puede expresar de la siguiente manera:

\[ \Delta Y_t = \alpha + \beta \Delta X_t + \gamma (Y_{t-1} - \theta X_{t-1}) + \epsilon_t \]

En esta ecuación:

- \( \Delta Y_t \) y \( \Delta X_t \) son las primeras diferencias de \( Y_t \) y \( X_t \), respectivamente.
- \( \alpha \) es una constante.
- \( \beta \) mide el efecto a corto plazo de \( \Delta X_t \) sobre \( \Delta Y_t \).
- \( \gamma (Y_{t-1} - \theta X_{t-1}) \) es el término de corrección de errores, que representa la desviación de la relación de largo plazo. Aquí, \( Y_{t-1} - \theta X_{t-1} \) es el equilibrio a largo plazo y \(\gamma\) mide la velocidad con la que se ajustan las desviaciones.
- \( \epsilon_t \) es el término de error.

3. Interpretación de los Componentes del ECM

- Término de Corrección de Errores: \( Y_{t-1} - \theta X_{t-1} \) refleja el desequilibrio en el periodo anterior. Si el término de corrección de errores (\(\gamma\)) es negativo y significativo, indica que cuando hay una desviación del equilibrio a largo plazo, la serie se ajustará en la dirección opuesta para restaurar el equilibrio.
  
- Coeficiente \(\gamma\): La magnitud de \(\gamma\) indica la rapidez con que la serie temporal ajusta sus desviaciones del equilibrio. Un valor alto en magnitud de \(\gamma\) sugiere un rápido ajuste al equilibrio a largo plazo, mientras que un valor bajo sugiere un ajuste más lento.

4. Ejemplo de ECM en Práctica

Supongamos que queremos modelar la relación entre el consumo (\( C_t \)) y el ingreso (\( Y_t \)). Si hemos encontrado que \( C_t \) y \( Y_t \) están cointegrados, podemos usar un ECM para analizar cómo el consumo ajusta las desviaciones del equilibrio a largo plazo.

El modelo ECM podría ser:

\[ \Delta C_t = \alpha + \beta \Delta Y_t + \gamma (C_{t-1} - \theta Y_{t-1}) + \epsilon_t \]

En este caso:

- \(\Delta C_t\) es el cambio en el consumo.
- \(\Delta Y_t\) es el cambio en el ingreso.
- \(C_{t-1} - \theta Y_{t-1}\) es la desviación del equilibrio a largo plazo entre consumo e ingreso.
- \(\gamma\) mide cómo las desviaciones del equilibrio se ajustan en el corto plazo.

5. Estimación del ECM

La estimación del ECM se realiza generalmente en dos etapas:

1. Estimar la Relación de Largo Plazo: Primero, se estima la ecuación de cointegración entre \( Y_t \) y \( X_t \) para obtener el término de corrección de errores. Esto se puede hacer utilizando técnicas como el método de Mínimos Cuadrados Ordinarios (OLS) o el método de Johansen.

2.Estimar el Modelo ECM: Utilizando el término de corrección de errores obtenido en la primera etapa, se estima el modelo ECM para analizar cómo las series se ajustan a las desviaciones del equilibrio a largo plazo.

6. Implicaciones y Usos del ECM

Los ECM son útiles en diversas aplicaciones económicas y financieras, incluyendo:

- Política Monetaria: Evaluar cómo las tasas de interés y otras variables macroeconómicas se ajustan a las desviaciones del equilibrio a largo plazo.
- Modelización de la Demanda: Analizar cómo las variaciones en el ingreso afectan la demanda de bienes y servicios a corto plazo.
- Economía Financiera: Examinar cómo los precios de activos financieros se ajustan a su valor fundamental a largo plazo.

En resumen, los Modelos de Corrección del Error proporcionan una forma robusta de analizar y modelar las relaciones de largo plazo entre series temporales, capturando tanto el ajuste a corto plazo como el equilibrio a largo plazo. Esta metodología es esencial para obtener una comprensión más profunda de las dinámicas económicas y mejorar la precisión de las previsiones y la toma de decisiones.

 

Aplicaciones y Validación de Modelos de Cointegración y ECM

Los modelos de cointegración y de corrección del error (ECM) son herramientas fundamentales en la econometría para analizar relaciones de largo y corto plazo entre series temporales. A continuación, se detallan sus aplicaciones y los métodos de validación para asegurar la robustez y la fiabilidad de estos modelos.

1. Aplicaciones de los Modelos de Cointegración y ECM

1.1. Modelización de Relaciones Económicas a Largo Plazo
Los modelos de cointegración se utilizan para identificar y modelar relaciones de equilibrio a largo plazo entre variables económicas que, aunque no sean estacionarias en niveles, presentan una combinación lineal estacionaria. Por ejemplo, la relación entre el PIB y el consumo, o entre la tasa de interés y la inflación, pueden ser modeladas usando cointegración, indicando que a pesar de las fluctuaciones a corto plazo, existe un equilibrio a largo plazo.

1.2. Política Monetaria y Fiscal
En la política monetaria, los modelos de cointegración y ECM son empleados para analizar cómo variables como la oferta monetaria, las tasas de interés, y el tipo de cambio se ajustan en el corto plazo para mantener un equilibrio a largo plazo. De manera similar, en la política fiscal, estos modelos pueden ayudar a entender la relación entre ingresos y gastos públicos.

1.3. Finanzas
En el ámbito financiero, la cointegración se aplica en la modelización de precios de activos que están ligados por un equilibrio de largo plazo, como puede ser el caso de las acciones y sus opciones, o los precios de los futuros y los spot. Los modelos ECM permiten analizar cómo las diferencias entre precios actuales y de largo plazo afectan las decisiones de inversión a corto plazo.

1.4. Comercio Internacional
Los modelos de cointegración son útiles para estudiar las relaciones de largo plazo entre las exportaciones e importaciones de un país, así como entre el tipo de cambio y la balanza comercial. Estos modelos ayudan a entender cómo se ajustan las variables comerciales en el corto plazo ante choques externos, manteniendo un equilibrio a largo plazo.

2. Validación de Modelos de Cointegración y ECM

Para asegurar que los modelos de cointegración y ECM sean robustos y válidos, es esencial seguir una serie de pasos de validación rigurosos:

2.1. Prueba de Raíces Unitarias
Antes de aplicar un modelo de cointegración, es fundamental realizar pruebas de raíces unitarias, como la prueba de Dickey-Fuller aumentada (ADF), para verificar que las series temporales involucradas son no estacionarias en niveles, pero estacionarias en primeras diferencias.

2.2. Prueba de Cointegración
Una vez que se ha verificado la no estacionariedad de las series, se realiza una prueba de cointegración para determinar si existe una combinación lineal de las series que sea estacionaria. Entre las pruebas más comunes se encuentran la prueba de Engle-Granger (EG) y el test de cointegración de Johansen. Estas pruebas son cruciales para validar la existencia de una relación de equilibrio a largo plazo.

2.3. Estimación y Evaluación del ECM
Después de establecer la cointegración, se puede estimar el ECM. Es esencial evaluar la significancia de los coeficientes del ECM, especialmente del término de corrección de errores (\(\gamma\)). Este coeficiente debe ser estadísticamente significativo y de la magnitud esperada (normalmente negativo) para que el modelo tenga sentido económico.

2.4. Diagnóstico de Residuos
El análisis de los residuos del modelo es crucial para validar su adecuación. Se deben realizar pruebas de autocorrelación (como la prueba de Durbin-Watson), heterocedasticidad (prueba de Breusch-Pagan), y normalidad (prueba de Jarque-Bera) para asegurarse de que los residuos cumplen con las suposiciones necesarias para un modelo bien especificado.

2.5. Análisis de Estabilidad
La estabilidad de los coeficientes del modelo a lo largo del tiempo se puede evaluar utilizando pruebas como el test de CUSUM y CUSUMSQ. Estos tests ayudan a identificar posibles cambios estructurales en la relación de largo plazo o en las dinámicas de corto plazo, lo que puede afectar la validez del modelo.

2.6. Validación Predictiva
Finalmente, se debe realizar una validación fuera de la muestra, utilizando datos que no fueron parte del proceso de estimación, para evaluar la capacidad predictiva del modelo. Comparar las predicciones del ECM con los valores observados puede revelar la precisión del modelo en escenarios reales.

3. Conclusiones

Los modelos de cointegración y ECM son esenciales en la econometría para analizar cómo las variables económicas se ajustan a largo y corto plazo. Su aplicación abarca una variedad de campos, desde la política monetaria hasta las finanzas y el comercio internacional. Sin embargo, la correcta validación de estos modelos, a través de pruebas rigurosas y análisis de diagnóstico, es fundamental para asegurar que las inferencias y predicciones sean confiables.

 

Aplicación práctica

Análisis de Cointegración y Corrección del Error en Series de Tiempo con Python

En este ejemplo, vamos a analizar la relación entre los precios de cierre de las acciones de Apple (AAPL) y Microsoft (MSFT). Primero, importaremos los datos y graficaremos las series de tiempo:

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

# Importar datos de precios de cierre del AAPL y MSFT
aapl = pd.read_csv('AAPL.csv', index_col='Date', parse_dates=True)['Close']
msft = pd.read_csv('MSFT.csv', index_col='Date', parse_dates=True)['Close']

# Graficar series de tiempo
fig, ax = plt.subplots(figsize=(10,5))
aapl.plot(ax=ax, label='AAPL')
msft.plot(ax=ax, label='MSFT')
ax.legend()
plt.show()

Esto generará una gráfica con las dos series de tiempo.

Gráfico de series de tiempo

A continuación, realizaremos una prueba de cointegración utilizando la prueba de Johansen para evaluar si existe una relación a largo plazo entre las dos series de tiempo:

# Aplicar prueba de Johansen para cointegración
result = sm.tsa.vector_ar.vecm.coint_johansen(pd.concat([aapl, msft], axis=1).values, det_order=0, k_ar_diff=1)

# Imprimir resultados
print("Estadístico de traza (Trace statistics):")
print(result.lr1)
print("\nEigenvalores (Eigenvalues):")
print(result.eig)

Los resultados indicarán si hay una relación significativa a largo plazo entre las series de tiempo.

Luego, diferenciaremos las series de tiempo para hacerlas estacionarias y ajustaremos un modelo VARMAX para la corrección del error:

# Diferenciar series de tiempo
diff_aapl = aapl.diff()[1:]
diff_msft = msft.diff()[1:]

# Combinar en un DataFrame
diff_df = pd.DataFrame({'AAPL': diff_aapl, 'MSFT': diff_msft})

# Dividir datos en conjuntos de entrenamiento y prueba
train = diff_df['2009':'2016']
test = diff_df['2017':]

# Ajustar modelo VARMAX con corrección del error
model = sm.tsa.VARMAX(train, order=(1,0), trend='c', error_cov_type='diagonal')
results = model.fit(maxiter=1000, disp=False)
print(results.summary())

El modelo ajustado proporcionará detalles como coeficientes, errores estándar y estadísticas de prueba.

Finalmente, utilizaremos el modelo ajustado para hacer predicciones en el conjunto de prueba y compararlas con los valores reales:

# Hacer predicciones
pred = results.predict(start=test.index[0], end=test.index[-1])
pred_diff = pred[['AAPL', 'MSFT']].diff()

# Sumar predicciones a los valores iniciales para revertir las diferencias
pred_aapl = pred_diff['AAPL'].cumsum() + aapl[test.index[0]-pd.DateOffset(days=1)]
pred_msft = pred_diff['MSFT'].cumsum() + msft[test.index[0]-pd.DateOffset(days=1)]

# Graficar comparación de predicciones y valores reales
fig, ax = plt.subplots(figsize=(10,5))
aapl['2017':].plot(ax=ax, label='AAPL-Real')
msft['2017':].plot(ax=ax, label='MSFT-Real')
pred_aapl.plot(ax=ax, label='AAPL-Pred')
pred_msft.plot(ax=ax, label='MSFT-Pred')
ax.legend()
plt.show()

Este código generará una gráfica que muestra las predicciones del modelo junto a los valores reales.

Gráfico de predicciones y valores reales