Asignatura: Métodos para el Análisis Económico · Escuela de Economía, Facultad de Ciencias Económicas, Universidad de El Salvador

Integrante: Kennedy Vasquez

Introducción

Este trabajo explica cómo realizar tres pruebas en R del análisis de series de tiempo. Las pruebas son:

  1. Dickey-Fuller aumentada.
  2. Cointegración de Johansen.
  3. Causalidad de Granger.

Las tres pruebas se desarrollan con el mismo conjunto de datos, para que el análisis cuente con una sola historia: primero se determina el orden de integración de las series, luego se busca la relación de largo plazo y, por último, se examina qué variable precede a cuál.

Carga de datos

library(kableExtra)
library(urca)
library(lmtest)

data(finland)
datos <- ts(finland, start = c(1958, 2), frequency = 4)
finland %>%
  head(10)%>%
  kable(caption = "Datos macroeconómicos de Finlandia") %>%
  kable_classic(html_font = "Times New Roman", font_size = 14) %>%
  add_footnote(label = "Datos Finlandia", notation = "symbol") %>%
  kable_styling()
Datos macroeconómicos de Finlandia
lrm1 lny lnmr difp
2.848664 3.836539 0.1731126 0.0148151
2.828010 3.902982 0.1012019 0.0000000
2.908186 3.896880 0.1320803 0.0000000
2.934326 3.847045 0.0699924 0.0000000
2.986127 3.916454 0.0653195 0.0000000
3.006543 3.986216 0.0653195 0.0145988
3.016235 3.984211 0.0653195 0.0143887
2.954030 3.956458 0.0653195 0.0141846
3.002750 3.990079 0.1612681 0.0000000
3.041873 4.048979 0.2434950 0.0139862
* Datos Finlandia
Variable Descripción
lrm1 Logaritmo de la cantidad real de dinero (M1)
lny Logaritmo del ingreso real
lnmr Tasa de interés marginal
difp Tasa de inflación

Series del conjunto finland

plot.ts(datos, main = "Series del conjunto finland", xlab = "Tiempo (trimestres)",
        col = "#2c3e50", lwd = 1.5)

Se observa que lrm1 y lny crecen de forma sostenida (tendencia), lo que hace sospechar que son no estacionarias. Esa sospecha se contrasta formalmente en la siguiente sección.

1. Prueba de raíz unitaria de Dickey-Fuller

1.1 Propósito:

Determinar si una serie es estacionaria (media y varianza estables, los shocks se disipan) o si tiene una raíz unitaria, es decir, no estacionaria (la serie se comporta como un paseo aleatorio). Es el paso previo obligatorio: regresar series no estacionarias produce relaciones espurias, y tanto Johansen como Granger exigen conocer el orden de integración.

1.2 Hipótesis de la prueba

\(\gamma = \rho - 1\)

  • Hipótesis nula (\(H_0\)): la serie tiene raíz unitaria, es decir, no es estacionaria.
  • Hipótesis alternativa (\(H_1\)): la serie no tiene raíz unitaria, es decir, es estacionaria.

Cómo saber si el resultado es “bueno” o “malo” según las hipótesis

Situación \(\hat{\gamma}\) y \(\hat{\rho}\) Frente a las hipótesis Decisión Ejemplo (lrm1)
\(\tau\) mayor que el valor crítico \(\hat{\gamma}\) cerca de \(0\); \(\hat{\rho}\) cerca de \(1\) Compatible con \(H_0: \gamma = 0\) (\(\rho = 1\)) No se rechaza \(H_0\): raíz unitaria, no estacionaria Niveles: \(\hat{\gamma} = -0.167\), \(\hat{\rho} = 0.833\), \(\tau = -2.55 > -3.43\)
\(\tau\) menor que el valor crítico \(\hat{\gamma}\) negativo y lejos de \(0\) (entre \(-2\) y \(0\)); \(\hat{\rho}\) entre \(-1\) y \(1\) Favorece \(H_1: \gamma < 0\) (\(\rho < 1\)) Se rechaza \(H_0\): estacionaria 1.ª diferencia: \(\hat{\gamma} = -1.302\), \(\hat{\rho} = -0.302\), \(\tau = -5.11 < -2.88\)

