UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
CICLO II - 2023
Trabajo de investigación
Cointegración y Causalidad.
Asignatura
Métodos para el Análisis Económico
Grupo teórico
GT-02
Grupo de trabajo
03
Docente
MSF.Carlos Ademir Peréz Alas
Integrantes:
| Nombre | Carnet |
|---|---|
| Flores Ayala, Katerin Mariela | FA21033 |
| Figueroa González, Salvador Antonio | FG18006 |
| Mendoza Lemus, Johan Eli | ML18043 |
| Rodríguez Melgar, Mariana Guadalupe | RM21005 |
Ciudad universitaria, 07 de enero de 2024
La Prueba de Dickey-Fuller es una herramienta importante en el análisis de series temporales que ayuda a determinar si una serie tiene raíces unitarias, lo que sugiere no estacionariedad
El Test de Dickey Fuller es una forma para determinar si existen raíces unitarias en las series de tiempo y por tanto comprobar si hay o no ESTACIONARIEDAD. Las series que son estacionarias son aquellas que son constantes en varianza, que se mueven alrededor de un valor central, de su media. (Entenderemos que son estacionarias cuando se mueven alrededor de un valor central, o, en otras palabras, que son constantes en varianza)
Si consideramos un proceso estocástico de la forma: \(y_i=\emptyset y_{i-1}+\epsilon_i\) donde \(\left|\emptyset\right|\ \le\ 1\) y \(\varepsilon_i\) es ruido blanco. Entonces, si \(\left|\emptyset\right|\ =\ 1\) tendríamos una raíz unitaria. Si hay raíz unitaria no hay estacionariedad.
| item | detalles |
|---|---|
| Yi | Variable de interés. |
| ϕ | Coeficiente. |
| i | Índice de tiempo |
| εi | Término de error |
Si el valor es uno quiere decir que la proporción seria total entre el valor de ayer y el valor de hoy por lo tanto se quedaría con el valor del error, que es aleatorio. Entonces no hay capacidad de que la serie se mueva luego hacia el lugar central, por lo que no son estacionarias. Si \(\left|\emptyset\right|\ <\ 1\) es un proceso estacionario
Si tomamos como base la ecuación principal y calculamos la primera diferencia, obtenemos:
\(y_i-y_{i-1}=\emptyset y_{i-1}+\epsilon_{i\ }-y_{i-1}\)
\(y_i-y_{i-1}=\left(\emptyset-1\right)y_{i-1}+\epsilon_i\)
Convertimos en una ecuación de regresión lineal simple usando el operador delta y beta, Δyi = yi – yi-1 y β = φ – 1.
\(∆yi=βyi-1+ϵi\)
Así que el test para φ es transformado en un test donde el parámetro pendiente es β = 0
Librerias utilizadas
| libreria | detalles |
|---|---|
| quantmod | Obtención y manipulación de datos financieros |
| tseries | Pruebas para evaluar la estacionariedad de series temporales |
| fImport | Funciones para descargar y gestionar conjuntos de datos de Internet |
| httr | Transferencia de datos a través de HTTP |
| RCurl | Tareas relacionadas con la transferencia de datos a través de HTTP |
| rjson | Conversión de objetos R a JSON y viceversa |
| parsedate | Análisis automático de fechas |
| tseries | Prueba de raíz unitaria |
| urca | Herramientas para análisis de raíces unitarias y cointegración en series temporales |
library(quantmod)
library(tseries)
library(fImport)
library(httr)
library(RCurl)
library(rjson)
library(parsedate)
require(tseries)
library(urca)Base de datos
getSymbols("LTC-USD",quote="Close",from="2016-01-01",periodicity="daily")## [1] "LTC-USD"
| argumento | detalles |
|---|---|
| LTC-USD | Símbolo de la criptomoneda Litecoin y su cotización frente al dólar estadounidense. |
| quote = “Close” | Se especifica que se desea obtener los precios de cierre diarios de la criptomoneda. |
| from = “2016-01-01” | Establece la fecha de inicio para la descarga de datos, en este caso, el 1 de enero de 2016. |
| periodicity = “daily” | Indica que se desea obtener datos diarios. |
Gráfico
plot(`LTC-USD`[,4],type="l")Nosotros podemos usar la aproximación clásica de regresión lineal,pero hay que tener en cuenta que no usaremos la tradicional tabla de t para aceptar o rechazar la hipótesis. El coeficiente seguirá una distribución tau, por lo que nuestra prueba consiste en determinar si el estadístico tau (que es equivalente al estadístico t usual) es menor que el tcrit de los valores estadísticos tau de la tabla de dickey fuller.Tomando como base la siguiente tabla:
Modelo 0 – sin intercepto y sin tendencia
| N | 0.01 | 0.025 | 0.05 | 0.10 |
|---|---|---|---|---|
| 25 | -2.661 | -2.273 | -1.955 | -1.609 |
| 50 | -2.612 | -2.246 | -1.947 | -1.612 |
| 100 | -2.588 | -2.234 | -1.944 | -1.614 |
| 250 | -2.575 | -2.227 | -1.942 | -1.616 |
| 500 | -2.570 | -2.224 | -1.942 | -1.616 |
| > 500 | -2.567 | -2.223 | -1.941 | -1.616 |
Modelo 1 – con intercepto y sin tendencia
| N | 0.01 | 0.025 | 0.05 | 0.10 |
|---|---|---|---|---|
| 25 | -3.724 | -3.318 | -2.986 | -2.633 |
| 50 | -3.568 | -3.213 | -2.921 | -2.599 |
| 100 | -3.498 | -3.164 | -2.891 | -2.582 |
| 250 | -3.457 | -3.136 | -2.873 | -2.573 |
| 500 | -3.443 | -3.127 | -2.867 | -2.570 |
| > 500 | -3.434 | -3.120 | -2.863 | -2.568 |
Modelo 2 – con intercepto y con tendencia
| N | 0.01 | 0.025 | 0.05 | 0.10 |
|---|---|---|---|---|
| 25 | -4.375 | -3.943 | -3.589 | -3.238 |
| 50 | -4.152 | -3.791 | -3.495 | -3.181 |
| 100 | -4.052 | -3.722 | -3.452 | -3.153 |
| 250 | -3.995 | 3.683 | -3.427 | -3.137 |
| 500 | -3.997 | -3.670 | -3.419 | -3.132 |
| > 500 | -3.963 | -3.660 | -3.413 | -3.128 |
Como se puede ver en la tabla, tendremos que tomar el modelo que se este usando. En este caso; la prueba de Dickey fuller tiene diferentes versiones:
Tipo 0: No se tiene constantes ni tendencia.
Tipo 1: Se tiene constante, pero no se tiene tendencia.
Tipo 2: Se tiene constante y se tiene tendencia.
Teóricamente para elegir la versión se debe de graficar los datos. Si la serie original presenta tendencia, se debe incluir tendencia e intercepto, Si no parece tener tendencia y su media no es cero, sólo incluir intercepto. Si parece fluctuar en torno a su valor medio cero, no incluir ni tendencia e intercepto
\[H_0: \beta=0 \quad (\text{equivalente a } \phi=1)\]
\[H_1: \beta < 0 \quad (\text{equivalente a } \phi < 1)\]
H0: β es igual a 0 tendremos un random walk, que sería un camino aleatorio (Sin drift), el cual no es estacionario. Porque se mueve la serie de manera aleatoria. En conclusión, se rechaza la existencia de estacionariedad.
H1: β es menor que 0 significaria que no hay raíz unitaria por lo que si hay presencia de estacionariedad.
La interpretación práctica de esto sería que si el valor crítico de la tabla de Dickey-Fuller es mayor que un valor t dado, entonces hay evidencia estadística para rechazar la presencia de raíces unitarias en la serie temporal. En otras palabras, la serie parece ser estacionaria y no exhibir un comportamiento no estacionario que podría ser causado por raíces unitarias. Este resultado es valioso en el análisis de series temporales porque la estacionariedad es una propiedad importante para muchos modelos y métodos estadísticos aplicados a datos temporales.
p_litecoin<- na.omit(`LTC-USD`[,4]) #SE CALCULA EL PRECIO DE CIERRE DE LA MONEDA
adf.test(p_litecoin,k=0) #adf.test nos permitira llevar acabo el test de Dickey Fuller de tipo 2, o sea que se tiene la constante y el intercepto. ##
## Augmented Dickey-Fuller Test
##
## data: p_litecoin
## Dickey-Fuller = -3.095, Lag order = 0, p-value = 0.1147
## alternative hypothesis: stationary
# Como estamos trabajando el test de Dickey Fuller estandar, pondremos el valor de k igual a 0Estadistico de prueba
Primero, tenemos que evaluar la información que tenemos:
Número de datos: 2,892 > 500. Para este data frame se tiene una cantidad de datos de 2,892 implicando esto más de quinientos datos
Valor t: -3.09. La prueba generada por “adf.test” nos da como resultados un valor critico de -3.09
Valor crítico: -3.41
Modelo 2 – con intercepto y con tendencia
| N | 0.01 | 0.025 | 0.05 | 0.10 |
|---|---|---|---|---|
| 25 | -4.375 | -3.943 | -3.589 | -3.238 |
| 50 | -4.152 | -3.791 | -3.495 | -3.181 |
| 100 | -4.052 | -3.722 | -3.452 | -3.153 |
| 250 | -3.995 | 3.683 | -3.427 | -3.137 |
| 500 | -3.997 | -3.670 | -3.419 | -3.132 |
| > 500 | -3.963 | -3.660 | -3.413 | -3.128 |
Se tomara como referencia un N = 0.05
Recordemos que se esta realizando el modelo 2 y que se tiene mas de 500 datos, por lo que si nos ubicamos en la tabla nuestro valor critico seria de -3.41
Criterio de decisión
Valor critico y valor t:
-3.09 > -3.41
t > Valor critico
Valor t es mayor que el valor critico
Interpretación del rechazo o no rechazo de la hipotesis nula
Se aprueba la hipotesis nula, debido a que el valor critico de la tabla de Dickey Fuller es menor que el valor t, por lo tanto no hay estacionariedad al 5%
Mediante el intercepto
y_intercept=ur.df(p_litecoin, type="drift",lags=0)
summary(y_intercept) ##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -103.833 -1.374 -0.411 1.358 102.742
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.492790 0.199464 2.471 0.01355 *
## z.lag.1 -0.005969 0.001976 -3.021 0.00254 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.716 on 2926 degrees of freedom
## Multiple R-squared: 0.003109, Adjusted R-squared: 0.002768
## F-statistic: 9.125 on 1 and 2926 DF, p-value: 0.002543
##
##
## Value of test-statistic is: -3.0207 4.5769
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.43 -2.86 -2.57
## phi1 6.43 4.59 3.78
#Para hacerlo con intercepto se colocara en tipo "drift"En este caso tenemo un valor de t de -3.004 que si nos vamos a la tabla ahora para el modelo 1; tenemos que el valor critico es de -2.863
Por lo tanto tendriamos:
Por lo que no se rechaza la hipotesis nula con un 5%, al contrario que en el caso anterior en este modelo si hay estacionariedad.
No intercepto no tendencia
y_nada=ur.df(p_litecoin, type="none",lags=0)
summary(y_nada)##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -104.467 -1.169 0.022 1.558 102.416
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.002147 0.001231 -1.745 0.0811 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.721 on 2927 degrees of freedom
## Multiple R-squared: 0.001039, Adjusted R-squared: 0.0006978
## F-statistic: 3.045 on 1 and 2927 DF, p-value: 0.0811
##
##
## Value of test-statistic is: -1.7449
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
#Para hacerlo con intercepto se colocara en tipo "none"En este caso tenemo un valor de t de 1.725 que si nos vamos a la tabla ahora para el modelo 0; tenemos que el valor critico es de -1.941
Por lo tanto tendriamos:
Por lo que se rechaza la hipotesis nula con un 5%, al contrario que en el caso anterior en este modelo no hay estacionariedad tal como en el modelo 2.
Dentro de la prueba de Dickey Fuller estandar, nosotros solo tenemos en cuenta un lag o un retorno, el test aumentado lo que hace es ampliar esta prueba, de manera que se estudiara más lags en el modelo.
p_litecoin<- na.omit(`LTC-USD`[,4])
#Se toma el precio de cierre del LTCEstablecimiento del lag
ADF_x <- adf.test(p_litecoin,k=2) #Es el mismo comando que en el ejercicio anterio, solo que aqui en el valor de k no seria 0, en su lugar pondriamos la cantidad de retardos que se quiera utilizar. En este caso se ha obtado por 2
ADF_x##
## Augmented Dickey-Fuller Test
##
## data: p_litecoin
## Dickey-Fuller = -3.0893, Lag order = 2, p-value = 0.1171
## alternative hypothesis: stationary
ADF_x$statistic## Dickey-Fuller
## -3.089349
Interpretación
Numero de datos: 2,892 > 500. Se sigue teniendo el mismo numero de datos.
Valor t: -3.09. La prueba generada por “adf.test” nos da como resultados un valor critico de -3.09
Valor critico: -3.41
N = 0.05
Recordemos que se esta realizando el modelo 2 y que se tiene mas de 500 datos, por lo que si nos ubicamos en la tabla nuestro valor critico seria de -3.41
Modelo 2 – con intercepto y con tendencia
| N | 0.01 | 0.025 | 0.05 | 0.10 |
|---|---|---|---|---|
| 25 | -4.375 | -3.943 | -3.589 | -3.238 |
| 50 | -4.152 | -3.791 | -3.495 | -3.181 |
| 100 | -4.052 | -3.722 | -3.452 | -3.153 |
| 250 | -3.995 | 3.683 | -3.427 | -3.137 |
| 500 | -3.997 | -3.670 | -3.419 | -3.132 |
| > 500 | -3.963 | -3.660 | -3.413 | -3.128 |
Comparación
Valor critico y valor t:
-3.09 > -3.41
t > Valor critico
Valor t es mayor que el valor critico
Se aprueba la hipotesis nula, debido a que el valor critico de la tabla de Dickey Fuller es menor que el valor t, por lo tanto no hay estacionariedad al 5%
Lag establecido por R
En caso que no se quiera hacer el estudio para ver que lag seria el mejor para el desarrollo, R permite que se establezca por defecto.
ADF_defecto <- adf.test(p_litecoin)
#Se omite el darle el valor a K para que el mismo test haga el calculo de los lags
ADF_defecto##
## Augmented Dickey-Fuller Test
##
## data: p_litecoin
## Dickey-Fuller = -2.9228, Lag order = 14, p-value = 0.1876
## alternative hypothesis: stationary
En este caso podemos ver como nos ha salimo el valor de 14 para la cantidad de retardos. Tenemos un valor de t de -2.92 que si nos vamos a la tabla para el modelo 2; tenemos que el valor critico es de -3.41. Por lo tanto tendriamos:
Por lo que no se ocurre cambio al ejercicio anterior, ya que tenemos los mismos resultados.
La cointegracion en el enfoque de Soren Johansen se utiliza para analizar la relación de largo plazo entre variables económicas que pueden estar estrechamente relacionadas. Este enfoque se basa en la idea de que las series de tiempo pueden estar cointegradas, lo que significa que aunque cada serie pueda ser no estacionaria por sí sola, una combinación lineal de ellas sí lo es.
El procedimiento multivariado de S. Johansen (1988 y 1991), profesor de estadística matemática de la Universidad de Copenhagen, se ha convertido en un método muy popular para probar la existencia de cointegracion en la variables I(1) y I(0), en donde I(1) y I(0) indican integración de primer y cero orden, respectivamente.
finalmente tenemos que la cointegración de Johansen es un método de aplicación a series de tiempo que presentan presunciones de cointegración, de apliación a sistemas de ecuaciones y basado en el modelo VAR.
Considerando un VAR de orden p:
\(X_t=\mu+A_1X_{t-1}+\cdots+A_pX_{t-p}+w_t\)
donde:
\(\mu\): Es la medida de la serie valorada por vector
Ai: Son las matrices de coeficientes para retraso
Wt: es un término de ruido gaussiano multivariante con media cero.
Al diferenciar las series, tenemos que:
\[ \Delta \mathbf{x_t} = \mathbf{\mu} + A \mathbf{x_{t-1}} + \Gamma_1 \Delta \mathbf{x_{t-1}} + \ldots + \Gamma_p \Delta \mathbf{x_{t-p}} + \mathbf{w_t} \]
Donde:
La prueba verifica la situación de no cointegración, que ocurre cuando la matriz A = 0
Para lograr esto, se realiza una descomposición de valores propios de \(\Gamma\). El rango de la matriz \(\Gamma\) se determina por \(r\), y la prueba de Johansen prueba secuencialmente si este rango \(r\) es igual a cero, igual a uno, hasta \(p\), donde \(p\) es el número de series temporales en prueba.
La hipótesis nula en el contexto de la prueba de Johansen es que no hay cointegración en absoluto entre las series temporales analizadas. Específicamente, para un valor dado de \(r\), la hipótesis nula es que hay \(r\) relaciones de cointegración entre las series temporales.
Johansen propuso dos tipos de pruebas para evaluar el valor de \(r\):
Prueba del eigenvalor máximo:
Esta prueba se basa en la razón de máxima verosimilitud \(\ln \left[L_{MV}(r) / L_{MV}(r+1)\right]\).
\(L_{MV}(r)\) representa la función de verosimilitud del modelo con \(r\) relaciones de cointegración.
\(L_{MV}(r+1)\) representa la función de verosimilitud del modelo con \(r+1\) relaciones de cointegración.
Se realiza secuencialmente para \(r=0,1, \ldots, n-1\).
La hipótesis nula es que el rango de cointegración es \(r\) frente a la alternativa de que el rango de cointegración es \(r+1\).
El estadístico de prueba es \(\ell_{r+1}^{*}-\ell_{r}^{*}=-\frac{T}{2} \ln \left(1-\widehat{\lambda}_{r+1}\right)\).
Prueba de la traza:
library("urca")Para simplificar este proceso, aprovecharemos la biblioteca “urca”, desarrollada por Bernhard Pfaff y Matthieu Stigler. Esta biblioteca encapsula la prueba de Johansen en una función de fácil acceso llamada “ca.jo”. Esta elección permite una implementación eficiente y directa de la prueba de cointegración en nuestros conjuntos de datos dentro del entorno R.
grangertest(DAX ~ SMI, order = 3, test = “F”, data = tsData)
| Items | datalles |
|---|---|
| jotest | Variable que almacena los resultados de la prueba de cointegración de Johansen. |
| ca.jo | Función que realiza la prueba de cointegración de Johansen. |
| data.frame(p, q, r) |
Crea un marco de datos con las tres series temporales p,
q y r.
|
| type | Parámetro que especifica el uso de la estadística de prueba de rastro (trace) en la prueba de Johansen. |
| K | Parámetro que establece el número de rezagos en el modelo vectorial autorregresivo. |
| ecdet | Parámetro que especifica que no se utilice término constante o de deriva en el modelo. |
| spec | Parámetro que se refiere a la especificación del VECM (Modelo de Corrección de Error Vectorial) de tipo ‘longrun’. |
Prueba del Eigenvalor Máximo:
Este estadístico compara la verosimilitud entre dos modelos consecutivos con diferentes números de relaciones de cointegración (\(r\) y \(r+1\)). Un valor grande del estadístico sugiere evidencia a favor de \(r+1\) relaciones de cointegración sobre \(r\). Bajo la hipótesis nula de \(r\) relaciones de cointegración, este estadístico sigue aproximadamente una distribución chi-cuadrado con \(r+1\) grados de libertad.
Prueba de la Traza:
Este estadístico compara la verosimilitud entre un modelo con \(r\) relaciones de cointegración y el modelo sin restricciones (\(n\) relaciones de cointegración). Un valor grande sugiere evidencia a favor de al menos \(r+1\) relaciones de cointegración. Bajo la hipótesis nula de \(r\) relaciones de cointegración, este estadístico sigue aproximadamente una distribución chi-cuadrado con \(n-r\) grados de libertad.
Prueba del Eigenvalor Máximo:
Prueba de la Traza:
La hipótesis nula (\(H_0\)) en el contexto de las pruebas de Johansen para cointegración de series temporales se relaciona con el número de relaciones de cointegración en el sistema.La hipótesis nula establece un número específico de relaciones de cointegración (r) entre las series temporales.
Estableciendo una semilla (seed), los resultados del generador de números aleatorios pueden replicarse en otros entornos de R. Esto significa que al fijar la semilla, se garantiza que cualquier generación de números aleatorios posterior será consistente y reproducible, facilitando la comparación de resultados en diferentes instancias de R.
set.seed(123)
z <- rep(0, 10000)
for (i in 2:10000) z[i] <- z[i-1] + rnorm(1)Aquí se crea un vector z de longitud 10,000 para representar el paseo aleatorio subyacente. El bucle for genera cada valor en el vector basándose en el valor anterior más un número aleatorio distribuido normalmente.
p <- 0.3 * z + rnorm(10000)
q <- 0.6 * z + rnorm(10000)
r <- 0.2 * z + rnorm(10000)Se crean tres series temporales (p, q y r), cada una con una relación lineal con el paseo aleatorio subyacente z y algo de ruido aleatorio adicional.
jotest = ca.jo(data.frame(p, q, r), type="trace", K=2, ecdet="none", spec="longrun")Se aplica la función ca.jo a un marco de datos que contiene las tres series temporales. El parámetro type=“trace” especifica el uso de la estadística de prueba de rastro en la prueba de Johansen. K=2 establece el número de rezagos en el modelo vectorial autorregresivo. ecdet=“none” especifica que no se utiliza término constante o de deriva, y spec=“longrun” se refiere a la especificación del VECM (Modelo de Corrección de Error Vectorial).
summary(jotest)##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend
##
## Eigenvalues (lambda):
## [1] 0.3377689 0.3302054 0.0023202
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 2 | 23.22 6.50 8.18 11.65
## r <= 1 | 4030.26 15.66 17.95 23.52
## r = 0 | 8150.85 28.71 31.52 37.22
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## p.l2 q.l2 r.l2
## p.l2 1.0000000 1.0000000 1.000000
## q.l2 0.7064995 -0.5560898 1.924737
## r.l2 -3.6156063 0.1634489 0.695825
##
## Weights W:
## (This is the loading matrix)
##
## p.l2 q.l2 r.l2
## p.d -0.06982583 -0.7338823 -0.0013067235
## q.d -0.05529017 0.4116717 -0.0026177217
## r.d 0.25117688 -0.1162236 -0.0008496987
Los resultados revelan que las tres series temporales evaluadas están cointegradas, lo que implica una relación de largo plazo entre ellas. La significativa estadística de prueba de rastro y los eigenvalores respaldan firmemente el rechazo de la hipótesis nula de no cointegración para diferentes valores de \(r\), como \(r = 0, 1, 2\). La estimación del rango (\(r = 3\)) sugiere que se requiere una combinación lineal de las tres series para obtener una serie estacionaria. Específicamente, los componentes del vector propio asociado al eigenvalor más grande (\(0.3, 0.6, 0.2\)) indican la ponderación óptima para esta combinación lineal. En resumen, estos resultados respaldan la presencia de una relación de equilibrio a largo plazo entre las series y proporcionan pautas para formar una serie estacionaria mediante una combinación lineal apropiada.
En 1969, el economista británico Sir Clive William John Granger desarolló en su árticulo “Investigating Causal Relations by Econometric Models and Cross-Spectral Methods”, una metodología para inferir la causalidad en el estudio de series temporales. Esta se caracteriza por su enfoque en el orden temporal, ya que se postula que el futuro no puede causar el pasado. Por lo tanto, Si una variable X causa la variable Y, los cambios en X deben preceder a los cambios en Y.
La correlación entre dos variables no necesariamente implica que una de ellas sea la causa de las alteraciones en los valores de la otra, ya que podría existir un tercer factor que influya en ambas variables, dando lugar a una correlación aparente. Para establecer las causas y consecuencias de un fenómeno generalmente se requiere de un análisis más profundo que parte del rigor científico, la razón y la documentación teórica del fenómeno de estudio. En este sentido, la prueba de causalidad de Granger es una herramienta que únicamente identifica si una variable antecede a otra en una serie temporal.
En otras palabras, la causalidad de Granger es un test estadístico que le permite al investigador verificar si una serie temporal Xt causa otra serie temporal Yt al determinar si los valores pasados Xt-1 ayudan a predecir los valores futuros Yt+1 .Es decir, Yt no solo depende de sus valores pasados Yt-1 , sino que que también depende de los valores pasados Xt-1.
La causalidad de Granger se puede definir matemáticamente como una ecuación una ecuación de regresión lineal múltiple, donde Yt se expresa como una combinación lineal de sus valores pasados (retardos) y los valores pasados de otra serie temporal Xt:
\(Y_t = \sum_{i=1}^{n} \alpha_i X_{t-i} + \sum_{j=1}^{n} \beta_j Y_{t-j} + u_{t}\)
donde:
Yt: Es la serie temporal Y en el tiempo t
Xt-i: Son los valores pasados de la serie temporal X, donde i es el índice de retraso
αi: Son los coeficientes asociados con los valores pasados de la serie temporal X.
Yt−j: Son los valores pasados de la serie temporal Y, donde j es el índice de retraso.
βj: Son los coeficientes asociados con los valores pasados de la serie temporal Y.
\(u_{t}\) : Es el término de error en el tiempo t
Finalmente, para realizar la prueba de causalidad de Granger, se deben de tener en cuenta los siguientes aspectos:
Ambas variables deben ser estacionarias, es decir, su media y varianza no varían con el tiempo.
La dirección de la causalidad puede depender de manera critica del número de términos rezagados incluidos.
Los términos de error en la prueba de causalidad no están correlacionados.
Las hipótesis de la prueba de Granger se obtienen mediante la suma de los cuadrados residuales restrigida y no restringida de las series temporales que se desean verificar:
Regresión restringida: Se realiza una regresión de Y actual sobre todos los términos rezagados de la serie temporal Y pero no incluyendo a las variables rezagadas de la serie temporal X. Obteniendo la suma de los cuadrados residuales restringida, SCRR.
Regresión no restringida: Se realiza una regresión de Y actual sobre todos los términos rezagados de la serie temporal Y e X. Obteniendo la suma de los cuadrados residuales no registringida SCRRN.
En este caso, la hipótesis nula sería:
\(H_0:\ \ \alpha_i=0,\ i=1,\ 2,\ \cdots n\)
Esta hipótesis nula sugiere que los coeficientes asociados con los términos rezagados de la variable X son iguales a cero. En otras palabras, la hipótesis nula postula que los valores pasados de X no pertenecen a la regresión. El rechazo de la hipótesis nula podría indicar que al menos algunos de los términos rezagados de X son diferentes de cero y, por lo tanto, pertenecen a la regresión. Para probar esta hipótesis, se utiliza la prueba F.
Se utiliza la función grangertest del paquete lmtest para realizar la prueba de caualidad de Granger basada en regresiones lineales, permitiendo evaluar si una serie temporal puede predecir otras.
\(grangertest(X, Y, order=n, test= "F", data = Z )\)
| item | detalles |
|---|---|
| X | Serie temporal o variable que se supone causante. |
| Y | Serie temporal o variable que se supone afectada |
| order | Orden máximo de los rezagos a incluir en el modelo. |
| test | Tipo de prueba a realizar. En este caso, la prueba estadística F. |
| data | base de datos utilizada |
\({F} = \frac{(SCR_{R}-SCR_{NR})/m}{SCR_{NR}/(n-k)}\)
Esta sigue la distribución F con m y (n − k) gl, donde:
Si el valor de F calculado excede al valor crítico en el nivel seleccionado de significacia, se rechaza H0, por tanto, X causa Y:
\(Rechazar\ H_0\ \ si:\ \alpha>F\)
\(No\ Rechazar\ H_0\ \ si:\ \alpha>F\)
la hipótesis nula postula que los rezagos de la serie temporal X no tienen un poder predictivo significativo sobre la serie temporal Y. Específicamente, la hipótesis nula sugiere que los coeficientes asociados con los términos rezagados de la variable X en un modelo de regresión de Y no son diferentes de cero.
Para este ejemplo, se utilizará el conjunto de datos “EuStockMarkets” proporcionado por R base, el cual contiene series temporales desde 1991 hasta 1998. Este conjunto de datos es sobre los valores de cuatro índices bursátiles europeos:
En este caso, se utilizará DAX y SMI en base al objeto “tsData”, el cual es un subconjunto del conjunto de datos “EuStockMarkets” que contiene información específica sobre los índices bursátiles en un formato de serie
library(dplyr)
tsData <- EuStockMarkets[, 1:2]
tsData %>% head(5)## 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
Utilizando la función “grangertest”, se ejecutará la prueba de causalidad de Granger para examinar si los valores de SMI predicen los valores de DAX usando tres retardos diferentes.
library(lmtest)
grangertest(DAX ~ SMI, order = 3, test = "F", data = tsData)## 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 1.322e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El estadístico de prueba F se denota en la salida de R con la letra F, en este caso, es igual a 8.4968. El valor p que corresponde a F se denota como Pr(>F) en la salida de R, en este caso, es igual 1.322e-05. En base a estos resultado podemos rechazar la hipótesis nula de la prueba porque el valor p es menor que 0.05. Por tanto, se concluye que conocer los valores de SMI ayuda a pronosticar los valores futuros de DAX.
A.Rico, V. (2021a). Prueba de raiz unitaria de DICKEY FULLER en r. Video en línea. https://www.youtube.com/watch?v=ZjzX1cZ9ObM
A.Rico, V. (2021b). Test de dickey fuller aumentado en r. Video en línea. https://www.youtube.com/watch?v=QeXNidThny4
Damodar N. Gujarati, D. C. (2010). Econometría. MEXICO D.F: McGRAW-HILL.
Grande Torraleja, F. (2001). APLICACIÓN DE LA TEORÍA DE LA COINTEGRACIÓN AL ANÁLISIS DE LA DEMANDA TURÍSTICA. Obtenido de Universidad de Jaén: https://dialnet.unirioja.es/descarga/articulo/206166.pdf
Johansen Test for Cointegrating Time Series Analysis in R. (s.f.). Obtenido de QUANTSTART: https://www.quantstart.com/articles/Johansen-Test-for-Cointegrating-Time-Series-Analysis-in-R/
Portugal, C. A. (Julio de 2021). LA CAUSALIDAD DE GRANGER EN EL ANÁLISIS Y LA PREVISIÓN DE SERIES TEMPORALES CLÁSICAS, DE INTERVALO Y DE HISTOGRAMA. APLICACIÓN EN MERCADOS FINANCIEROS. Obtenido de Universidad Pontificia Comillas.: https://repositorio.comillas.edu/xmlui/bitstream/handle/11531/62362/TFG%20-%20Acin%20Coello%20de%20Portugal%2C%20Cristina.pdf?sequence=1
QUINDE-ROSALES, V. X. (14 de enero de 2019). Análisis de cointegración entre el índice de precios al productor y al consumidor de alimentos. Caso Ecuador. Obtenido de https://www.revistaespacios.com/a19v40n01/a19v40n01p11.pdf
Righetti, N. (s.f.). Four ways to perform a Granger Causality test with R. Obtenido de https://github.com/nicolarighetti/Granger-causality-test-with-R/blob/main/Granger-test-with-R.md
Rodríguez, D. (18 de Noviembre de 2019). Test de causalidad de Wiener-Granger. Obtenido de ANALYTICS LANE: https://www.analyticslane.com/2019/11/18/test-de-causalidad-de-wiener-granger/
SANDOVAL, W. (2021 de octubre de 28). Vec-Cointegración. Obtenido de Rpubs: https://rpubs.com/wilsonsr/828582