UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONOMICAS

ESCUELA DE ECONOMIA

TEMA: LABORATORIO NUMERO 3: COINTEGRACIÓN Y CAUSALIDAD

MATERIA: METODOS PARA EL ANALISIS ECONOMICO

DOCENTE: CARLOS ADEMIR PÉREZ ALAS

INTEGRANTES:

APELLIDOS NOMBRES CARNET PARTICIPACIÓN
LAGOS ALAS LUIS FERNANDO LA18009 \(100\%\)
PANIAGUA MUÑOZ FERNANDO ERNESTO PM18011 \(100\%\)
REYES CASTRO DAVID ERNESTO RC17077 \(100\%\)
RODRIGUEZ BARRERA MARLON EDUARDO RB14034 \(100\%\)

CICLO: II-2021

FECHA: SABADO 4 DE DICIEMBRE DE 2021

CIUDAD UNIVERSITARIA, SAN SALVADOR, EL SALVADOR, CENTROAMERICA

Prueba de Raíz Unitaria de Dickey-Fuller

Propósito de la prueba

La prueba de raíz unitaria de Dickey-Fuller es para determinar si existen o no raices unitarias en las en las series de tiempo para ver si la series es Estacionaria o No estacinaria

Hipótesis de la prueba

Si consideramos un proceso autoregresivo (estocastico) de la forma:

\[x_{t}=\phi x_{t-1}+\varepsilon_t\]

Donde \(|\phi|\le1\) y \(\varepsilon_t\) es es un caso simple de los procesos estocásticos, donde los valores son independientes e idénticamente distribuidos a lo largo del tiempo con media cero e igual varianza.

Si el valor de \(\phi\) es igual a \(1\) se dice que la serie es no estacionaria en otras palabras si la raiz es unitaria no hay estacionariedad

\[H_o: \phi=1\]

Entonces si el valor de \(\phi\) es menor a \(1\) entonces se dice que la serie es estacionaria

\[H_a: \phi<1\]

Sintaxis de implementación

Para este caso se usara el comando adf.test de la libreria tseries

donde tendremos la siguiente sintaxis

library(tseries)
adf.test(x, k = 0)

donde x sera el vector de información de la serie que se esta estudiando y k=0 el orden en que se quiere estudiar la raiz unitaria en este caso solo es “0” debido a que o queremos saber si es de primer o segundo orden

tambien se puede usar la libraria urca con el comando ur.df(x,c(“none”,“trend”, “drift”,lags=0))

donde x sera el vector de información de la serie de tiempo que se esta estudiando, y las opciones de “none” sino se quiere hacer ningun tipo de prueba, “trend” si se quiere de una prueba de tendencia o “drift” si se quiere una prueba de desviaciones

library(urca)
x <- ur.df(IVAEST, type = "trend", lags = 0)
x@teststat[, 1]

Estadistico de Prueba

Para comprender el estadistico de prueba se obtiene de la siguiente forma

sea: \[x_{t}=\rho x_{t-1}+\varepsilon_t\] y analizamos las variaciones de periodo anterior

\[x_{t}-x_{t-1}=\phi x_{t-1}-x_{t-1}+\varepsilon_t\] sacando factor común

\[\Delta x_{t-1}=(\phi-1) x_{t-1}+\varepsilon_t\]

sea:

\[\Delta x_{t-1}=\tau x_{t-1}+\varepsilon_t\]

siendo \(\tau\) el estadistico de prueba

\[DF={\tau \over {SE(\tau)}}\]

para calcularlo en R

# Usando x@teststat[,1] para solo tener el estadistico de Dickey-Fuller (tau)
library(urca)
x <- ur.df(IVAEST, type = "trend", lags = 0)
x@teststat[, 1]
## [1] -7.876557
library(tseries)
t <- adf.test(IVAEST, k = 0)
t$statistic
## Dickey-Fuller 
##     -7.876557

Criterio de decisión

Si tendremos que el las hipotesis deben ser

\[H_o: \phi=1 \text{ ; No hay estacionariedad }\]

\[H_a: \phi<1 \text{ ; Hay estacionariedad}\]

Entonces el criterio de decisión sera

\[\text{no se rechaza } H_o \text{ si } |t|>|DF| \text{ ó } p_{value}>0.05\]

\[\text{se rechaza } H_o \text{ si } |t|<|DF| \text{ ó } p_{value}<0.05\]

Al utilizar Estadistico \(t\) y \(DF\)

library(urca)
x <- ur.df(IVAEST, type = "trend", lags = 0)
xDF <- as.vector(x@teststat[, 1])
xt <- as.vector(x@cval[1, 1])