La decisión la da siempre \(\tau\) frente al valor crítico; \(\hat{\gamma}\) y \(\hat{\rho}\) ayudan a explicar el resultado.

1.3 Sintaxis en R

ur.df(y, type = "trend", lags = 4, selectlags = "AIC")
Argumento Qué hace
y Serie a evaluar.
type Componentes determinísticos de la regresión: "none" (ninguno), "drift" (constante \(\alpha\)) o "trend" (constante y tendencia \(\alpha + \beta t\)). Se usa "trend" si la serie crece con el tiempo.
lags Número de rezagos \(p\) de \(\Delta y_t\). Con selectlags distinto de "Fixed", es el máximo a considerar.
selectlags Cómo elegir los rezagos: "Fixed" (usa exactamente lags), "AIC" o "BIC" (elige el mejor número hasta lags).

1.4 Estadístico de prueba

El estadístico de prueba está dado por la expresión:

\[\tau = \frac{\hat{\gamma}}{\text{EE}(\hat{\gamma})}\]

A diferencia de una regresión convencional, este cociente no sigue una distribución \(t\) de Student bajo la hipótesis nula (\(H_0\)), sino la distribución teórica de Dickey-Fuller. Debido a esto, la función ur.df() del paquete urca en R no utiliza los p-valores ordinarios, sino que evalúa la decisión mediante valores críticos a los niveles de significancia del 1%, 5% y 10%.

1.5 Criterio de decisión e Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

\[\begin{aligned} \text{Si } \tau < \text{Valor Crítico} &\implies \text{Se rechaza } H_0 \quad \text{(La serie es Estacionaria)} \\ \text{Si } \tau > \text{Valor Crítico} &\implies \text{No se rechaza } H_0 \quad \text{(La serie es No Estacionaria / Raíz Unitaria)} \end{aligned}\]

Regla de decisión: Se rechaza la hipótesis nula (\(H_0\)) únicamente si el estadístico calculado \(\tau\) se ubica a la izquierda (es más negativo) del valor crítico tabulado al nivel de significancia elegido (\(\alpha = 0.05\)).

1.6 Implementación de un ejemplo.

library(urca)

# ==============================================================================
# 1. EVALUACIÓN DE lrm1 EN NIVELES (Con tendencia)
# ==============================================================================
# Se usa type = "trend" porque la serie muestra crecimiento continuo
adf_lrm1_niveles <- ur.df(datos[, "lrm1"], 
                          type = "trend", 
                          lags = 4, 
                          selectlags = "AIC")

# Ver el resumen de la prueba
summary(adf_lrm1_niveles)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.21530 -0.03069  0.00018  0.03681  0.14341 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.4868337  0.1870135   2.603  0.01073 * 
## z.lag.1     -0.1673290  0.0657251  -2.546  0.01253 * 
## tt           0.0016357  0.0006744   2.425  0.01720 * 
## z.diff.lag1 -0.1251285  0.1071441  -1.168  0.24582   
## z.diff.lag2  0.0930793  0.1002432   0.929  0.35551   
## z.diff.lag3 -0.2084084  0.1001273  -2.081  0.04011 * 
## z.diff.lag4  0.3046847  0.0982484   3.101  0.00254 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05392 on 94 degrees of freedom
## Multiple R-squared:  0.4474, Adjusted R-squared:  0.4121 
## F-statistic: 12.68 on 6 and 94 DF,  p-value: 1.942e-10
## 
## 
## Value of test-statistic is: -2.5459 3.2975 3.2445 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47

Estadístico de prueba: El estadístico de la prueba Dickey-Fuller Aumentada es t3 = -2.54.

Criterio de decisión: Al compararlo con el valor crítico del 5% tau3 = -3.43, se observa que el estadístico es mayor que el valor crítico (-2.5459 > -3.43).

