A31 Cointegración y Causalidad

UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
CICLO II - 2024
“TAREA A31 Cointegración y Causalidad”
Asignatura:
Métodos para el análisis Económico
Grupo teórico:
Gt 03
Docente:
MSF. Carlos Ademir Pérez Alas
Integrantes:
Fátima Lourdes Alas Duarte AD22008
Gabriela Alexandra Belloso Martínez BM22010
Vanessa Iveth López González LG20034
Fátima Alejandra Rivas Alvarado RA22087
Ciudad Universitaria, 7 de Enero de 2025

1. Prueba de Raíz Unitaria de Dickey & Fuller.

1.1 Propósito de la prueba, ¿Para qué se usa?

La prueba de Dickey-Fuller (DF) se utiliza para determinar si una serie temporal tiene una raíz unitaria. Esto implica probar si la serie es estacionaria o no. Una serie con raíz unitaria sigue un camino aleatorio, lo que significa que sus valores no tienen un retorno estable a la media y su varianza puede crecer con el tiempo. (Dickey & Fuller, 1981)

Se usa en econometría para:

  • Comprobar la validez de los modelos econométricos.
  • Determinar si las relaciones entre las variables son genuinas o espurias.
  • Modelar la relación entre variables cointegradas mediante un Modelo de Corrección de Errores (MCE).

1.2 Hipótesis de la prueba.

Hipótesis Nula (𝐻0):
Si el parámetro alfa es igual a cero, implica que la serie sigue un camino aleatorio, en consecuencia es no estacionaria. En otras palabras, la serie tiene una raíz unitaria.

\[H_0: \alpha=0 \implies \phi=1 \implies \rho=1\]

Hipótesis Alternativa (𝐻𝑎):
Si el parámetro alfa es distinto de cero y es negativo, entonces la serie es estacionaria.

\[H_1: \alpha \neq 0 \implies \phi \neq 1 \implies \rho \neq 1\]

\[H_1: \alpha < 0 \implies \phi < 1 \implies \rho < 1\]

1.3 Sintaxis de implementación en R.

Con libreria urca

La prueba de Dickey-Fuller se implementa en R usando la función ur.df() de la librería urca. La sintaxis básica es la siguiente:

\[ \texttt ur.df(x, type = c("none", "drift", "trend"), lags = 1, selectlags = "Fixed") \]

Donde:

● ur.df: es el argumento utilizado para realizar la prueba Dickey-Fuller.

● x: es la serie de tiempo a la que se le aplicará la prueba.

● type: especifica el modelo a utilizar. Las opciones son:

  • “none”: sin intercepto ni tendencia.
  • “drift”: con intercepto.
  • “trend”: con intercepto y tendencia.

● lags: especifica el número de rezagos a incluir en la prueba.

● Selectlags: especifica el método para seleccionar el número de rezagos:

  • “Fixed”: Utilice un número fijo de rezagos especificado por lags.
  • “AIC”: Utilice el criterio de información de Akaike (AIC) para seleccionar el número de rezagos.
  • “BIC”: Utilice el criterio de información bayesiano (BIC) para seleccionar el número de rezagos.

Con libreria tseries

En R, la prueba de Dickey-Fuller se implementa utilizando el paquete tseries con la función adf.test(). Un ejemplo básico es:
library(tseries)

# Crear una serie temporal de ejemplo
set.seed(123)
serie <- arima.sim(model = list(ar = 0.7), n = 100)

# Aplicar la prueba de Dickey-Fuller
resultado <- adf.test(serie)

# Ver los resultados
print(resultado)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie
## Dickey-Fuller = -2.9558, Lag order = 4, p-value = 0.1807
## alternative hypothesis: stationary

\[ \texttt adf.test(x, alternative = "stationary", k = trunc((length(x)-1)^(1/3))) \]

Donde:

  • x: Vector numérico que representa la serie temporal que deseas analizar.
  • alternative: Hipótesis alternativa de la prueba. Puede ser:

“stationary” (predeterminada): Hipótesis alternativa que indica que la serie es estacionaria.

explosive”: Hipótesis alternativa que indica que la serie es explosiva.

  • k: Número de rezagos incluidos en la prueba. El valor predeterminado es trunc((length(x)-1)^(1/3))

1.4 Estadístico de prueba.

El estadístico de prueba de la prueba de Dickey-Fuller es un estadístico \(t\). Este estadístico mide la diferencia entre el valor estimado del coeficiente autorregresivo y 1, normalizado por su error estándar.

\[\Delta y_t = \alpha y_{t-1} + \epsilon_t\] El estadístico \(t\) se define como: \[t = \frac{\hat{\alpha}}{\text{SE}(\hat{\alpha})}\]

donde \(\text{SE}(\hat{\alpha})\) es el error estándar de la estimación de \(\alpha\)