if (abs(xt) > abs(xDF)) {
  "No se rechaza la hipotesis nula y se dice que no existe estacionariedad"
} else {
  "Se rechaza la hipotesis nula y se dice que existe estacionariedad"
}
## [1] "Se rechaza la hipotesis nula y se dice que existe estacionariedad"

Ejemplo para la prueba de Dickey-Fuller

utilizando datos del IVAE El Salvador 2009-2021 (marzo) y transformando en series de tiempo

library(readxl)
library(forecast)

IVAESLV <-
  read_excel(
    "~/Econometria/Recursos/PM18011_IVAE_SLV_C.xlsx",
    col_types = c("skip", "numeric"),
    skip = 5
  )

IVAEST <- ts(data = IVAESLV,
             start = c(2009, 1),
             frequency = 12)
IVAEST %>%
  autoplot(main = "IVAE, El Salvador 2009-2021(marzo)", xlab = "Años/Meses", ylab = "Indice")

library(TSstudio)
ts_decompose(IVAEST, type = "additive", showline = TRUE)

Hipotesis

\[H_o: \phi=1 \text{ ; No hay estacionariedad }\]

\[H_a: \phi<1 \text{ ; Hay estacionariedad}\]

Criterios de decisión

\[\text{no se rechaza } H_o \text{ si } |t|>|DF| \text{ ó } p_{value}>0.05\]

\[\text{se rechaza } H_o \text{ si } |t|<|DF| \text{ ó } p_{value}<0.05\]

Utilizando libreria urca

library(urca)
x <- ur.df(IVAEST, type = "trend", lags = 0)
xDF <- as.vector(x@teststat[, 1])
xt <- as.vector(x@cval[1, 1])

if (abs(xt) > abs(xDF)) {
  "No se rechaza la hipotesis nula y se dice que no existe estacionariedad"
} else {
  "Se rechaza la hipotesis nula y se dice que existe estacionariedad"
}
## [1] "Se rechaza la hipotesis nula y se dice que existe estacionariedad"

Cointegración en el enfoque de Soren Johansen

Proposito de la prueba

Una prueba de Johansen nos permite determinar si tres o más series de tiempo están cointegradas. Este consiste en colocar en un vector autoregresivo las series que presenten raíces unitarias, a partir del cual se puede probar la existencia de una o más combinaciones lineales o vectores de cointegración, como también se les denomina. Tambien el enfoque de cointegración de Soren Johansen es para probar si existe cointegración en las variables es decir, si existe cointegración de orden cero \(I(0)\) o cointegración de orden uno \(I(1)\)

Hipótesis de la prueba

Dada una serie temporal VAR de la forma

\[x_t=\mu+A1x_{t-1}+V_t\]

si restamos a ambos lados \(x_{t-1}\)

\[x_t-x_{t-1}=\mu+A1x_{t-1}-x_{t-1}+V_t\]

agrunpando todas las variables se tiene que:

\[\Delta x_{t-1}=\mu+(A1-I)x_{t-1}+V_t\]

Donde \(A1-I=A\)

entonces

\[\Delta x_{t-1}=\mu+Ax_{t-1}+V_t\]

esta representación del modelo es la que llamamos Mecanismo de Corrección de Error en la sección anterior; por ello A es, por tanto, un Vector de Corrección de Error

Por ello, el modelo es un Mecanismo de Corrección de Error Vectorial (VECM). También se dará cuenta de la similitud de esta especificación con la de la prueba ADF, incluso podríamos considerarla un ADF multiecuacional.

Si ahora generalizamos la especificación para considerar un modelo VAR(p), el resultado es:

\[x_{t}=\mu+A1x_{t-1}+A2x_{t-2}+...+Apx_{t-p}+V_t\]

Si se resta \(x_{t-1}\)

\[\Delta x_{t-1}=\mu+(A1+A2+..+Ap-1)(x_{t-1}+x_{t-2}+...+x_{t-p})+V_t\]

Siendo \(\Gamma_i=\Gamma_1+...+\Gamma_p\)

La prueba es sensible a la longitud de los rezagos elegidos en el VECM, por lo tanto deben ser seleccionados óptimamente utilizando los criterios de información que ya hemos visto en capítulos anteriores. En la matriz A se encuentre la relación de largo plazo. Si su rango es; rango (A) = \(\Gamma\), entonces se pueden encontrar las siguientes situaciones

Si \(\Gamma\) = 0, A es una matriz nula. No existirá ninguna relación de cointegración