Interpretación: Por lo tanto, no se rechaza la hipótesis nula H0 al 5% de significancia, confirmando que la serie en niveles es no estacionaria y contiene una raíz unitaria I(1). Dado este resultado, se procede a evaluar la serie en primeras diferencias.

Ejemplo con la primera diferencia:

adf_dlrm1 <- ur.df(diff(datos[, "lrm1"]), type = "drift", lags = 4, selectlags = "AIC")
summary(adf_dlrm1)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.228546 -0.031027  0.003732  0.033177  0.131171 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.010508   0.005988   1.755   0.0825 .  
## z.lag.1     -1.302217   0.254807  -5.111 1.66e-06 ***
## z.diff.lag1  0.051631   0.203204   0.254   0.8000    
## z.diff.lag2  0.050689   0.160277   0.316   0.7525    
## z.diff.lag3 -0.253693   0.098561  -2.574   0.0116 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0552 on 95 degrees of freedom
## Multiple R-squared:  0.8036, Adjusted R-squared:  0.7954 
## F-statistic:  97.2 on 4 and 95 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -5.1106 13.0882 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1  6.52  4.63  3.81

En la primera diferencia de \(lrm1\) se obtiene \(\hat{\gamma} = -1.30\) y \(\hat{\rho} = 1 + \hat{\gamma} = -0.30\). Como \(|\hat{\rho}| < 1\), la serie es estacionaria. Lo confirmo con el estadístico: \(\tau = -5.11\) es menor que el valor crítico de \(-2.88\) al \(5\%\), por lo que se rechaza \(H_0\).

Estadístico de prueba: El estadístico es tau2 = −5.11 y el valor crítico del 5% es tau2 = −2.88.

Criterio de decisión: Al compararlo con el valor crítico del 5% tau2 = -2.88, se observa que el estadístico es menor que el valor crítico (-5.11<-2.88).

Interpretación: Por lo tanto, se rechaza la hipótesis nula H0 al 5% de significancia, confirmando que la serie es estacionaria en primeras diferencias.

library(urca)

# ==============================================================================
# 1. EVALUACIÓN DE lny EN NIVELES (Con tendencia)
# ==============================================================================
# Se usa type = "trend" porque la serie muestra crecimiento continuo
lny_niveles <- ur.df(datos[, "lny"], 
                          type = "trend", 
                          lags = 4, 
                          selectlags = "AIC")

# Ver el resumen de la prueba
summary(lny_niveles)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.072390 -0.017882  0.001309  0.020854  0.064183 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.3104353  0.1823246   1.703 0.091938 .  
## z.lag.1     -0.0723799  0.0462530  -1.565 0.120974    
## tt           0.0005715  0.0004952   1.154 0.251419    
## z.diff.lag1 -0.3666712  0.0952440  -3.850 0.000216 ***
## z.diff.lag2 -0.2368393  0.0972450  -2.435 0.016757 *  
## z.diff.lag3 -0.2751125  0.0947987  -2.902 0.004618 ** 
## z.diff.lag4  0.5162885  0.0884895   5.834 7.62e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0306 on 94 degrees of freedom
## Multiple R-squared:  0.7629, Adjusted R-squared:  0.7477 
## F-statistic:  50.4 on 6 and 94 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.5649 4.9257 2.5756 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47

Estadístico de prueba: El estadístico de la prueba Dickey-Fuller es tau3 = -1.5649.

Criterio de decisión: Al compararlo con el valor crítico del 5% tau3 = -3.43, se observa que el estadístico es mayor que el valor crítico (-1.5649 > -3.43).

Interpretación: Por lo tanto, no se rechaza la hipótesis nula H0 al 5% de significancia, confirmando que la serie lny en niveles es no estacionaria (posee raíz unitaria).