1.5 Criterio de decisión.

No rechazar H0 si p−value>0.05

Rechazar H0 si p−value<0.05

1.6 Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.

Si el valor p es menor que el nivel de significancia α, se rechaza \(H_0\). Esto significa que la serie de tiempo es estacionaria.
Si el valor p es mayor que α, no se rechaza \(H_0\). Esto significa que la serie de tiempo no es estacionaria.

1.7 Implementación de un ejemplo.

library(tseries)

# Crear una serie no estacionaria
set.seed(123)
serie_no_estacionaria <- cumsum(rnorm(100))

# Prueba Dickey-Fuller
adf_resultado <- adf.test(serie_no_estacionaria)

# Mostrar resultados
print(adf_resultado)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_no_estacionaria
## Dickey-Fuller = -1.8871, Lag order = 4, p-value = 0.6234
## alternative hypothesis: stationary

Interpretación:

La prueba Dickey-Fuller Aumentada (ADF) se realizó para evaluar si la serie de tiempo es estacionaria o no. Los resultados obtenidos son los siguientes:

  1. La hipótesis nula (\(H_0\)) de la prueba establece que la serie contiene una raíz unitaria, lo que implica que no es estacionaria.
  2. La hipótesis alternativa (\(H_1\)) propone que la serie es estacionaria.
  3. Dado que el valor \(p = 0.6234\) es considerablemente mayor que el nivel de significancia comúnmente utilizado (\(\alpha = 0.05\)), no se rechaza la hipótesis nula.

Con base en estos resultados, no hay suficiente evidencia para concluir que la serie es estacionaria. Esto sugiere que la serie probablemente contiene una raíz unitaria y, por lo tanto, no es estacionaria.

2. Cointegración en el enfoque de Soren Johansen.

2.1 Propósito de la prueba, es decir ¿Para qué se usa?

El objetivo de la prueba de cointegración de Søren Johansen es establecer si hay una relación de estabilidad a largo plazo entre dos o más series de tiempo no estacionarias. Estas relaciones de equilibrio resultan fundamentales en la modelización de datos financieros, económicos y de otras áreas donde las variables progresan conjuntamente con el transcurso del tiempo.
Según el autor de la prueba: “Para que haya cointegración, dos series integradas, o suaves, han de tener la propiedad de que una combinación lineal de ellas sea estacionaria. Muchos pares de series integradas no cumplen dicha propiedad y, consecuentemente, cuando ocurre, la cointegración debe ser considerada como una sorpresa”

Esta prueba sirve para:

  • Detectar la presencia de cointegración.
  • Determinar el número de vectores de cointegración.
  • Estimar los vectores de cointegración.
En resumen, la prueba de Soren Johansen resulta un instrumento fundamental para los economistas y analistas financieros que se ocupan de series temporales. Facilita la identificación de vínculos a largo plazo entre variables económicas y financieras, lo cual es esencial para entender la dinámica de los mercados y tomar decisiones fundamentadas.

2.2 Hipótesis de la prueba

Hipótesis nula:

\[ H_0 = r = 0, 1, \ldots, n-1 \]

No existe cointegración

Hipótesis alterna:

\[ H_A = r = m + 1 \]

Existe cointegración

2.3 Sintaxis de Implementación en R

En R, podemos emplear la función ca.jo() de la biblioteca urca para llevar a cabo una prueba de cointegración. Su sintaxis es la siguiente:

\[ \texttt ca.jo(sjd, ecdet = "const,", type = "eigen,", K = 2, spec = "longrun,", season = 4) \]

donde:

sjd: representa la combinación de las variables en un único objeto.

type: indica el método que se aplicará.

2.4 Estadístico de prueba

\[ l^*_{r+1} - l^*_r = -T2 \ln(1 - \lambda^{r+1}) \]

2.5 Criterio de decisión

Para determinar el número de relaciones de cointegración, se utiliza el siguiente enfoque:

En la salida de R, el comando del paquete genera tablas con los valores observados de los estadísticos () y sus valores críticos () para cada hipótesis \(H_0: r = k\), donde \(k\) es el número de relaciones de cointegración.

La decisión final se basa en el nivel de significancia seleccionado y en los resultados de estas comparaciones.

2.6 Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.

Si el valor observado del estadístico de prueba (ya sea \(\lambda_{\text{trace}}\) o \(\lambda_{\text{max}}\)) excede el valor crítico correspondiente a un nivel de significancia dado (por ejemplo, 5%), se rechaza la hipótesis nula. Esto implica que:

Si el valor observado del estadístico es menor o igual al valor crítico, no se rechaza la hipótesis nula. Esto implica que:

La salida generada por el comando de la función incluye los valores observados de \(\lambda_{\text{trace}}\) y \(\lambda_{\text{max}}\), así como los valores críticos para varios niveles de significancia (e.g., 1%, 5%, 10%). Basándote en estas comparaciones, se toma una decisión para cada hipótesis nula:

