Econometría II: Causalidad de Granger

Departamento de Economía

Carlos A. Yanes G.

2023-10-30

Paquetes con que se trabaja la sesión

Los paquetes que se van a utilizar en la sesión de hoy son:

Note

Para trabajar en esta ocasión vamos a usar los paquetes de :

library(pacman)
p_load(TSstudio, tidyverse, stats, urca, forecast, ggfortify, ggplot2, tseries, fpp2, vars, BVAR, lmtest)
  • Es importante resaltar el paquete Vars, lmtest ya que con el estimaremos los modelos y criterios como Granger Causality Test. Algo de lo que está explicado acá tiene mucho del libro (Lütkepohl and Krätzig 2004) y adicionalmente de un gran texto como (Hamilton 2020)

Preambulo

Funciones Impulso-Respuestas

  • En Macroeconomía siempre se hacen preguntas de como reacciona una variable ante la variación de otra variable, a partir de esto, nace la parte del análisis impulso respuesta (IMR).
  • Una función IMR nos dirá cual es el efecto de una innovación o choque de una variable sobre otra.
  • Como los modelos VAR, pueden representarse como una sucesión de choques podemos entonces encontrar un modelo MA o VMA si por ejemplo: \[\tag1 X_t= \mu+\sum\limits_{i=0}^{\infty} \varphi_i e_{t-i}\]
  • Los errores que se usan son los de la forma reducida \(e_t\). Se debe recordar que estos contienen los efectos contemporáneos de variables como \(-b_{21}\) que era el efecto del PIB sobre la tasa de interés.

Funciones Impulso-Respuestas

  • Requerimos de los errores estructurales, ya que estos no estan correlacionados, es decir, los \((\varepsilon_t)\).
  • Como no podemos usar los reducidos, entonces recurrimos a: \[\tag2 e_t=B^{-1}\varepsilon_t\]
  • Reemplazamos (2) en la ecuación (1).
  • Vamos a tener: \[X_t= \mu+\sum\limits_{i=0}^{\infty} \varphi_i B^{-1} \varepsilon_{t-i}\]
  • Para dar mas simpleza a esto, vamos a reemplazar \(\varphi_i B^{-1}= \emptyset_i\)
  • Recuerde que necesitamos es choques “limpios”, aquellos que no tengan relación con efectos contemporáneos

Funciones Impulso-Respuestas

  • Vamos a suponer que tenemos un modelo de PIB, inflación y Tasa de interés y traemos nuestra ecuación: \[X_t= \mu+\sum\limits_{i=0}^{\infty} \emptyset_i \varepsilon_{t-i}\]
  • Matricialmente es \[\begin{bmatrix} Y_t \\ X_t \\ Z_t \end{bmatrix}=\begin{bmatrix} \bar{Y}_t \\ \bar{X}_t \\ \bar{Z}_t \end{bmatrix}+\sum_{i=0}^{\infty}\begin{bmatrix} \emptyset_{i_{1,1}} &\emptyset_{i_{1,2}} &\emptyset_{i_{1,3}} \\ \emptyset_{i_{2,1}}&\emptyset_{i_{2,2}} &\emptyset_{i_{2,3}} \\ \emptyset_{i_{3,1}}&\emptyset_{i_{3,2}} &\emptyset_{i_{3,3}} \end{bmatrix} \begin{bmatrix} \varepsilon_{yt-i}\\ \varepsilon_{xt-i}\\ \varepsilon_{zt-i} \end{bmatrix}\]

Funciones Impulso-Respuestas

  • Las funciones IM muestran los efectos de choque, se refleja en \(t+1\) y así \(t+p\).
  • Un choque entonces de PIB sobre tasa de interés viene a ser: \[\emptyset_{i_{3,1}}=\frac{\partial Z_{t+1}}{\partial\varepsilon_{yt}}\]
  • La ecuación del PIB esta dada por: \[Y_t= \bar{Y}_t+ \emptyset_{i_{1,1}}\varepsilon_{yt}+\emptyset_{i_{1,2}}\varepsilon_{xt}+\emptyset_{i_{1,3}}\varepsilon_{zt}\]

Causalidad de Granger

Causalidad

Para Granger

Una prueba para la cointegración puede considerarse como una pre-prueba para evitar las situaciones de regresiones espurias.

Sean dos variables \(Y_{t}\) y \(X_{t}\), del cual se establece la regresión: \[Y_{t}=\alpha_{o}+\alpha_{1}X_{t}+ \varepsilon_{t}\] Se dice que si \(\varepsilon_t\) es ruido blanco, \((\alpha_{1})\) vendría a ser el parámetro cointegrador.

Causalidad