library(urca)
# ==============================================================================
# EVALUACIÓN DE lny EN PRIMERA DIFERENCIA (Con constante)
# ==============================================================================
# diff() calcula la primera diferencia. Se usa type = "drift" porque al
# diferenciar desaparece la tendencia, pero puede quedar una constante
adf_dlny <- ur.df(diff(datos[, "lny"]),
                  type = "drift",
                  lags = 4,
                  selectlags = "AIC")

# Ver el resumen de la prueba
summary(adf_dlny)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.074327 -0.019632  0.000541  0.022594  0.056303 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.013352   0.004397   3.037  0.00309 ** 
## z.lag.1     -1.343673   0.297722  -4.513 1.83e-05 ***
## z.diff.lag1 -0.046378   0.231262  -0.201  0.84149    
## z.diff.lag2 -0.276498   0.162383  -1.703  0.09188 .  
## z.diff.lag3 -0.537077   0.086449  -6.213 1.37e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03107 on 95 degrees of freedom
## Multiple R-squared:  0.9236, Adjusted R-squared:  0.9204 
## F-statistic: 287.1 on 4 and 95 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -4.5132 10.209 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1  6.52  4.63  3.81

Estadístico de prueba: El estadístico de la prueba Dickey-Fuller es tau2 = −4.5132.

Criterio de decisión: Al compararlo con el valor crítico del 5% (tau2 = −2.88), el estadístico es menor que el valor crítico (−4.5132 < −2.88).

Interpretación: Se rechaza la hipótesis nula H₀ al 5% de significancia: la primera diferencia de lny es estacionaria. Como en niveles tiene raíz unitaria, lny es I(1).

2. Cointegración de Johansen

2.1 Propósito

La prueba de Johansen sirve para saber si varias series no estacionarias tienen una relación de equilibrio de largo plazo, es decir, si están cointegradas, y cuántas relaciones de ese tipo existen. Aunque cada serie se mueva de forma errática por separado, si cointegran hay algo que las mantiene “atadas” y la distancia entre ellas no crece sin control (como el perro y su dueño con la correa elástica).

Esto es importante porque, según Sandoval, modelar variables no estacionarias con ecuaciones simples da resultados espurios, a menos que las variables cointegren. Además, como la cointegración es una propiedad del sistema, se prefiere el enfoque multivariante de Johansen: analiza todas las variables a la vez, no obliga a escoger una variable dependiente y puede encontrar más de una relación.

El resultado de la prueba es un número: el rango de cointegración \(r\), que indica cuántas relaciones de largo plazo hay entre las variables (\(r = 0\) significa que no hay ninguna).

2.2 Hipótesis de la prueba.

Hipótesis Johansen propone dos estadísticos, la traza (la que se usa en el ejemplo) y el máximo valor propio (se usa para comparar). Sus hipótesis son:

Prueba de la traza

\[H_0: r \le r_0 \qquad \text{frente a} \qquad H_1: r > r_0\]

Prueba del máximo valor propio

\[H_0: r = r_0 \qquad \text{frente a} \qquad H_1: r = r_0 + 1\]

donde \(r\) es el número de relaciones de cointegración y \(r_0\) es el valor que se está probando en cada paso.

¿Por qué estas hipótesis? La hipótesis nula siempre afirma que hay “a lo sumo” \(r_0\) relaciones, que es la situación más simple. Se empieza suponiendo que no hay ninguna (\(r_0 = 0\)) y solo se abandona esa idea si los datos la contradicen con fuerza. Si se rechaza, se sube \(r_0\) en una unidad y se repite la prueba. El proceso se detiene en la primera hipótesis nula que no se rechaza, y ese valor es el rango estimado.

2.3 Sintaxis en R

ca.jo(x, type = "trace", ecdet = "none", K = 2, spec = "longrun", season = 4)
Argumento Qué significa Valor usado
x Las series que se analizan juntas (todas a la vez) datos, las 4 variables
type Qué estadístico calcular: "trace" (traza) o "eigen" (máximo valor propio) "trace"
ecdet Si la relación de largo plazo incluye constante ("const"), tendencia ("trend") o nada ("none") "none"
K Cuántos rezagos (trimestres anteriores) usa el modelo base 2
spec Forma de escribir el modelo, "longrun" o "transitory"; solo cambia en qué rezago entra el término de largo plazo "longrun"
season Agrega efectos estacionales; 4 significa datos trimestrales 4