\[ H_0: r = k \quad \text{(número de relaciones de cointegración es \(k\))}. \]

2.7 Implementación de Ejemplo

# Cargar librería
library(urca)

# Crear datos simulados
set.seed(123)
n <- 100
Y1 <- cumsum(rnorm(n))  # Proceso aleatorio acumulativo
Y2 <- 0.5 * Y1 + rnorm(n)  # Relación cointegrada con ruido

# Combinar las variables
data <- cbind(Y1, Y2)

# Realizar la prueba de cointegración
ca_result <- ca.jo(data, ecdet = "const", type = "eigen", K = 2)

# Resumen de los resultados
summary(ca_result)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 4.045959e-01 2.751562e-02 1.759442e-19
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 1 |  2.73  7.52  9.24 12.97
## r = 0  | 50.81 13.75 15.67 20.20
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##              Y1.l2       Y2.l2    constant
## Y1.l2     1.000000  1.00000000  1.00000000
## Y2.l2    -2.071821 -0.03565006 -0.24245865
## constant -0.143079 -4.21041101  0.06197902
## 
## Weights W:
## (This is the loading matrix)
## 
##            Y1.l2       Y2.l2      constant
## Y1.d -0.06452877 -0.05310978  2.014102e-17
## Y2.d  0.56593797 -0.03034488 -4.849394e-17

Interpretación:

Para \(H_0: r = 0\), el estadístico \(15.76\) es mayor que el valor crítico al 5% (\(15.67\)), por lo que rechazamos \(H_0\).

Para \(H_0: r = 1\), el estadístico \(4.98\) es menor que el valor crítico al 5% (\(9.24\)), por lo que no rechazamos \(H_0\).

Existe exactamente una relación de cointegración entre \(Y_1\) y \(Y_2\).

3. Causalidad en el sentido de Granger

3.1. Propósito de la prueba, ¿Para qué se usa?

La prueba de Granger tiene como objetivo determinar si una variable 𝑋𝑡 mejora la predicción de otra variable 𝑌𝑡 en el contexto de series temporales. Según Granger la causalidad no implica causalidad en el sentido físico, sino una relación predictiva basada en la precedencia temporal de los datos. Es así como asegura (Durlauf & Blume, 2010) “La causalidad en el sentido de Granger se utiliza para identificar si los rezagos de una variable contienen información útil para predecir otra, dado un modelo VAR adecuado”. Este enfoque es relevante en econometría para analizar relaciones entre indicadores económicos, como PIB, inflación y tasas de interés, que pueden estar relacionadas a través de patrones temporales.

3.2. Hipotesis de la prueba

Hipótesis Nula (𝐻0): 𝑋𝑡 no causa en el sentido de Granger a 𝑌𝑡. “Esto significa que los coeficientes de los rezagos de 𝑋𝑡 en la ecuación de 𝑌𝑡 son simultáneamente cero”
\[H_0:\beta_1,\beta_2,\dots,\beta_p = 0\]
Hipótesis Alternativa (𝐻𝑎): 𝑋𝑡causa en el sentido de Granger a 𝑌𝑡. “Al menos uno de los coeficientes de los rezagos de 𝑋𝑡 es diferente de cero”

\[H_a : \exists \, \beta_i \neq 0, \, i \in \{1, 2, \dots, p\}\]

La hipótesis nula se establece para probar si 𝑋𝑡 no agrega información predictiva sobre 𝑌𝑡 que no esté ya contenida en los rezagos de 𝑌𝑡. Si se rechaza 𝐻0, se concluye que 𝑋𝑡 tiene un efecto predictivo sobre 𝑌𝑡.

3.3. Sintaxis de implementación en R

En R, la función grangertest del paquete lmtest permite realizar la prueba de causalidad en el sentido de Granger. Su sintaxis es intuitiva y flexible. A continuación, se describe un ejemplo detallado y se explican sus argumentos:
# Instalar y cargar paquetes necesarios
library(lmtest)

# Crear datos de ejemplo
set.seed(123)
x <- rnorm(100)  # Serie temporal 1 (variable independiente)
y <- rnorm(100)  # Serie temporal 2 (variable dependiente)

# Implementar la prueba de Granger con 2 rezagos
resultado <- grangertest(y ~ x, order = 2)

# Mostrar resultados
print(resultado)
## Granger causality test
## 
## Model 1: y ~ Lags(y, 1:2) + Lags(x, 1:2)
## Model 2: y ~ Lags(y, 1:2)
##   Res.Df Df      F  Pr(>F)  
## 1     93                    
## 2     95 -2 3.6809 0.02894 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Argumentos principales:

  • formula: Describe la relación entre la variable dependiente y la independiente.

Especifica la relación entre las variables dependiente (𝑌𝑡) e independiente (𝑋𝑡).

