A33-Cointegración y Causalidad
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
Ciclo II - 2025
“A33-Cointegración y Causalidad”
Asignatura: Métodos para el Análisis Económico
Grupo teórico: GT-01
Docente: MSF Carlos Ademir Pérez Alas
Integrantes:
Jaime Elías Barahona Martínez BM23012
Jefferson Josué Sandoval Pérez SP23029
Mariana Ivette Zelaya Castillo ZC23003
Ciudad Universitaria, San Salvador – 30 de noviembre de 2025
1. Prueba de Raíz Unitaria de Dickey & Fuller
Propósito de la Prueba
La prueba de Dickey-Fuller (DF) y su extensión aumentada (ADF) se utilizan para determinar si una serie de tiempo contiene una raíz unitaria, es decir, si es no estacionaria y sigue un proceso de camino aleatorio. Esta prueba es fundamental en econometría para evitar el problema de regresión espuria y determinar el orden de integración de las variables antes de realizar análisis de cointegración.
Hipotesis de prueba
Planteamiento Formal
Sea un proceso AR(1):
\[y_t = \phi y_{t-1} + \varepsilon_t\]
Restando \(y_{t-1}\) en ambos lados:
\[\Delta y_t = (\phi - 1) y_{t-1} + \varepsilon_t = \alpha y_{t-1} + \varepsilon_t\]
Donde:
\[\alpha = (\phi - 1)\].
Hipótesis Estadísticas
Hipótesis Nula (\(H_0\)): \(\alpha = 0\) (la serie tiene una raíz unitaria, es no estacionaria).
Hipótesis Alternativa (\(H_1\)): \(\alpha < 0\) (la serie es estacionaria).
Bajo \(H_0\), \(\phi = 1\), implica que la serie sigue un camino aleatorio con varianza que crece en el tiempo.
Bajo \(H_1\), \(\phi < 1\), indicando que la serie es estacionaria y revertirá a su media.
Sintaxis en R
Parámetros de la Función de Prueba ADF
x: Vector numérico que contiene la serie de tiempo a analizar.alternative: Especifica la hipótesis alternativa."stationary": La serie es estacionaria (\(\mathbf{H_1}\))."explosive": La serie es explosiva (rara vez usada).
k: Número de rezagos a incluir en la regresión ADF.Por defecto: \(k = \text{trunc}((\text{length}(x)-1)^{1/3})\) (fórmula estándar para la selección de rezagos).
Puede especificarse manualmente basado en criterios de información.
Modelos de la Prueba ADF
La prueba ADF considera tres especificaciones principales para la regresión:
Modelo A (con deriva y tendencia)
Incluye un intercepto (\(\delta_0\)) y una tendencia temporal (\(\delta_1 T\)): \[\Delta y_t = \delta_0 + \delta_1 T + \alpha y_{t-1} + \sum_{i=1}^{k} \gamma_i \Delta y_{t-i} + \varepsilon_t\]
Modelo B (solo con deriva)
Incluye solo un intercepto (\(\delta_0\)): \[\Delta y_t = \delta_0 + \alpha y_{t-1} + \sum_{i=1}^{k} \gamma_i \Delta y_{t-i} + \varepsilon_t\]
Modelo C (sin componentes determinísticos)
No incluye intercepto ni tendencia: \[\Delta y_t = \alpha y_{t-1} + \sum_{i=1}^{k} \gamma_i \Delta y_{t-i} + \varepsilon_t\]
Estadístico de Prueba
El estadístico Dickey-Fuller aumentado (\(\text{ADF}\)) que se calcula como:
\[\text{ADF} = \frac{\hat{\alpha}}{\text{SE}(\hat{\alpha})}\]
Donde \(\hat{\alpha}\) es el estimador de MCO (Mínimos Cuadrados Ordinarios) del parámetro \(\alpha\) en la regresión ADF, y \(\text{SE}(\hat{\alpha})\) es su error estándar.
Valores Críticos
La salida incluye valores críticos para diferentes niveles de significancia: 1%, 5% y 10%.
Nota: Los valores críticos de Dickey-Fuller son más negativos que los de la distribución t-student convencional.
Criterio de Decisión Basado en el \(p\)-valor
Se utiliza la siguiente regla para decidir si la serie es estacionaria:
- Regla de Decisión:
- Si \(|\text{ADF estadístico}| > |\text{valor crítico}| \implies\) Se rechaza \(H_0\) (La serie es estacionaria).
- Si \(|\text{ADF estadístico}| \leq |\text{valor crítico}| \implies\) No se rechaza \(H_0\) (La serie tiene raíz unitaria).
En la práctica, el criterio más común es comparar el \(p\)-valor con el nivel de significancia (\(\alpha\)), que usualmente se fija en \(0.05\):
- \(p\)-valor \(< 0.05\): Rechazar \(H_0\) (La serie es estacionaria).
- \(p\)-valor \(\geq 0.05\): No rechazar \(H_0\) (La serie es no estacionaria).
Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.
Rechazo de \(H_0\)
Cuando se rechaza \(H_0\), el resultado indica que la serie de tiempo es estacionaria (no contiene raíz unitaria). Esto implica que sus propiedades estadísticas (media, varianza y autocovarianza) son constantes en el tiempo.
No Rechazo de \(H_0\)
Cuando no se rechaza \(H_0\), el resultado sugiere que la serie tiene una raíz unitaria y, por lo tanto, es no estacionaria. Esto implica características como:
- Varianza que crece con el tiempo.
- Efectos persistentes de los shocks (los choques no se disipan).
- Posible problema de regresión espuria si se usa en modelos de regresión con otras series no estacionarias.
Ejemplo de Implementación
library(tseries)
# Crear datos de ejemplo
set.seed(123)
serie_estacionaria <- arima.sim(n = 100, model = list(ar = 0.7))
serie_raiz_unitaria <- cumsum(rnorm(100))
# Aplicar prueba ADF
adf_estacionaria <- adf.test(serie_estacionaria)
adf_raiz_unitaria <- adf.test(serie_raiz_unitaria)## [1] "Resultado serie ESTACIONARIA:"
##
## Augmented Dickey-Fuller Test
##
## data: serie_estacionaria
## Dickey-Fuller = -2.9558, Lag order = 4, p-value = 0.1807
## alternative hypothesis: stationary
## [1] "Resultado serie con RAIZ UNITARIA:"
##
## Augmented Dickey-Fuller Test
##
## data: serie_raiz_unitaria
## Dickey-Fuller = -1.8863, Lag order = 4, p-value = 0.6237
## alternative hypothesis: stationary
2. Cointegración en el enfoque de Soren Johansen.
Propósito de la prueba, es decir ¿Para qué se usa?
El propósito fundamental de esta prueba es resolver el problema que surge al medir relaciones entre variables que poseen una tendencia temporal definida, denominadas variables no estacionarias . El objetivo es discriminar entre relaciones falsas y verdaderas, ya que las regresiones estándar con este tipo de variables suelen arrojar resultados espurios (aparentemente significativos pero falsos) a menos que las variables estén cointegradas . Así, la prueba busca determinar si existe una relación de equilibrio a largo plazo entre las variables, lo que implica que, aunque crezcan o disminuyan en el tiempo, lo hacen de una forma acompasada impidiendo que el error entre ellas crezca indefinidamente . Específicamente, bajo un enfoque multivariado como el que se requiere cuando hay más de dos variables, el propósito es identificar si existe una combinación lineal de las variables, que son integradas de orden 1 (\(I(1)\)), que resulte ser estacionaria o de orden 0 (\(I(0)\)) . Este análisis se basa en estimar los valores de un vector \(\beta\) que generen dicho proceso estocástico estacionario, actuando este vector de cointegración como un “atractor” o punto de equilibrio estructural \(\beta'X_t\) alrededor del cual se mueven los agentes económicos.
Además, esta prueba es indispensable para determinar el “rango de cointegración”, es decir, el número de vectores de cointegración existentes en un sistema de variables. Si un vector \(X_t\) tiene \(n\) componentes, la prueba busca identificar cuántas relaciones de equilibrio existen (hasta \(n-1\)) . Finalmente, confirmar la cointegración es el requisito previo para poder estimar un Modelo de Corrección de Errores (ECM), el cual permite analizar tanto los efectos de largo plazo (donde las estimaciones son superconsistentes) como los ajustes dinámicos de corto plazo, evitando así la pérdida de información valiosa que ocurriría si simplemente se diferenciaran las series .
Hipótesis de la prueba. (explique el porqué de las hipótesis Nula y Alternativa)
El enfoque de Johansen se centra en determinar el rango de la matriz de coeficientes de largo plazo (\(\Pi\)) dentro del Modelo de Corrección de Errores Vectorial (VECM). Este rango, denotado por \(r\), es crucial porque representa el número de relaciones de cointegración (o vectores de cointegración) linealmente independientes que existen entre las variables del sistema. Si tenemos \(n\) variables, el rango \(r\) puede ir desde \(0\) hasta \(n-1\).
Las pruebas de Johansen (del Trazo y del Máximo Valor Propio) se llevan a cabo de forma secuencial. La formulación general de las hipótesis es la siguiente:
Hipótesis Nula (\(f{H_0}\))
\[H_0: \text{El rango de cointegración es a lo sumo } r. \quad (r \le k)\] El test comienza típicamente con la hipótesis más restrictiva, asumiendo ausencia de cointegración (\(k=0\)):
\[{H_0^{(0)}: r = 0}\] Donde \(r\) es el número de vectores de cointegración y \(k\) es el número de relaciones bajo la hipótesis nula.
Hipótesis Alternativa (\({H_A}\))
\[H_A: \text{El rango de cointegración es mayor a } r. \quad (r > k)\] Siguiendo la secuencia, la alternativa a la hipótesis inicial (\(r=0\)) es:
\[{H_A^{(0)}: r > 0}\] Esto significa que existe al menos una relación de cointegración.
Explicación
La hipótesis nula (\({H_0}\)) siempre representa la posición de no-efecto o no-relación que se desea refutar. Por conservadurismo estadístico, se asume la posición más cautelosa: que no existe una relación de largo plazo estable (\(r=0\)). La implicación de \(r=0\) (no cointegración) es que, si \(H_0: r=0\) no es rechazada, la matriz de largo plazo \(\Pi\) es una matriz nula (o tiene rango cero). Esto significa que las variables se comportan de forma independiente y que cualquier relación que se observe es espuria, por lo que cada serie debe ser analizada en diferencias, volviéndose estacionaria. Además, por su naturaleza secuencial, en el proceso de prueba de Johansen, \(H_0\) se plantea de forma inclusiva y secuencial (\(H_0: r \le k\)). Se prueban valores crecientes de \(k\) (desde \(0\) hasta \(n-1\)) hasta que la hipótesis no es rechazada. El primer \(k\) para el cual no se rechaza \(H_0\) es el rango de cointegración que se selecciona.
La hipótesis alternativa (\({H_A}\)) es la afirmación de la existencia del equilibrio a largo plazo. En la investigación econométrica se busca confirmar que existe un equilibrio teórico subyacente (un “atractor”) entre las series, por lo que \(H_A\) postula que la información de largo plazo no se pierde y que las variables están ligadas. La implicación de \({r > k}\) es que, si se rechaza la \(H_0\), se acepta la \(H_A\), lo que valida que el número de relaciones de equilibrio es mayor al supuesto (\(k\)). En la prueba inicial (\(H_0: r=0\)), aceptar \(H_A: r>0\) implica que la combinación lineal de las series \(I(1)\) es de hecho un proceso \(I(0)\), es decir, la relación de largo plazo es estacionaria y, por tanto, no espuria. La aceptación de \(H_A\) impulsa a continuar con el test secuencial (probando \(H_0: r \le 1\), luego \(r \le 2\), etc.) hasta encontrar el rango máximo de cointegración (\(r\)).
Sintaxis de implementación en R, explicando cada uno de los argumentos.
Para implementar el enfoque de Johansen en R, se utiliza comúnmente la función ca.jo() del paquete urca. Esta función realiza las pruebas del Trazo (Trace) y del Máximo Valor Propio (\(\lambda_{max}\)).
La sintaxis básica para la función es la siguiente:
library(urca)
ca.jo (x,
type = c ("eigen", "trace"),
ecdet = c ("none", "const", "trend"),
K = 2,
spec = c ("largo plazo", "transitorio"),
temporada = NULL,
dumvar = NULL)1. x
El objeto que contiene la serie de tiempo.
Es un objeto de clase matrix o data.frame que contiene las variables en niveles (no diferenciadas) que se presumen ser \(I(1)\) y cointegrar. La metodología de cointegración de Johansen requiere que todas las series sean de orden de integración 1 .
2. K
Retardos (lags) del VECM. Es un número entero que indica el número de retardos (lags) del Vector Autorregresivo (VAR) subyacente que se utiliza para modelar las variables. Nota: En el VECM se especifica \(K-1\) retardos de las primeras diferencias. El valor de \(K\) se determina generalmente mediante criterios de información (como AIC o BIC) en el VAR inicial.
3. type
El estadístico de prueba a calcular. Acepta dos valores principales:
- trace: Calcula la prueba del Trazo (\(\lambda_{trace}\)).
- eigen: Calcula la prueba del Máximo Valor Propio (\(\lambda_{max}\)).
Ambos tests son fundamentales en el enfoque de Johansen y se usan de forma complementaria .
4. ecdet
Especificación de los términos determinísticos. Define la forma en que el intercepto y/o la tendencia entran en la relación de cointegración y en la parte de corto plazo del VECM. Existen cinco casos posibles:
- none: No hay ni intercepto ni tendencia.
- const: Intercepto en la relación de cointegración (el vector \(\beta\)).
- trend: Intercepto y tendencia en la relación de cointegración.
- both: Intercepto en el corto plazo y tendencia en el largo plazo.
- H*: Tendencia cuadrática.
La selección del modelo de tendencia es crucial ya que afecta los valores críticos de las pruebas y la matriz de largo plazo .
5. spec
Especificación del modelo. Define el tipo de modelo de cointegración. Generalmente se usa transitory (transitorio), que es el modelo estándar de Johansen/VECM.
6. season
Variables dummy estacionales. Permite incluir un vector de dummies estacionales en el modelo, lo cual es relevante si las series presentan patrones estacionales.
7. dumvar
Variables dummy exógenas. Permite incluir variables exógenas de intervención o dummies de impulso (por ejemplo, para capturar eventos o outliers) en el modelo de corto plazo, manteniendo el foco en el equilibrio de largo plazo.
Estadístico de prueba (haga referencia en la salida que genera R)
El procedimiento de Johansen se basa en la descomposición de los valores propios (o eigenvalores) de una matriz de largo plazo. Este método utiliza dos estadísticos de máxima verosimilitud (MV) para probar secuencialmente el rango de cointegración (\(r\)): el estadístico del Trazo (\(\lambda_{trace}\)) y el estadístico del Máximo Valor Propio (\(\lambda_{max}\)).
Estadístico del Trazo (\(\mathbf{\lambda_{trace}}\))
Este estadístico evalúa la hipótesis nula de que el número de vectores de cointegración es a lo sumo \(r\) (\(H_0: r \le k\)) contra la alternativa de que el número de vectores es igual al número de variables \(n\) (\(H_A: r = n\)).
El estadístico del Trazo se calcula como la suma de los \(n-r\) valores propios más pequeños, donde \(T\) es el tamaño de la muestra y \(\hat{\lambda}_i\) son los \(n\) valores propios estimados :
\[{\lambda_{trace} = -T \sum_{i=r+1}^{n} \ln (1 - \hat{\lambda}_i)}\]
El propósito de La prueba del Trazo evalúa si la energía del sistema, medida por los \(n-r\) valores propios, es lo suficientemente pequeña como para ser considerada cero.
Para realizarlo Se comienza probando \(H_0: r=0\) (no cointegración). Si se rechaza, se procede a probar \(H_0: r \le 1\), y así sucesivamente, hasta que la hipótesis nula no pueda ser rechazada .
Estadístico del máximo valor propio (\(\mathbf{\lambda_{max}}\))
Este estadístico es una prueba más focalizada. Evalúa la hipótesis nula de que el número de vectores de cointegración es \(r\) (\(H_0: r = k\)) contra la alternativa de que el número es exactamente uno más (\(H_A: r = k+1\)).
El estadístico del Máximo Valor Propio se calcula utilizando únicamente el \((r+1)\)-ésimo valor propio, que es el más grande de los que no están incluidos en la hipótesis nula :
\[{\lambda_{max} = -T \ln (1 - \hat{\lambda}_{r+1})}\] Esta prueba busca determinar si la adición de un vector de cointegración extra (\(r+1\)) es suficiente para explicar la relación de equilibrio.
Referencia en la salida de R
Cuando se ejecuta el código en R utilizando la función ca.jo() del paquete urca (por ejemplo, summary(ca.jo(x, type=“trace”, …))), la salida muestra los siguientes valores de estos estadísticos:
- test o test statistic:
Aquí se listan los valores calculados de \(\lambda_{trace}\) o \(\lambda_{max}\), dependiendo del argumento type utilizado en la función.
- eigenval:
Esta columna (o una similar) muestra los valores propios estimados (\(\hat{\lambda}_i\)) ordenados de mayor a menor. Los estadísticos de prueba se construyen a partir de estos valores.
- r (o r <= k):
Esta fila indica la hipótesis nula secuencial que se está probando, como \(r \le 0\), \(r \le 1\), etc.
Criterio de decisión (haga referencia en la salida que genera R)
El criterio de decisión en la prueba de Johansen, tanto para el estadístico del Trazo (\(\lambda_{trace}\)) como para el del Máximo Valor Propio (\(\lambda_{max}\)), se basa en comparar el valor del estadístico de prueba calculado con los valores críticos tabulados por Johansen y Osterwald-Lenum (dependiendo del modelo de tendencia elegido).
Mecanismo de decisión
El criterio general de decisión es el siguiente: Comparación: El valor del estadístico de prueba (test statistic o columna test en R) se compara con el valor crítico correspondiente al nivel de significancia elegido (usualmente 10%, 5% o 1%). Regla de Rechazo: \[\text{Si el valor del estadístico de prueba } > \text{Valor Crítico (al nivel } \alpha)\] \[\text{Entonces, se } {RECHAZA} \text{ la Hipótesis Nula } (H_0)\] Regla de No Rechazo: \[\text{Si el valor del estadístico de prueba } \le \text{Valor Crítico (al nivel } \alpha)\] \[\text{Entonces, se } {NO\ RECHAZA} \text{ la Hipótesis Nula } (H_0)\]
Referencia en la salida de R
La función ca.jo() en R (paquete urca) simplifica esta decisión al presentar los valores críticos tabulados junto al estadístico calculado. El criterio de decisión se implementa de manera secuencial. La salida de R, para una prueba de Trazo o de Máximo Valor Propio.
Uso del P-valor (implicito en la salida)
Aunque la salida de ca.jo() no muestra directamente el p-valor, en el análisis de series de tiempo es una herramienta común. El p-valor representa la probabilidad de obtener el estadístico de prueba observado si la hipótesis nula fuera cierta. Criterio de Rechazo usando P-valor:
\[\text{Si } p\text{-valor} < \alpha \text{ (nivel de significancia, ej. 0.05)}\] \[\text{Entonces, se } {RECHAZA} \text{ la Hipótesis Nula }\] El uso de los valores críticos de la tabla (10pct, 5pct, 1pct) es equivalente a usar el p-valor para la toma de decisiones.
Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.
La interpretación de la decisión de la prueba de Johansen está directamente relacionada con la existencia de la relación de equilibrio a largo plazo entre las variables y las implicaciones para el modelado econométrico.
Interpretación del rechazo de la hipótesis nula (\(\mathbf{H_0}\))
Decisión: Se rechaza \(H_0: r = k\) (o \(H_0: r \le k\))
Conclusión: Se acepta la hipótesis alternativa (\(H_A: r > k\) o \(H_A: r = k+1\)).
Cosas a tener en cuenta:
Existencia de Cointegración: Si se rechaza \(H_0: r=0\) a favor de \(H_A: r>0\), existe al menos una relación de cointegración entre las \(n\) variables.
Relación No Espuria: El rechazo de \(H_0\) indica que una combinación lineal de series \(I(1)\) es \(I(0)\), por lo que la relación de largo plazo no es espuria y refleja un vínculo económico válido.
Modelado VECM: Se justifica el uso del VECM, que incorpora la relación de equilibrio y modela los ajustes dinámicos hacia dicho equilibrio.
Interpretación del No Rechazo de la hipótesis nula (\(\mathbf{H_0}\))
Decisión: No se rechaza \(H_0: r = k\) (o \(H_0: r \le k\))
Conclusión: El rango de cointegración se considera igual al valor de \(k\).
Implicaciones Clave:
Determinación del Rango: El primer \(k\) para el cual no se rechaza la hipótesis nula se toma como el rango de cointegración (\(r\)).
Rango Cero (No Cointegración): Si no se rechaza \(H_0: r=0\), las variables no cointegran.
Implicación econométrica: No hay relación de largo plazo; existe riesgo de regresión espuria. Se debe trabajar con primeras diferencias (VAR en diferencias, no VECM).
Rango Positivo (\(r>0\)): Si se rechazan rangos bajos (p. ej., \(r=0\) y \(r\le 1\)) pero no uno superior (p. ej., \(r\le 2\)), entonces \(r=2\). Esto indica dos vectores de cointegración linealmente independientes que describen las relaciones de equilibrio.
Implementación de un ejemplo.
set.seed(123)
# Número de observaciones
T <- 200
# Error estacionario
u <- rnorm(T, 0, 1)
# Paseo aleatorio X_t
x <- cumsum(rnorm(T))
# Serie Y_t cointegrada con X_t
y <- 2*x + u
# Se convierte a matriz para ca.jo()
dat <- cbind(y, x)
colnames(dat) <- c("Y","X")
plot.ts(dat)# Aplicando la prueba:
library(urca)
jotest <- ca.jo(dat, type="trace", ecdet="none", K=2)
summary(jotest)##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend
##
## Eigenvalues (lambda):
## [1] 0.38924384 0.01045972
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 2.08 6.50 8.18 11.65
## r = 0 | 99.71 15.66 17.95 23.52
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## Y.l2 X.l2
## Y.l2 1.000000 1.00000
## X.l2 -1.991159 -73.69818
##
## Weights W:
## (This is the loading matrix)
##
## Y.l2 X.l2
## Y.d -0.99498168 0.0005660977
## X.d 0.08469744 0.0002760936
3. Causalidad en el sentido de Granger.
Propósito de la prueba, es decir ¿Para qué se usa?
La prueba de causalidad de Granger es un test estadístico que se emplea para determinar si una serie temporal puede ser útil para pronosticar otra. En esencia, analiza si los valores pasados de una variable X aportan información relevante que mejore la predicción de otra variable Y. Así, el propósito fundamental del test es evaluar la capacidad predictiva entre dos series de tiempo: se examina si una serie “Granger-causa” a la otra en el sentido de aportar información anticipada para su comportamiento futuro.
Hipótesis de la prueba. (explique el porqué de las hipótesis Nula y Alternativa)
Suponemos dos series temporales estacionarias \(X_t\) y \(Y_t\) para probar si \(X\) “Granger-causa” a \(Y\), comparamos dos modelos.
Modelo restringido (sin rezagos de \(X\)):
\[Y_t = \alpha_0 + \sum_{i=1}^{p} \alpha_i Y_{t-i} + \varepsilon_t\] Modelo irrestricto (incluye rezagos de \(X\)):
\[Y_t = \alpha_0 + \sum_{i=1}^{p} \alpha_i Y_{t-i} + \sum_{j=1}^{p} \beta_j X_{t-j} + \eta_t\] Donde \(p\) es el número de rezagos (lags), \(\varepsilon_t\) y \(\eta_t\) son errores.
La idea es: si los coeficientes \(\beta_j\) son significativamente distintos de cero, los valores pasados de \(X\) aportan información adicional para explicar \(Y_t\), más allá de lo que explican los rezagos de \(Y\) por sí solos.
Entonces, definimos:
\[ \begin{aligned} H_0 &: \beta_1 = \beta_2 = \cdots = \beta_p = 0 \\ H_1 &: \text{Al menos uno de } \beta_j \neq 0 \quad (j=1, \dots, p) \end{aligned} \]
Hipótesis de la prueba
- Hipótesis nula (\(H_0\)):
\[H_0 : \beta_1 = \beta_2 = \cdots = \beta_p = 0\]
Equivalente a decir que los valores rezagados de \(X\) no aportan información adicional para predecir \(Y\). En otras palabras: “\(X\) no Granger-causa a \(Y\)”.
- Hipótesis alternativa (\(H_1\)):
\[H_1 : \exists j \in \{1, \dots, p\} \text{ tal que } \beta_j \neq 0\]
Es decir que al menos un rezago de \(X\) ayuda a predecir significativamente \(Y\). Equivalente a afirmar que “\(X\) Granger-causa a \(Y\)”.
Justificación de por qué esas hipótesis
La hipótesis nula representa la ausencia de relación predictiva: asume que conocer el pasado de \(X\) no mejora la predicción de \(Y\) más allá de lo que ya se sabe con el pasado de \(Y\). Es el punto de partida neutral: si no hay evidencia, nos quedamos con la nula.
La hipótesis alternativa representa la situación de relación predictiva relevante: si al incluir los rezagos de \(X\) mejora el ajuste del modelo (menor error, más poder explicativo), entonces hay evidencia de que \(X\) puede “causar” (en sentido predictivo) \(Y\).
Esa estructura permite un test de hipótesis clásico: se calcula un estadístico (por ejemplo F-test) que compara ambos modelos (restringido vs no restringido). Si la mejora es suficientemente grande (p-valor pequeño), se rechaza \(H_0\) y se acepta \(H_1\) concluyendo que hay causalidad de Granger.
Sintaxis de implementación en R, explicando cada uno de los argumentos.
Sintaxis de implementación en R
Para llevar a cabo la prueba de causalidad de Granger en R, la herramienta estándar y más utilizada es la función grangertest del paquete lmtest.
A continuación se presenta la sintaxis general de la función:
Explicación de los argumentos
formula: Define la relación de causalidad que se desea someter a prueba. Se expresa en el formatoY ~ X. En este contexto, \(Y\) representa la variable dependiente (la serie que queremos predecir) y \(X\) la variable independiente (la posible causa). Esta notación indica que estamos probando la hipótesis de si “\(X\) Granger-causa a \(Y\)”. Si se invierte el orden (X ~ Y), se estaría probando la causalidad en la dirección opuesta.order: Es un valor numérico entero que indica el número de rezagos (lags) a incluir en el modelo. Este argumento corresponde directamente a la variable \(p\) definida en los modelos matemáticos (restringido e irrestricto). Determina cuántos periodos hacia atrás del pasado de \(X\) y \(Y\) se utilizarán en la regresión. Si no se especifica, R utiliza 1 por defecto, aunque lo correcto es definirlo basándose en criterios de información previos.data: Especifica el objeto (generalmente un Data Frame o una serie de tiempozoo/ts) que contiene las variables mencionadas en la fórmula. Es necesario para que R sepa dónde buscar las series \(X\) e \(Y\).
Estadístico de prueba (haga referencia en la salida que genera R)
Estadístico de prueba
Para contrastar la hipótesis nula, la función
grangertest() utiliza un estadístico F de Fisher-Snedecor
(o test de Wald). Este estadístico evalúa si la reducción en la suma de
los errores al cuadrado (SSR) al incluir los rezagos de \(X\) es estadísticamente significativa en
comparación con el modelo que solo usa rezagos de \(Y\).
En la salida (output) que genera R, este procedimiento se presenta mediante una Tabla de Análisis de Varianza (ANOVA).
Referencia en la salida de R
ejecutar la prueba, R muestra una tabla que compara dos modelos:
Model 1: Corresponde al Modelo Restringido (solo incluye rezagos de la variable dependiente \(Y\)).
Model 2: Corresponde al Modelo Irrestricto (incluye rezagos de \(Y\) y de \(X\)).
El valor del estadístico se encuentra específicamente en la columna etiquetada como F
Matemáticamente, este valor que R reporta en la columna F se calcula como:
\[F = \frac{(SSR_R - SSR_I)/p}{SSR_I/(n - k - 1)}\]
Donde:
- \(SSR_R\) es la suma de residuos al cuadrado del Modelo 1 (Restringido).
- \(SSR_I\) es la suma de residuos al cuadrado del Modelo 2 (Irrestricto/Completo).
- \(p\) es el número de rezagos
(grados de libertad del numerador, columna
Dfen R). - \(n - k - 1\) son los grados de
libertad del denominador (columna
Res.Dfen R).
Criterio de decisión (haga referencia en la salida que genera R)
El criterio para decidir si se rechaza o no la hipótesis nula se basa en el p-value asociado al estadístico F calculado. Se compara este valor con un nivel de significancia \(\alpha\) predeterminado, que usualmente es del 0.05 en trabajos econométricos estándar.
Referencia en la salida de R
En la tabla ANOVA generada por la función grangertest(),
el P-value se encuentra en la última columna, encabezada como
Pr(>F).
Para tomar la decisión, observamos el valor numérico en esa columna y aplicamos la siguiente regla:
Si
Pr(>F)\(< 0.05\):Existe evidencia estadística suficiente para Rechazar la Hipótesis Nula (\(H_0\)).(En R, esto suele ir acompañado de asteriscos*,**o***al lado del número, indicando el nivel de significancia).Si
Pr(>F)\(\ge 0.05\):No existe evidencia suficiente para rechazar la Hipótesis Nula. Se No Rechaza \(H_0\).
Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.
Una vez comparado el P-value con el nivel de significancia (usualmente 0.05), debemos redactar la conclusión final del estudio. A continuación se detalla qué implica cada escenario:
1. Caso: Rechazo de la Hipótesis Nula (\(p < 0.05\))
Si el P-value es menor al nivel de significancia, rechazamos \(H_0\) y aceptamos la Hipótesis Alternativa (\(H_1\)).
Conclusión estadística: Existe evidencia suficiente para afirmar que los coeficientes de los rezagos de \(X\) son distintos de cero.
Interpretación económica: Concluimos que “\(X\) Granger-causa a \(Y\)”. Esto significa que el comportamiento pasado de la variable \(X\) contiene información útil y estadísticamente significativa para predecir el comportamiento futuro de la variable \(Y\), más allá de lo que la propia historia de \(Y\) puede predecir. Existe una precedencia temporal de \(X\) sobre \(Y\).
2. Caso: No rechazo de la Hipótesis Nula (\(p \ge 0.05\))
Si el P-value es mayor o igual al nivel de significancia, no rechazamos \(H_0\).
Conclusión estadística: No hay evidencia suficiente para decir que los coeficientes de los rezagos de \(X\) sean distintos de cero; estadísticamente se asumen nulos.
Interpretación económica: Concluimos que “\(X\) NO Granger-causa a \(Y\)”. Esto implica que conocer la historia pasada de \(X\) no mejora la predicción de \(Y\). Los movimientos pasados de \(X\) no anteceden sistemáticamente a los movimientos de \(Y\) en el modelo especificado.
Implementación de un ejemplo.
- Para este ejemplo, utilizaremos el conjunto de datos ChickEgg , precargado en el paquete lmtest. Este conjunto de datos contiene valores para el número de huevos producidos y el número de pollos en EE. UU. entre 1930 y 1983:
#cargar
library(lmtest)
#cargar conjunto de datos ejemplo (Huevos y Gallinas)
data("ChickEgg")
#ver las primeras seis filas del conjunto de datos
head(ChickEgg)## chicken egg
## [1,] 468491 3581
## [2,] 449743 3532
## [3,] 436815 3327
## [4,] 444523 3255
## [5,] 433937 3156
## [6,] 389958 3081
- A continuación, usaremos la función
grangertest()para realizar una prueba de causalidad de Granger y comprobar si el número de huevos producidos predice el número futuro de pollos. Ejecutaremos la prueba con tres retardos:
## 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
Aquí se explica cómo interpretar el resultado:
Modelo 1: Este modelo intenta predecir el número de pollos utilizando el número de pollos en los tres años anteriores y el número de huevos en los tres años anteriores como variables predictoras.
Modelo 2: Este modelo intenta predecir el número de pollos utilizando únicamente el número de pollos en los tres años anteriores como variables predictoras.
F: Esta es la estadística de la prueba F. Resulta ser 5,405.
Pr(>F): Este es el valor p que corresponde al estadístico de prueba F. Resulta ser 0,002966.
Dado que el valor p es menor que 0,05, podemos rechazar la hipótesis nula de la prueba y concluir que conocer el número de huevos es útil para predecir el número futuro de pollos.
prueba de causalidad de Granger a la inversa
Aunque rechazamos la hipótesis nula de la prueba, es posible que se produzca una causalidad inversa. Es decir, es posible que el número de gallinas esté provocando un cambio en el número de huevos.
Para descartar esta posibilidad, necesitamos realizar la prueba de causalidad de Granger a la inversa, utilizando los pollos como variable predictora y los huevos como variable de respuesta :
#realizar prueba de causalidad de Granger en sentido inverso
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
El valor p de la prueba es 0,6238. Dado que no es menor que 0,05, no podemos rechazar la hipótesis nula. Es decir, el número de pollos no predice el número futuro de huevos.
Por tanto, podemos concluir que conocer el número de huevos es útil para predecir el número futuro de pollos.