2.4 Estadístico de prueba

Estadístico de prueba: En la salida, el estadístico es la columna test de la sección Values of teststatistic and critical values of test. Hay uno por cada hipótesis nula

2.5 Criterio de decisión e Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

Criterio de decisión: Se compara cada estadístico con el valor crítico del 5%, empezando en \(r = 0\) y subiendo de uno en uno. Mientras el estadístico sea mayor que el valor crítico, se rechaza \(H_0\) y se continúa; la prueba se detiene en la primera hipótesis que no se rechaza, y esa define el rango de cointegración. Aquí: para \(r = 0\), 76.13 > 48.28 (se rechaza); para \(r \le 1\), 37.65 > 31.52 (se rechaza); para \(r \le 2\), 11.00 < 17.95 (no se rechaza), por lo que la prueba se detiene en ese punto.

Interpretación del rechazo o no rechazo de \(H_0\):

  • Se rechaza \(H_0: r \le r_0\): hay evidencia de que existen más de \(r_0\) relaciones de cointegración; se sube \(r_0\) en una unidad y se continúa. Si se rechaza \(r = 0\), hay cointegración.
  • No se rechaza \(H_0: r \le r_0\): no hay evidencia de más de \(r_0\) relaciones; la prueba se detiene y el rango estimado es \(r = r_0\). Si esto ocurre desde \(r_0 = 0\), no hay cointegración.

Conclusión: Se rechazan \(r = 0\) y \(r \le 1\), y no se rechaza \(r \le 2\). Por lo tanto, el rango es \(r = 2\): las cuatro variables comparten dos relaciones de equilibrio de largo plazo.

2.6 Implementación de un ejemplo

Implementación de un ejemplo: Se aplica la prueba de la traza a las cuatro variables del conjunto finland, con los mismos argumentos del ejemplo de la ayuda del paquete (ca.jo).

Nota aclaratoria: Johansen supone que todas las variables son integradas de orden uno, I(1). en la prueba de Dickey Fuller las 4 variables fueron estacionarias en primeras diferencias solo que por motivo de simplificacion solo aparecen dos variables y no presentan ningun problema con la prueba de Johansen

# ==============================================================================
# PRUEBA DE JOHANSEN (traza) con las 4 variables
# ==============================================================================
johansen <- ca.jo(datos, type = "trace", ecdet = "none", K = 2,
                  spec = "longrun", season = 4)

# Ver el resumen de la prueba
summary(johansen)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend 
## 
## Eigenvalues (lambda):
## [1] 0.30932660 0.22599561 0.07308056 0.02946699
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 3 |  3.11  6.50  8.18 11.65
## r <= 2 | 11.00 15.66 17.95 23.52
## r <= 1 | 37.65 28.71 31.52 37.22
## r = 0  | 76.13 45.23 48.28 55.43
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##            lrm1.l2    lny.l2    lnmr.l2    difp.l2
## lrm1.l2  1.0000000  1.000000  1.0000000   1.000000
## lny.l2  -0.9763252 -1.323191 -0.9199865   1.608739
## lnmr.l2 -7.0910749 -2.016033  0.2691516  -1.375342
## difp.l2 -7.0191097 22.740851 -1.8223931 -15.686927
## 
## Weights W:
## (This is the loading matrix)
## 
##            lrm1.l2       lny.l2      lnmr.l2      difp.l2
## lrm1.d 0.033342108 -0.020280528 -0.129947614 -0.002561906
## lny.d  0.022544782 -0.005717446  0.012949130 -0.006265406
## lnmr.d 0.053505000  0.046876449 -0.007367715  0.002173242
## difp.d 0.005554849 -0.017353903  0.014561151  0.001531004
johansen@V[, 1:2]
##            lrm1.l2    lny.l2
## lrm1.l2  1.0000000  1.000000
## lny.l2  -0.9763252 -1.323191
## lnmr.l2 -7.0910749 -2.016033
## difp.l2 -7.0191097 22.740851