Sean Y y Z dos variables aleatorias.

  • Se dice que Z causa en el sentido de Granger a Y si: \[E(Y_{t}| I_{t-1}) \neq E(Y_{t}| J_{t-1})\]
  • Donde el vector (I) contiene toda la información del pasado de Y y de Z y el vector (J) solo contiene el pasado de Y.
  • En palabras sencillas, el criterio de causalidad dice que una vez que se tiene en cuenta todo el pasado de Y, el pasado de Z también ayuda a predecir a Y.

Probemos

Espúreo

Code
set.seed(1234)
# Establecer el número de observaciones
n <- 1000
# Crear una serie de tiempo x
x <- ts(data = rep(NA, n), start = 1, frequency = 12)
# Establecer el primer valor
x[1] <- 100
# Generar valores siguiendo un proceso AR(1)
for (t in 2:n) {
  x[t] <- x[t - 1] + qnorm(runif(1))
}

# Lo mismo para y
y <- ts(data = rep(NA, n), start = 1, frequency = 12)
# Establecer el primer valor
y[1] <- 0.5
# Generar valores siguiendo un proceso AR(1)
for (t in 2:n) {
  y[t] <- y[t - 1] + qnorm(runif(1))
}
Code
par(mfrow=c(1,2))
plot(x,main="Serie X")
plot(y,main="Serie Y")

Code
mi_ols<-lm(y~x)
summary(mi_ols)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-20.913  -8.339  -2.723   8.788  24.734 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 57.83880    2.13429   27.10   <2e-16 ***
x           -0.79797    0.01862  -42.86   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11.29 on 998 degrees of freedom
Multiple R-squared:  0.648, Adjusted R-squared:  0.6476 
F-statistic:  1837 on 1 and 998 DF,  p-value: < 2.2e-16
Code
mi_ols$residuals %>% ggtsdisplay()

Espúreo

  • Quizas tenemos un gran modelo, las variables resultan ser significativas, no pasa nada.
  • Pero al analizar los residuos, nos damos cuenta que estan super correlacionados y lo mas probable es que ni siquiera sean ruido blanco
  • La única forma de ver esto es desde luego diferenciando, sin antes recordar que el orden de integración es la diferencia que requiere la serie para ser estacionaria.
  • Una mirada a la cointegración es si ambas series son cointegradas podremos entonces mirar si tienen o poseen un equilibrio de largo plazo

Muestra

Code
mi_ols2<-lm(diff(y)~diff(x))
summary(mi_ols2)

Call:
lm(formula = diff(y) ~ diff(x))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.8612 -0.6392  0.0190  0.6379  2.7885 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) -0.05114    0.03036  -1.684   0.0924 .
diff(x)     -0.01984    0.02946  -0.674   0.5007  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9593 on 997 degrees of freedom
Multiple R-squared:  0.000455,  Adjusted R-squared:  -0.0005476 
F-statistic: 0.4538 on 1 and 997 DF,  p-value: 0.5007

Muestra II

  • Quien fué primero el huevo o la gallina?
  • Vamos a usar la base de datos del trabajo (Thurman, Fisher, et al. 1988)
  • El test de granger realiza una prueba o test F de acuerdo al número de rezagos
  • Un ejemplo de modelo es: \[Y_t=\alpha_{0}+\alpha_1 Y_{t-1}+\alpha_2 X_{t-1}+\varepsilon_{t}\]
  • El modelo alternativo es: \[Y_t=\alpha_{0}+\alpha_1 Y_{t-1}+\varepsilon_{t}\]
  • La prueba de hipotesis es: \[H_0: \alpha_i=0 \; ; \text{X no causa en el sentido de Granger a Y}\]
Code
data(ChickEgg)
grangertest(chicken ~ egg, order = 3, data = ChickEgg)
Granger causality test

Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3)
Model 2: chicken ~ Lags(chicken, 1:3)
  Res.Df Df     F   Pr(>F)   
1     44                     
2     47 -3 5.405 0.002966 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Code
data(ChickEgg)
grangertest(egg ~ chicken, order = 3, data = ChickEgg)
Granger causality test

Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3)
Model 2: egg ~ Lags(egg, 1:3)
  Res.Df Df      F Pr(>F)
1     44                 
2     47 -3 0.5916 0.6238

Gracias por su atención!!

Referencias

Hamilton, James D. 2020. Time Series Analysis. Princeton university press.
Lütkepohl, Helmut, and Markus Krätzig. 2004. Applied Time Series Econometrics. Cambridge university press.
Thurman, Walter N, Mark E Fisher, et al. 1988. “Chickens, Eggs, and Causality, or Which Came First.” American Journal of Agricultural Economics 70 (2): 237–38.