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
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
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\]
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]
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
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"
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"
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)\)
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}\]
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
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
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"
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"
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.
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}\]
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.
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
\[\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 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