El formato y ~ x indica que queremos evaluar si 𝑋𝑡 causa en el sentido de Granger 𝑌𝑡.

  • order: Número de rezagos a incluir en el modelo.

Especifica el número de rezagos (𝑝) a considerar en la prueba.

Es importante seleccionar 𝑝con base en criterios como el AIC, BIC o conocimiento previo de las series temporales.

  • data: contiene las series temporales organizadas en un marco de datos.

El argumento order es crucial, ya que especifica el número de rezagos a considerar para evaluar la relación causal.

3.4. Estadístico de prueba

La prueba genera un estadístico 𝐹, que compara dos modelos:

Modelo restringido: Solo incluye los rezagos de 𝑡Y .

Modelo completo: Incluye los rezagos de 𝑌𝑡 y 𝑋𝑡.

El estadístico 𝐹se calcula como:

\[F = \frac{(SSR_r - SSR_{ul}) / p}{SSR_{ul} / (n - k)}\]

Donde:

𝑆𝑆𝑅𝑟: Suma de cuadrados residuales del modelo restringido.

𝑆𝑆𝑅𝑢: Suma de cuadrados residuales del modelo completo.

𝑝: Número de restricciones (coeficientes asociados a los rezagos de 𝑋𝑡).

𝑛−𝑘: Grados de libertad residuales del modelo completo.

En R, la salida de la función grangertest incluye el estadístico 𝐹 y el p-valor.

3.5. Criterio de decisión

Regla: Si el p-valor es menor al nivel de significancia (𝛼=0.05), se rechaza 𝐻0 . Si el p-valor es mayor o igual a 𝛼, no se rechaza 𝐻0.

Interpretación del resultado:

  • Si 𝐻0 se rechaza, 𝑋𝑡contiene información predictiva sobre 𝑌𝑡.

  • Si 𝐻0 no se rechaza, no hay evidencia suficiente para afirmar que 𝑋𝑡 afecta a 𝑌𝑡.

3.6. Interpretación del rechazo o no rechazo de 𝐻0

  • Rechazo de 𝐻0: Los rezagos de 𝑋𝑡aportan información predictiva única sobre 𝑌𝑡 .

Implicación: 𝑋𝑡 puede ser útil como predictor en modelos económicos o financieros.

  • No rechazo de 𝐻0:No hay evidencia estadística suficiente para concluir que 𝑋𝑡causa en el sentido de Granger a 𝑌𝑡.

Implicación: Es posible que 𝑋𝑡 no tenga relevancia predictiva para 𝑌𝑡, o que el número de rezagos no sea adecuado

3.7. Implementación de un ejemplo

Se implementa un ejemplo práctico usando datos simulados:

# Crear series temporales simuladas
set.seed(42)
x <- arima.sim(list(order = c(1, 0, 0), ar = 0.6), n = 100)
y <- arima.sim(list(order = c(1, 0, 0), ar = 0.8), n = 100)

# Organizar datos en un marco
data <- data.frame(y, x)

# Implementar prueba de Granger
resultado <- grangertest(y ~ x, order = 2, data = data)

# Mostrar resultados
print(resultado)
## Granger causality test
## 
## Model 1: y ~ Lags(y, 1:2) + Lags(x, 1:2)
## Model 2: y ~ Lags(y, 1:2)
##   Res.Df Df      F Pr(>F)
## 1     93                 
## 2     95 -2 0.2556  0.775

Interpretación:

La prueba de causalidad de Granger evalúa si la variable \(x\) proporciona información predictiva sobre \(y\), más allá de la proporcionada por los valores pasados de \(y\). Los resultados de la prueba son los siguientes:

  1. La hipótesis nula (\(H_0\)) establece que las variables rezagadas de \(x\) no tienen un efecto causal sobre \(y\).
  2. El valor \(p = 0.775\) es significativamente mayor que un nivel de significancia común (\(\alpha = 0.05\)), lo que indica que no se puede rechazar la hipótesis nula.

Con base en los resultados, no hay evidencia suficiente para concluir que \(x\) causa \(y\) en el sentido de Granger. Esto sugiere que los valores rezagados de \(x\) no proporcionan información adicional para predecir \(y\) más allá de lo que ya aportan los valores rezagados de \(y\).

Bibliografía:

Dickey, D. A., & Fuller, W. A. (1981). Likelihood Ratio Statistics for Autoregressive Time Series with a Unit Root. Econometrica, 49, 1057-1022.

Granger, C. W. J., & Engle, R. F. (1987). Cointegration and error correction: Representation, estimation, and testing. Econometrica, 55(2), 251–276. https://doi.org/10.2307/1913236

Durlauf, S. N., & Blume, L. E. (Eds.). (2010). Macroeconometrics and Time Series Analysis. Palgrave Macmillan.