Estadístico de prueba: En la salida, el estadístico es la columna test de la sección Values of teststatistic and critical values of test. Hay uno por cada hipótesis nula:

Hipótesis nula Estadístico (test)
\(r = 0\) 76.13
\(r \le 1\) 37.65
\(r \le 2\) 11.00
\(r \le 3\) 3.11

Estadístico de prueba: El estadístico de la prueba de la traza se encuentra en la columna test: es 76.13 para \(r = 0\), 37.65 para \(r \le 1\), 11.00 para \(r \le 2\) y 3.11 para \(r \le 3\).

Criterio de decisión: Se compara cada estadístico con el valor crítico del 5%, empezando en \(r = 0\). Para \(r = 0\), el estadístico es mayor que el valor crítico (76.13 > 48.28); para \(r \le 1\), también es mayor (37.65 > 31.52); para \(r \le 2\), es menor (11.00 < 17.95), por lo que ahí se detiene la prueba.

Interpretación: Se rechaza \(H_0: r = 0\), por lo que existe al menos una relación de cointegración. Se rechaza \(H_0: r \le 1\), por lo que existe más de una. No se rechaza \(H_0: r \le 2\), por lo que hay a lo sumo dos. Por lo tanto, el rango de cointegración es \(r = 2\), es decir, existen 2 relaciones de equilibrio de largo plazo entre las cuatro variables (lrm1, lny, lnmr y difp).

¿Cómo se llega a esa conclusión? Cada fila de la tabla pregunta si hay más de \(r_0\) relaciones. Si la respuesta es sí (se rechaza \(H_0\)), se sube un paso y se vuelve a preguntar. Si la respuesta es no (no se rechaza \(H_0\)), no tiene sentido seguir preguntando por números mayores, y la prueba se detiene: el rango es el valor de esa fila. Aquí las dos primeras preguntas tienen respuesta afirmativa y la tercera, negativa, así que hay exactamente dos relaciones.

¿Qué significa este resultado?

  • Cada una de las cuatro variables, por separado, no tiene un nivel fijo hacia el cual volver. Sin embargo, existen dos combinaciones de ellas que sí son estacionarias. Cada combinación es una relación de equilibrio de largo plazo.
  • Esto no quiere decir que las variables se muevan iguales en todo momento. En el corto plazo pueden alejarse unas de otras, pero en el largo plazo hay algo que las mantiene atadas y tienden a volver al equilibrio.
  • Que haya dos relaciones (y no una) indica que las variables están conectadas por más de un vínculo a la vez.

¿Para qué sirve saberlo? Según Catalán, si las series cointegran, la regresión entre ellas no es espuria y no se pierde la información de largo plazo, cosa que sí ocurriría si se trabajara solo con primeras diferencias. Según Sandoval, cuando se rechaza la hipótesis de no cointegración, el siguiente paso es estimar un modelo de corrección de errores (VECM).

3. Causalidad de Granger

Contexto: Clive W. J. Granger (1934–2009) fue un destacado economista y estadístico británico (originario de Gales), reconocido principalmente por sus aportaciones al análisis de series temporales en econometría.

La vida de Granger estuvo llena de “causalidades” que determinaron su camino. Por ejemplo, no pensaba cursar el bachillerato y terminó haciéndolo por influencia de sus amigos; además, se convirtió en profesor de Estadística en la universidad donde se había licenciado (Nottingham) casi por puro azar.

Uno de los conceptos a los que dedicó mayor atención fue el de causalidad. Esencialmente, se parte de un par de series temporales interrelacionadas y se desea saber si existen dos relaciones sencillas: primero, de la variable \(X\) hacia la variable \(Y\) y, después, de la variable \(Y\) hacia la variable \(X\).