Si \(\Gamma\) = m, el proceso multivariante \(X_{t}\) es estacionario. Por tanto, habría m-1 vectores de cointegración linealmente independientes que cancelan la tendencia común. Así Yt será estacionario si \(A_{m*m}\) tiene rango completo.

Si 0<\(\Gamma\)<m, se encontrará entre las dos situaciones anteriores, por lo que habrá r relaciones de cointegración.

por lo que:

\[H_o: \Gamma=0 ; \text{ No existe cointegración}\]

\[H_a: \Gamma=m ; \text{ Existe cointegración con } m-1 \text{ Vectores de cointegración}\]

Sintaxis de implementación

En este caso se usara la libreria urca el comando ca.jo

library(urca)
ca.jo(x,"eigen","trend")

donde “x” es la serie de tiempo a estudiar, “eigen” es que se utilizara el criterio de los autovalores tamando la constante y “trend” ya que se hara una analisis de tendencia

Estadistico de Prueba

Del analisis anterior de las hipotesis se tenia que

\[x_{t}=\mu+A1x_{t-1}+A2x_{t-2}+...+Apx_{t-p}+V_t\]

y sus respectivas operaciones

\[\Delta x_{t-1}=\mu+(A1+A2+..+Ap-1)(x_{t-1}+x_{t-2}+...+x_{t-p})+V_t\]

siendo

\[A=A1+A2+..+Ap-I\]

Si el rango de A es igual \(\Gamma\)

entonces \(\Gamma\) sera el estadistico de prueba

Criterio de decisión

Si tenemos las hipotesis

\[H_o: \Gamma=0 ; \text{ No existe cointegración}\]

\[H_a: \Gamma=m ; \text{ Existe cointegración con } m-1 \text{ Vectores de cointegración}\]

Entonces el criterio de decisión sera:

\[\text{no se rechaza } H_o \text{ si } t>\Gamma \text{ ó } p_{value}>0.05\]

\[\text{Se rechaza } H_o \text{ si } t<\Gamma \text{ ó } p_{value}<0.05\]

Al utilizar el estadistico \(t\) y \(\Gamma\)

library(urca)
a <-ca.jo(BTC_USDTS,"eigen","trend")
aG0 <-as.vector(a@teststat[3])
aG1 <-as.vector(a@teststat[2])

at0 <-as.vector(a@cval[3,2])
at1 <-as.vector(a@cval[2,2])

Para \(I(0)\) Cointegración de orden cero

if (at0>aG0) { "No se rechaza la hipotesis nula y se dice que no existe evidencia de cointegración de orden cero"} else {"Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden cero"}
## [1] "Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden cero"

Para \(I(1)\) Cointegración de orden uno

if (at1>aG1) { "No se rechaza la hipotesis nula y se dice que no existe evidencia de cointegración de orden uno"} else {"Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden uno"}
## [1] "Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden uno"

Ejemplo para la prueba de Soren Johansen

Utilizando datos del las variaciones, aperturas y cierres de la Critomoneda Bitcoin (BTC) y transformado a series de tiempo

library(forecast)
library(readr)
library(dplyr)
DBTC_USD <- read_csv("~/Econometria/Recursos/LAB3MAE/DBTC_USD.csv")
library(readxl)
VarBTC_USD <-
  read_excel("~/Econometria/Recursos/LAB3MAE/VarBTC_USD.xlsx")

DBTC_USD %>% left_join(VarBTC_USD) %>% select("Cierre","Apertura","Var") -> BTC_USD

BTC_USDTS <- ts(data = BTC_USD,
            start = c(1, 1),
            frequency = 1)

BTC_USDTS %>% autoplot(main = "Bitcoin en el 2021", xlab = "Meses", ylab = "Indices")

Hipotesis

\[H_o: \Gamma=0 ; \text{ No existe cointegración}\]

\[H_a: \Gamma=m ; \text{ Existe cointegración con } m-1 \text{ Vectores de cointegración}\]

Criterios de decisión

\[\text{no se rechaza } H_o \text{ si } t>\Gamma \text{ ó } p_{value}>0.05\]

\[\text{Se rechaza } H_o \text{ si } t<\Gamma \text{ ó } p_{value}<0.05\]

Utilizando libreria urca

library(urca)
a <-ca.jo(BTC_USDTS,"eigen","trend")
aG0 <-as.vector(a@teststat[3])
aG1 <-as.vector(a@teststat[2])

at0 <-as.vector(a@cval[3,2])
at1 <-as.vector(a@cval[2,2])

Para cointegración de orden cero \(I(0)\)

