UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
MÉTODOS PARA EL ANÁLISIS ECONÓMICO
LABORATORIO 3: COINTEGRACIÓN Y CAUSALIDAD
DOCENTE:
MSF. CARLOS ADEMIR PÉREZ ALAS.
INTEGRANTES:
ARITA POLANCO, BRIAN GUADALUPE. AP18007.
MEJÍA HERRERA, NORMAN JAVIER. MH18013.
RAMÍREZ URQUIZA, ALEJANDRA EUNICE. RU18002.
GRUPO:
3
CIUDAD UNIVERSITARIA, SÁBADO 4 DE DICIEMBRE DE 2021.
La mayoría de las Series tienen una tendencia. Su valor medio cambia con el tiempo. Son las llamadas Series no estacionarias.
Algunas Series describen “meandros,” es decir, suben y bajan sin ninguna tendencia obvia o tendencia a revertir hacia algún punto.
Algunas series presentan “Shocks” persistentes. Los cambios repentinos en estas series tardan mucho tiempo en desaparecer.
Algunas series se mueven conjuntamente, es decir tienen “co movimientos positivos,” ejemplo: diferentes tasa de interés.
La “Volatilidad” de algunas Series varía en el tiempo. Muchas series pueden ser más variables en una año que en otro. (Mata 2004)
Desde el punto de vista de la Economía
Se dice que dos o mas series están cointegradas si las mismas se mueven conjuntamente a lo largo del tiempo y las diferencias entre ellas son estables (es decir estacionarias), aún cuando cada serie en particular contenga una tendencia estocástica y sea por lo tanto no estacionaria. De aquí que la cointegración refleja la presencia de un equilibrio a largo plazo hacia el cual converge el sistema económico a lo largo del tiempo. Las diferencias (o término error) en la ecuación de cointegración se interpretan como el error de desequilibrio para cada punto particular de tiempo.
Desde el punto de vista de la Econometría
Dos o más series de tiempo que son no estacionarias de orden I están cointegradas si existe una combinación lineal de esas series que sea estacionaria o de orden I. El vector de coeficientes que crean esta serie estacionaria es el vector cointegrante.
Según S. Johansen
Según S. Johansen la mayor parte de las series temporales son no estacionarias y las técnicas convencionales de regresión basadas en datos no estacionarios tienden a producir resultados espurios. Sin embargo, las series no estacionarias pueden estar cointegradas si alguna combinación lineal de las series llega a ser estacionaria. Es decir, la serie puede deambular, pero en el largo plazo hay fuerzas económicas que tienden a empujarlas a un equilibrio. Por lo tanto, las series cointegradas no se separarán muy lejos unas de otras debido a que ellas están enlazadas en el largo plazo. (Mata 2004)
El análisis de cointegración es esencial cuando se tiene una combinación de variables que presenten una similitud en el orden de integración. Si se tiene una ecuación con las siguientes condiciones:
Sean las variables \(X_t~I(1)\) , \(Y_t~I(1)\)
\(Y_t=\beta_0+\beta_1X_t+u_t\)
Una combinación lineal de estas variables que sea estacionaria. Entonces, se dice que las variables Y, X están cointegradas.
\(Y_t-\beta_0-\beta_1X_t=u_t\)
El análisis de cointegración es en esencia un análisis multivariado.
Un conjunto de variables se dice que son cointegradas si existe una combinación lineal que genere un proceso estocástico estacionario.
\(y_t=\beta_1x_{1t}+\beta_2x_{2t}+...+\beta_kx_{kt}+u_t\)
\(y_t-\beta_1x_{1t}-\beta_2x_{2t}-...-\beta_kx_{kt}=u_t\)
Vector normalizado
\(\left[1-\beta_1-\beta_2...-\beta_1\right]\left[\begin{matrix}y_t\\x_{1t}\\x_{2t}\\\vdots\\x_{3t}\\\end{matrix}\right]=u_t\)
Así el análisis de cointegración se basa en estimar los valores del vector β que generan un proceso estocástico estacionario.
\(\beta´X_t=u_t\ \rightarrow\ I(0)\)
Se dice que las variables del modelo están cointegrados. Si las series cointegran la regresión entre las dos variables es significativa (no es espuria) y no se pierde información valiosa de largo plazo lo cual sucedería si se estima la regresión en primeras diferencias. (Catalán 2012)
Es una palabra que se utiliza para establecer una relación entre una causa y un efecto. Es decir, hace referencia a los motivos que originan “algo.” No debe confundirse con Correlación ya que existe una gran diferencia entre los mismos, dado que se trata de dos palabras del lenguaje estadístico que son muy utilizadas hoy en día. (Castellanos 2021)
La teoría desarrollada por Clive WJ. Granger ha sido un parteaguas en el análisis de series de tiempo y su uso posterior en el estudio de relaciones causales entre procesos estocásticos en diversos campos de la ciencia. Hoy en día, el articulo seminal del tema ha sido citado en más de 5600 fuentes, sin embargo, su popularidad no fue alcanzada hasta que se desarrollaron pruebas estadísticas que volvieron más sencilla la forma de estudiar dichas relaciones causales.
De otro modo, uno tendría que estudiar las relaciones Granger causales desde el enfoque de análisis espectral, lo cual (fuera del sector académico) podría resultar una completa peripecla.
Christopher A. Sims, [Sims 1972], fue el primero en tratar de probar una relación Granger causal simple. Dicha prueba estuvo basada en representaciones de promedios móviles. No obstante, se encontró con algunos problemas en su procedimiento lo que no permitió que fuese exitosa dicha investigación. En 1976, Thomas J. Sargent, [Sargent 1976], propuso un procedimiento el cual estaba directamente derivado de la definición de Granger causalidad. Es conocido usualmente como procedimiento directo de Granger. Larry D. Haugh y David A. Pierce, [Pierce 1977], propusieron una prueba estadística, popularizando a [Haugh 1976], la cual usaba los residuales de los modelos univariados para x y y. Cheng Hsiao, [Hsiao 1979], propuso un procedimiento para identificar y estimar modelos bivariados los cuales estaban basados en representaciones autorregresivas y pudieran ser también interpretadas como pruebas Granger causales. (Rodrı́guez 2018)
El test de Dickey Fuller es una forma de para determinar si existen raices unitarias en las series temporales y por lo tanto, comprobar si hay o no estacionaridad.
Si los regresores son no estacionarios aparecen dos problemas:
Las estadísticas t, F o \(x^2\) tienen distribuciones no estándar-> no podemos hacer inferencia.
Regresión espuria.
Si se demuestra que los datos son no estacionarios (prueba de raíz unitaria) podemos eliminar el carácter no estacionario diferenciando las series (trabajar con variables variables I(0)).
Esto significa una pérdida de información valiosa proveniente de la teoría económica referente a las propiedades de equilibrio de largo plazo.
Prueba de raices unitarias
Nos interesa el orden de integración de las series. Consideremos el siguiente modelo:
\(Y_t=μ+ϕ_₁ Y_t-_1+βt+ε_t\)
Integración de las series
Estacionario con tendencia determinística - > \(μ≠0, |φ₁|<1,β≠0\)
Random walk con constante y tendencia determinística - > \(μ≠0, |φ₁|=1,β≠0\)
Random walk con constante - > \(μ≠0, |φ₁|=1,β=0\)
Tendencia determinística - > \(μ≠0, |φ₁|=0,β≠0\)
Random walk puro - > \(μ=0, |φ₁|=1,β=0\)
Nos interesa saber si \(φ_1 = 1\) es decir, si el modelo presenta raíz unitaria. Restando \(Y_t-_1\) a ambos lados de la ecuación, obtenemos la siguiente especificación:
\(ΔY_t= μ+ γY_t-_1+βt+ε_t\)
Donde:\(ΔY_t=Y_t-Y_t-_1\)
\(γ=φ-1\)
\(H_0: γ=0\) -> La serie tiene raíz unitaria (NO ESTACIONARIA)
\(H_0: γ<1\) -> La serie no tiene raíz unitaria (ESTACIONARIA)
En el paquete de tseries se puede encontrar el codigo adf.tedt que realiza la prueba de Dickey–Fuller. Calcula la prueba de Dickey-Fuller para el nulo de que x tiene una raíz unitaria.
Sintaxis
adf.test(x, alternative = c(“stationary,” “explosive”), k = trunc((length(x)-1)^(1/3)))
Argumentos de la sintaxis
x: un vector numérico o una serie de tiempo.
alternative: indica la hipótesis alternativa y debe ser una de “estacionaria” (por defecto) o “explosivo.” Puede especificar solo la letra inicial.
k: el orden de retraso para calcular la estadística de prueba.
Detalles
Se utiliza la ecuación de regresión general que incorpora una constante y una tendencia lineal y se calcula el estadístico t para un coeficiente autorregresivo de primer orden igual a uno. El número de retrasos utilizado en la regresión es k. El valor predeterminado de trunc ((length (x) -1) ^ (1/3)) corresponde al límite superior sugerido en la tasa a la que el número de rezagos, k, debe hacerse crecer con el tamaño de muestra para la configuración general ARMA (p, q), tenga en cuenta que para k es igual a cero, el estándar Dickey-Fuller se calcula la prueba. No se permiten valores faltantes
Valores
Una lista con la clase “htest” que contiene los siguientes componentes:
statistic: el valor de la estadística de prueba.
parameter: el orden de retraso.
p.value: el valor p de la prueba.
method: una cadena de caracteres que indica qué tipo de prueba se realizó.
data.name: una cadena de caracteres que da el nombre de los datos.
alternative: una cadena de caracteres que describe la hipótesis alternativa. (Trapletti et al. 2015)
La prueba arroja un valor \(t\) con el cual se tiene que utilizar la tabla para verificar la zona en la que se encuentra.
Brinda el \(valor\ p\), con el cual teniendo el grado de significancia establecido, se puede determinar si hay o no estacionaridad.
##
## Augmented Dickey-Fuller Test
##
## data: dif_variaciones_ts
## Dickey-Fuller = -7.5314, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationary\(Rechazar\ H_0\ si\ p\le\alpha\)
\(No\ Rechazar\ H_0\ si\ p>\alpha\)
Es convencional rechazar la hipótesis nula con un nivel de significación \(\alpha=0.05\). Cuando se rechaza la hipótesis nula se dice que los resultados del estudio son estadísticamente significativos al nivel \(\alpha\).
##
## Augmented Dickey-Fuller Test
##
## data: dif_variaciones_ts
## Dickey-Fuller = -7.5314, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationaryNo se rechaza \(H_0\) si \(valor\ p\) < 0.05
Se rechaza \(H_0\) si \(valor\ p\) > 0.05
Tomado de (Gonzalez Martinez 2019)
Primero guardamos los datos proporcionados en un vector para tener las 35 observaciones y se las asignamos a un variable a la cual denominamos variaciones.
variaciones<-c(67, 63,76,66,69,71,72,71,72,72,83,87,76,79,74,81,76,77,68,68,74,68,69,75,80,81,86,86,79,78,77,77,80,76,67)
plot.ts(variaciones)A partir de la gráfica podemos darnos cuenta que no es estacionaria pues no se ve una tendencia, es decir, las observaciones están muy alejadas las unas de las otras.
A continuación realizare un pequeño análisis exploratorio para conocer cómo se comportan los datos.
## Promedio
mean(variaciones)## [1] 74.88571
## Desviacion estandar
sd(variaciones)## [1] 6.091322
## Autocorrelación
acf(variaciones)## Autocorrelacion parcial
pacf(variaciones)Para intentar solucionar la dispersión de los datos vamos a obtener la diferencia de la serie, para tratar de suavizar ese comportamiento.
dif_variaciones_ts<-diff(variaciones)
plot(dif_variaciones_ts)Ahora vamos comprobar si es estacionaria o no, para ello se realizara la prueba de Dickey-Fuller para la hipótesis nula de una raíz unitaria de una serie temporal univariada x (de manera equivalente, x es una serie temporal no estacionaria).
library(tseries)
adf.test(dif_variaciones_ts, k=0)##
## Augmented Dickey-Fuller Test
##
## data: dif_variaciones_ts
## Dickey-Fuller = -7.5314, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationary
Por lo tanto, se tiene un \(valor\ p\), para un grado de significancia de 5%, se tienen que los datos no son estacionarios. Por lo tanto, no se rechaza la hipótesis nula y se establece que existe una raíz unitaria.
Determinar el orden de integración a cada una de las series incluidas en el modelo.
Especificar un Vector AutoRegresivo (VAR) con las series que resulten integradas de orden I.
Seleccionar las Variables del Modelo.
Seleccionar las transformaciones de las variables, si las hubieren.
Determinar el retardo óptimo del VAR para asegurar que los residuos sean ruido blanco (white noise).
Especificar las variables determinísticas (variables dummy, tendencias,etc).
Diagnóstico del VAR estimado.
Aplicar el procedimiento de Máxima Verosimilitud al vector autorregresivo con el fin de determinar el rango (r) de cointegración del sistema:
Prueba de la Traza.
Prueba del Eigenvalue Máximo (valor propio).
Estimar el modelo Vector de Corrección de Errores.
Determinar la relación causal entre las variables del modelo.
Aplicable a sistemas de ecuaciones.
Este método está basado en modelos VAR (Vectores autorregresivos).
Es un test de máxima verosimilitud que requiere grandes volúmenes de datos (100 ó más).
Prueba la existencia de múltiples vectores de cointegración entre las variables, mediante la prueba de la Traza y del Eigenvalue máximo.
Descansa fuertemente en la relación entre el rango de la matriz y sus raíces características. (Mata 2004)
Johansen propuso 2 tipos de pruebas para \(r\);
Esta prueba está basado en la razón de máxima verosimilitud \(\ln \left[L_{M V}(r) / L_{M V}(r+1)\right]\), y se efectúa secuencialmente para
\(r=0,\ 1,\ \cdots,\ n-1\)
Esta prueba corrobora la hipótesis nula de que el rango de cointegración es \(r\) versus la alterna de que el rango de cointegración es \(r+1\).
Estadístico de la Prueba Eigenvalor Máximo
\(\ell_{r+1}^{*}-\ell_{r}^{*}=-\frac{T}{2} \ln \left(1-\widehat{\lambda}_{r+1}\right)\)
Esta prueba se basa en la razón de máxima verosimilitud \(\ln \left[L_{M V}(r) / L_{M V}(n)\right]\) y es efectuada secuencialmente para \(r=n-1, \ldots, 1,0\). Esta prueba comprueba la hipótesis nula de que el rango de cointegración es \(r\) frente a la alternativa que el rango de cointegración es \(n\).
Estadístico la Prueba de la Traza
\(\ell_{A}^{*}-\ell_{0}^{*}=-\frac{T}{2} \sum_{i=r+1}^{n} \log \left(1-\widehat{\lambda}_{i}\right)\)
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration
##
## Eigenvalues (lambda):
## [1] 4.331654e-01 1.775836e-01 1.127905e-01 4.341130e-02 6.927550e-16
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 3 | 2.35 7.52 9.24 12.97
## r <= 2 | 6.34 13.75 15.67 20.20
## r <= 1 | 10.36 19.77 22.00 26.81
## r = 0 | 30.09 25.56 28.14 33.24Las Hipótesis de las pruebas son las siguientes:
\(H_0:R=0\): No existen vectores de cointegración.
\(H_{01}:R=1\): Existe un vector de cointegración.
Si hubiera un segundo vector de cointegración las hipótesis serían las siguientes:
\(H_0:r\le1\): Cuando más existe un vector de cointegración.
\(H_0:r=2\): Existe más de un vector de cointegración.
Rechazar la \(H_0\) cuando el valor del estadístico la Traza o el Máximo Valor Propio sea mayor que el valor crítico seleccionado, normalmente el de 5 %.
No Rechazar la \(H_0\) cuando el valor del estadístico la Traza o el Máximo Valor Propio sea menor que el valor crítico seleccionado.
\(Rechazar\ H_0\ si\ p\le\alpha\)
\(No\ Rechazar\ H_0\ si\ p>\alpha\)
Es convencional rechazar la hipótesis nula con un nivel de significación \(\alpha=0.05\). Cuando se rechaza la hipótesis nula se dice que los resultados del estudio son estadísticamente significativos al nivel \(\alpha\).
Interpretación de p-values
No Significativo: \(p<10\)
Marginalmente Significativo: \(0.05<p<10\)
Significativo: \(0.01<p<0.01\)
Altamente Significativo: \(0.001<p<0.01\)
Fuertemente Significativo: \(p<0.01\)
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration
##
## Eigenvalues (lambda):
## [1] 4.331654e-01 1.775836e-01 1.127905e-01 4.341130e-02 6.927550e-16
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 3 | 2.35 7.52 9.24 12.97
## r <= 2 | 6.34 13.75 15.67 20.20
## r <= 1 | 10.36 19.77 22.00 26.81
## r = 0 | 30.09 25.56 28.14 33.24ca.jo(x, type = c(“eigen,” “trace”), ecdet = c(“none,” “const,” “trend”), K = 2,spec=c(“longrun,” “transitory”), season = NULL, dumvar = NULL)
Argumentos de la sintaxis
x: matriz de datos a investigar para la cointegración.
type: la prueba que se va a realizar, ya sea “eigen” o “traza.”
ecdet: carácter, “none” para no interceptar en cointegración, “const” para término constante en cointegración y “trend” para la variable de tendencia en la cointegración.
K: el orden de retraso de la serie (levels) en el VAR.
spec: determina la especificación del VECM.
season: si se deben incluir variables ficticias estacionales, la frecuencia de los datos debe establecerse en consecuencia, es decir, “4” para los datos trimestrales.
dumvar: si se deben incluir variables ficticias, una matriz con una dimensión de fila igual a x se puede proporcionar.
Tomado de (“Paquete ’Urca’” 2016)
library(urca)
data(denmark)
sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")]
sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun",
season=4)
summary(sjd.vecm)##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration
##
## Eigenvalues (lambda):
## [1] 4.331654e-01 1.775836e-01 1.127905e-01 4.341130e-02 6.927550e-16
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 3 | 2.35 7.52 9.24 12.97
## r <= 2 | 6.34 13.75 15.67 20.20
## r <= 1 | 10.36 19.77 22.00 26.81
## r = 0 | 30.09 25.56 28.14 33.24
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## LRM.l2 LRY.l2 IBO.l2 IDE.l2 constant
## LRM.l2 1.000000 1.0000000 1.0000000 1.000000 1.0000000
## LRY.l2 -1.032949 -1.3681031 -3.2266580 -1.883625 -0.6336946
## IBO.l2 5.206919 0.2429825 0.5382847 24.399487 1.6965828
## IDE.l2 -4.215879 6.8411103 -5.6473903 -14.298037 -1.8951589
## constant -6.059932 -4.2708474 7.8963696 -2.263224 -8.0330127
##
## Weights W:
## (This is the loading matrix)
##
## LRM.l2 LRY.l2 IBO.l2 IDE.l2 constant
## LRM.d -0.21295494 -0.00481498 0.035011128 2.028908e-03 -1.726523e-13
## LRY.d 0.11502204 0.01975028 0.049938460 1.108654e-03 9.428195e-14
## IBO.d 0.02317724 -0.01059605 0.003480357 -1.573742e-03 4.143714e-14
## IDE.d 0.02941109 -0.03022917 -0.002811506 -4.767627e-05 7.781415e-14
#
data(finland)
sjf <- finland
sjf.vecm <- ca.jo(sjf, ecdet = "none", type="eigen", K=2,
spec="longrun", season=4)
summary(sjf.vecm)##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: maximal eigenvalue statistic (lambda max) , 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 | 7.89 12.91 14.90 19.19
## r <= 1 | 26.64 18.90 21.07 25.75
## r = 0 | 38.49 24.78 27.14 32.14
##
## 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
La primera sección muestra los valores propios generados por la prueba. En este caso tenemos tres con el más grande aproximadamente igual a 0.3389.
La siguiente sección muestra el estadístico de prueba de trazas para las tres hipótesis de \(r\leq2\), \(r\leq1\) y \(r=0\). Los respectivos valores críticos en ciertos niveles de confianza serían 10%, 5% y 1%.
La primera hipótesis, \(r=0\), pruebas de presencia de cointegración. Está claro que dado que la estadística de prueba excede significativamente el nivel del 1% (\(8161.48\gt37.22\)) que tenemos pruebas sólidas para rechazar la hipótesis nula de no cointegración. La segunda prueba para \(r\leq1\) contra la hipótesis alternativa de \(r\gt1\) también proporciona evidencia clara para rechazar \(r\leq1\) dado que la estadística de prueba supera significativamente el nivel del 1%. La prueba final para \(r\leq2\) contra \(r\gt2\) también proporciona evidencia suficiente para rechazar la hipótesis nula de que \(r\leq2\) y así se puede concluir que el rango de la matriz es mayor que 2.
Por tanto, la mejor estimación del rango de la matriz es \(r=3\), que nos dice que necesitamos una combinación lineal de tres series de tiempo para formar una serie estacionaria. Esto es de esperar, por definición de la serie, ya que la caminata aleatoria subyacente utilizada para las tres series no es estacionaria. (QuantStart 2017)
El test de causalidad de Wiener-Granger, o causalidad de Granger, es una prueba estadística empleada para determinar si una serie temporal puede predecir a otra. Para ello se basa en la idea de que si una serie temporal X causa otra Y, los modelos de Y en los que se emplean datos retrasados de X e Y deben funcionar mejor los basados únicamente en datos retrasados de Y. Permitiendo identificar en series temporales en las que se observa una correlación que variable antecede a la otra. (Rodrı́guez 2018)
Hipótesis Nula: es que no hay causalidad en el sentido de Granger:
\(H_0:\ \beta_{{\rm\ yx}_1}=\beta_{{\rm\ yx}_2}=\beta_{{\rm\ yx}_3}=\ ...\ =\beta_{{\rm\ yx}_p}=0\)
Si \(x\) no causa y en el sentido de Granger \((x\nrightarrow\ y)\) entonces todos o algunos de los rezagos de \(x\) no tienen efectos distintos de cero sobre \(y_t\), condicional en los rezagos de \(y\).
Hipótesis Alternativa: hay causalidad en el sentido de Granger:
\(H_1:\ \beta_{{\rm\ yx}_1}=\beta_{{\rm\ yx}_2}=\beta_{{\rm\ yx}_3}=\ ...\ =\beta_{{\rm\ yx}_p}\neq0\)
Si \(x\) causa y en el sentido de Granger (\(x\rightarrow\ y\)) entonces todos o algunos de los rezagos de \(x\) tienen efectos distintos de cero sobre \(y_t\), condicional en los rezagos de \(y\).
En R, podemos usar la función grangertest () del paquete lmtest para realizar una prueba Granger-Causality.
grangertest(x, y, order = 1, na.action = na.omit, …)
Grangertest(formula, data = list(), …)
Argumentos de la sintaxis
x: una serie bivariada (en cuyo caso \(y\) tiene que faltar) o una serie univariada de observaciones.
y: una serie univariada de observaciones (si \(x\) también es univariante).
order: entero que especifica el orden de retrasos a incluir en la regresión auxiliar.
na.action: una función para eliminar los ARN después de alinear las series \(x\) e \(y\).
…: otros argumentos pasaron a waldtest.
formula: una especificación de fórmula de una serie bivariada como y ~ x.
data: un marco de datos opcional que contiene las variables del modelo. De forma predeterminada, las variables se toman del entorno desde el que se llama a grangertest. (Hothorn 2015)
Para lo anterior, se puede usar una prueba F, la cual se puede calcular a través de la suma de residuales al cuadrado:
\(F=\frac{\frac{({\rm\ SSR}_R-{\rm\ SSR}_{UR})}{(p_2-p_1)}}{\frac{{\rm\ SSSR}_{UR}}{(n-p_2-1)}}\)
Donde:
SSR es la suma de residuales al cuadrado del modelo del modelo restricto,
\({\rm\ SSR}_{UR}\) es la suma de residuales al cuadrado del modelo irrestricto,
\(p_2\) es el número de parámetros del modelo irrestricto.
\(p_1\) es el número de los parámetros del modelo restricto.
\(n\) es el tamaño de la muestra.
La prueba sigue una distribución \(F\) con \((p_2-p_1,\mathcal{n}-p_2)\) grados de libertad. (Ramírez et al. 2016)
Salida que genera R
## Granger causality test
##
## Model 1: DAX ~ Lags(DAX, 1:3) + Lags(SMI, 1:3)
## Model 2: DAX ~ Lags(DAX, 1:3)
## Res.Df Df F Pr(>F)
## 1 1850
## 2 1853 -3 8.4968 0.00001322 ***Rechazar \(H_0\ si\ F\ \geq\ V.\ C.,\ o\ si\ P_{value}\le\alpha\)
No Rechazar \(H_0\ si\ F\ \le\ V.\ C.,\ o\ si\ P_{value}\geq\alpha\)
Salida que genera R
## Granger causality test
##
## Model 1: DAX ~ Lags(DAX, 1:3) + Lags(SMI, 1:3)
## Model 2: DAX ~ Lags(DAX, 1:3)
## Res.Df Df F Pr(>F)
## 1 1850
## 2 1853 -3 8.4968 0.00001322 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Si \(F\) es más grande que el α% del valor crítico para una distribución \(F(p_2-p_1,\mathcal{n}-p_2)\), entonces se debe de rechazar la hipótesis nula: \(y\) no causa-Granger a \(x\).
Si \(F\) es menor que el α% del valor crítico para una distribución \(F(p_2-p_1,\mathcal{n}-p_2)\), entonces no se debe de rechazar la hipótesis nula: \(y\) causa-Granger a \(x\). (Caballero, n.d.)
Tomado de (Finnstats 2021) Para este ejemplo, usaremos el conjunto de datos EuStockMarkets. Este conjunto de datos contiene valores para los valores DAX, SMI, CAC y FTSE, pero estamos utilizando solo valores DAX y SMI.
#Carga de datos
data("EuStockMarkets")
datos <- EuStockMarkets[, 1:2]
head(datos)## DAX SMI
## [1,] 1628.75 1678.1
## [2,] 1613.63 1688.5
## [3,] 1606.51 1678.6
## [4,] 1621.04 1684.1
## [5,] 1618.16 1686.6
## [6,] 1610.61 1671.6
options(scipen = 99999)
library(lmtest)
grangertest(DAX ~ SMI, order = 3 , data = datos)## Granger causality test
##
## Model 1: DAX ~ Lags(DAX, 1:3) + Lags(SMI, 1:3)
## Model 2: DAX ~ Lags(DAX, 1:3)
## Res.Df Df F Pr(>F)
## 1 1850
## 2 1853 -3 8.4968 0.00001322 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretación: El estadístico de prueba \(F\) es igual a 8.4968 y el \(valor\ p\) que corresponde al estadístico de prueba \(F\) es Pr (> F) 1.322e-05.
Por lo tanto, se rechaza la hipótesis nula de la prueba porque el valor p es menor que 0.05. En otras palabras,conocer los valores de SMI es valioso para pronosticar los valores futuros de DAX.
Prueba de causalidad de Granger a la inversa
A pesar de que se rechazó la hipótesis nula de la prueba, es posible que se esté produciendo una causalidad inversa. Ese ejemplo, es probable que los cambios en los valores de DAX estén afectando los cambios en los valores de SMI.
options(scipen = 99999)
library(lmtest)
grangertest(SMI ~ DAX, order = 3, data = datos)## Granger causality test
##
## Model 1: SMI ~ Lags(SMI, 1:3) + Lags(DAX, 1:3)
## Model 2: SMI ~ Lags(SMI, 1:3)
## Res.Df Df F Pr(>F)
## 1 1850
## 2 1853 -3 2.6576 0.04689 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretación: El \(valor\ p\) de la prueba es 0.04689. Por tanto, se rechaza la hipótesis nula porque este valor es menor que 0.05. Es decir, los valores de DAX predicen los valores de SMI en el futuro.
Se puede concluir que conocer los valores de SMI es útil para proyectar los valores de DAX en el futuro.