La afirmación de causalidad tiene exactamente dos componentes:

  1. La causa ocurre antes que el efecto.
  2. La causa contiene información sobre el efecto que es única y que no está contenida en ninguna otra variable.

En aquel tiempo no había ideas fijas sobre la causalidad, pero la comunidad académica coincidió en que la definición de Granger correspondía a la “causalidad de Granger” y no a la causalidad verdadera. Cuando Granger pidió a sus críticos una definición de causalidad verdadera, nunca se la proporcionaron.

Nociones previas: cointegración

En el mundo de las series temporales (es decir, datos de un fenómeno observados a lo largo del tiempo) existen series estacionarias y no estacionarias.

Las series estacionarias se mueven hacia arriba y hacia abajo con el paso del tiempo, pero oscilan siempre en torno a una referencia: una serie es estacionaria cuando su valor medio es estable. Por el contrario, es no estacionaria cuando crece o disminuye sistemáticamente en el tiempo.

Las regresiones estimadas con variables no estacionarias son espurias, salvo que estas estén cointegradas.

La cointegración es la solución a este problema. Ocurre cuando dos variables no estacionarias (que crecen o cambian sin un promedio fijo) comparten un vínculo o equilibrio de largo plazo que las mantiene “atadas”. Aunque cada variable se mueva de forma errática por separado, la distancia entre ellas permanece estable con el tiempo. Formalmente, dos variables están cointegradas si, al restar una de la otra (es decir, al obtener sus residuos), la serie resultante es estacionaria.

Un ejemplo intuitivo es el de un dueño que pasea a su perro con una correa elástica: ambos caminan en direcciones impredecibles (no estacionarias), pero la correa impide que se alejen indefinidamente. La distancia entre ellos (el residuo) se mantiene estable (estacionaria).

Cuando existe cointegración, la regresión deja de ser espuria y los estimadores se vuelven “superconsistentes”, lo que significa que la relación estadística no solo es válida, sino también extremadamente precisa para reflejar un equilibrio real de largo plazo.

3.1 Propósito de la prueba

Propósito: El propósito principal de la prueba de causalidad de Granger es examinar si una serie temporal puede utilizarse para pronosticar a otra; es decir, evaluar si los valores pasados de una serie \(X\) ayudan a predecir los valores de otra serie \(Y\).

3.2 Hipótesis de la prueba

Hipótesis de la prueba

La prueba compara dos modelos para \(Y\): uno que utiliza únicamente los valores pasados de \(Y\) y otro que, además, incorpora los valores pasados de \(X\). Si los rezagos de \(X\) no aportan información adicional, se concluye que \(X\) no causa a \(Y\). Por lo tanto, las hipótesis son:

\[ H_0:\ X \text{ no causa a } Y \text{ en el sentido de Granger} \]

\[ H_1:\ X \text{ causa a } Y \text{ en el sentido de Granger} \]

¿Por qué estas hipótesis? La hipótesis nula representa la situación más simple: los valores pasados de \(X\) no mejoran el pronóstico de \(Y\), por lo que el modelo restringido es suficiente. Solo se abandona esa idea si los datos muestran que incluir los rezagos de \(X\) reduce significativamente el error de predicción, lo que favorece a la hipótesis alternativa.

Decisión de rechazo

  • Se rechaza \(H_0\) si \(p\text{-valor} < 0.05\): la serie \(X\) causa en el sentido de Granger a la serie \(Y\).
  • No se rechaza \(H_0\) si \(p\text{-valor} > 0.05\): la serie \(X\) no causa en el sentido de Granger a la serie \(Y\).

3.3 Sintaxis en R

Sintaxis en R: Para realizar la prueba de causalidad de Granger se utiliza la función grangertest() del paquete lmtest, que tiene la siguiente sintaxis:

grangertest(y ~ x, order = 1, data = datos)

donde:

Argumento Qué significa
y ~ x Fórmula del modelo. Se lee como “\(x\) causa a \(y\)”: y es la serie que se desea pronosticar y x es la serie cuyo aporte se evalúa.
order Número de rezagos (\(p\)) que se incluyen de cada serie. El valor predeterminado es 1.
data Conjunto de datos que contiene las series.