if (at0>aG0) { "No se rechaza la hipotesis nula y se dice que no existe evidencia de cointegración de orden cero"} else {"Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden cero"}
## [1] "Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden cero"

Para cointegración de orden uno \(I(1)\)

if (at1>aG1) { "No se rechaza la hipotesis nula y se dice que no existe evidencia de cointegración de orden uno"} else {"Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden uno"}
## [1] "Se rechaza la hipotesis nula y se dice que existe evidencia de cointegración de orden uno"

Causalidad en el sentido de Granger

Propósito de la prueba

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.

Hipótesis de la prueba

Si se tienen 2 series de tiempo de las cuales es quiere determinar la causalidad sea X e Y entonces

\[X_t=\sum_{i=1}^n \alpha_i Y_{t-i}+\sum_{j=1}^n \beta_jX_{t-j}+\varepsilon_{1t}\]

\[Y_t=\sum_{i=1}^n \lambda_i Y_{t-i}+\sum_{j=1}^n \delta_jX_{t-j}+\varepsilon_{2t}\]

Entonces en este caso veremos como \(\alpha\) es una sensibilidad en donde se puede decir que un cambio de la serie Y tiene una variación \(\alpha\) entonces

\[H_o: \alpha=0 ; \text{ No existe prueba causalidad de Granger de primer orden}\]

\[H_a: \alpha\ne0 ; \text{ Existe prueba causalidad de Granger de primer orden}\]

Sintaxis de implementación

library(lmtest)
grangertest(X,Y,order=1)

Donde X sera la primera serie de tiempo e Y la segunda serie temporal y order=1 debido a que es una causalidad de primer orden.

Estadistico de prueba

Para el estadistico de prueba se utilizara la prueba \(F\)

\[F={(SCR_R-SCR_{NR})/m \over{SCR_{NR}/(n-k)}}\]

que sigue la distribución F con m y (n − k) gl. En el presente caso, m es igual al número de términos rezagados de M, y k es el número de parámetros estimados en la regresión no restringida

Criterio de decisión

\[\text{no se rechaza } H_o \text{ si } F<F_{critico} \text{ ó } p_{value}>0.05\] \[\text{Se rechaza } H_o \text{ si } F>F_{critico} \text{ ó } p_{value}<0.05\]

Ejemplo de Causalidad en el sentido de Granger

Utilizando datos del Banco Central de Reserva de El Salvador se tomaron los datos del gasto de consumo final e importaciones de bienes y servicios

library(readxl)
Con_Imp <- read_excel("~/Econometria/Recursos/LAB3MAE/Con_Imp.xlsx")

Con_ImpST <- ts(data = Con_Imp[,-1],
            start = c(2005, 1),
            frequency = 1)

Con_ImpST %>% autoplot(main = "Consumo e Importaciones de El Salvador (2005-2020)", xlab = "Años", ylab = "Indices")

Hipotesis

\[H_o: \alpha=0 ; \text{ No existe prueba causalidad de Granger de primer orden}\]

\[H_a: \alpha\ne0 ; \text{ Existe prueba causalidad de Granger de primer orden}\]

Criterio de decisión

\[\text{no se rechaza } H_o \text{ si } F<F_{critico} \text{ ó } p_{value}>0.05\]

\[\text{Se rechaza } H_o \text{ si } F>F_{critico} \text{ ó } p_{value}<0.05\]

Utilizando libreria lmtest

library(lmtest)
grangertest(Consumo~Importaciones,order=1,data = Con_ImpST)
## Granger causality test
## 
## Model 1: Consumo ~ Lags(Consumo, 1:1) + Lags(Importaciones, 1:1)
## Model 2: Consumo ~ Lags(Consumo, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     12                 
## 2     13 -1 0.4957 0.4948

Como se puede determinar en el \(P_{value}=0.4948\) es decir mayor a 0.05 y se dice que no se rechaza la hipotesis nula y se dice que no existe prueba causalidad de Granger de primer orden es decir que el consumo no es causa de las importaciones

Hacemos la prueba a la inversa

library(lmtest)
grangertest(Importaciones~Consumo,order=1,data = Con_ImpST)
## Granger causality test
## 
## Model 1: Importaciones ~ Lags(Importaciones, 1:1) + Lags(Consumo, 1:1)
## Model 2: Importaciones ~ Lags(Importaciones, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     12                 
## 2     13 -1 2.4843  0.141

Como se puede determinar en el \(P_{value}=0.141\) es decir mayor a 0.05 y se dice que no se rechaza la hipotesis nula y se dice que no existe prueba causalidad de Granger de primer orden es decir que las importaciones no son causa del consumo