También es posible usar la sintaxis grangertest(x, y, order = 1), donde se indican directamente las dos series.

3.4 Estadístico de prueba

Estadístico de prueba: La prueba utiliza el estadístico \(F\), que compara el ajuste del modelo sin los rezagos de \(X\) con el del modelo que sí los incluye. En la salida de R, el estadístico se encuentra en la columna F, y el \(p\)-valor asociado, en la columna Pr(>F).

¿Para qué sirve? Es un indicador numérico que mide cuánta discrepancia o “conflicto” existe entre lo que se observa en los datos reales y la hipótesis nula (\(H_0\)). Funciona como una balanza de evidencia:

  • Si el estadístico es cercano a \(0\) o a \(1\), los datos se comportan justo como predice la hipótesis nula (no hay efecto ni relación).
  • Si el estadístico es un número grande, los datos reales se alejan mucho de la hipótesis nula, lo que aporta evidencia suficiente para rechazarla.

3.5 Criterio de decisión e Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

Situación Decisión Interpretación
\(p\text{-valor} < 0.05\) Se rechaza \(H_0\) \(X\) causa a \(Y\) en el sentido de Granger: los valores pasados de \(X\) ayudan a pronosticar \(Y\).
\(p\text{-valor} > 0.05\) No se rechaza \(H_0\) \(X\) no causa a \(Y\) en el sentido de Granger: los valores pasados de \(X\) no aportan información adicional para pronosticar \(Y\).

3.6 Implementación de un ejemplo.

Implementación de un ejemplo: A continuación se utiliza la función grangertest() para examinar si los valores pasados de dlny ayudan a predecir los valores futuros de dlrm1 y, posteriormente, la relación inversa. Las hipótesis de cada prueba son:

\[ \begin{aligned} \text{Prueba 1:}\quad & H_0: \text{dlny no causa a dlrm1} \quad \text{frente a} \quad H_1: \text{dlny causa a dlrm1} \\ \text{Prueba 2:}\quad & H_0: \text{dlrm1 no causa a dlny} \quad \text{frente a} \quad H_1: \text{dlrm1 causa a dlny} \end{aligned} \]

Nota metodológica: Se utilizó la prueba de causalidad de Granger sobre las primeras diferencias (dlrm1 y dlny) para garantizar la estacionariedad de las series. Dado que en la sección 2 se identificó la presencia de cointegración entre las variables en niveles, los resultados de grangertest() deben interpretarse como causalidad de corto plazo. Para un análisis integral que incluya la causalidad de largo plazo bajo cointegración, la teoría econométrica contempla la estimación de un Modelo de Corrección de Errores (VECM).

# 1. Se calculan las primeras diferencias de las series
dif <- diff(datos[, c("lrm1", "lny")])
colnames(dif) <- c("dlrm1", "dlny")

# 2. Se guardan las dos pruebas en objetos
prueba1 <- grangertest(dlrm1 ~ dlny, order = 4, data = dif)
prueba2 <- grangertest(dlny ~ dlrm1, order = 4, data = dif)

# 3. Se imprime la primera prueba
prueba1

Prueba 1 (\(H_0\): dlny no causa a dlrm1). Como \(p\text{-valor} < 0.05\), se rechaza \(H_0\). Se infiere que conocer los valores pasados de dlny es valioso para pronosticar los valores futuros de dlrm1.

# 4. Se imprime la segunda prueba
prueba2

Prueba 2 (\(H_0\): dlrm1 no causa a dlny). Como \(p\text{-valor} > 0.05\), no se rechaza \(H_0\). Se infiere que conocer los valores pasados de dlrm1 no es valioso para pronosticar los valores futuros de dlny.

Conclusión: Existe causalidad unidireccional en el sentido de Granger, de dlny hacia dlrm1: el ingreso real ayuda a pronosticar la demanda real de dinero, pero no ocurre lo contrario.

Referencias