LABORATORIO 3 MAE118 GT-02

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONOMICAS

ESCUELA DE ECONOMIA

TEMA: LABORATORIO III

MATERIA: METODOS PARA EL ANALISIS ECONOMICO

DOCENTE: CARLOS ADEMIR PÉREZ ALAS

INTEGRANTES:

APELLIDOS NOMBRES CARNET PARTICIPACIÓN
BOLAÑOS PEÑA ABEL ANTONIO BP18001 \(100\%\)
MOLINA MARTINEZ MONICA VALERIA MM18046 \(100\%\)
PANIAGUA MUÑOZ KARLA REGINA PM18112 \(100\%\)
VILLATORO ROMERO DIANA CAROLINA VR18003 \(100\%\)

CICLO: II-2022

FECHA: 28 DE NOVIEMBRE DE 2022

CIUDAD UNIVERSITARIA, SAN SALVADOR, EL SALVADOR, CENTROAMERICA

1.Prueba de raíz unitaria de Dickey & Fuller

Propósito de la prueba

El propósito de la prueba de Dickey & Fuller comprende en determinar si una serie de tiempo (serie estocastica) presenta o no *estacionariedad, es decir, la serie es Estacionaria o No estacionaria.

Hipótesis de la prueba

Consideremos un modelo temporal de la forma:

\[y_t=\varphi y_{t-1}+\varepsilon_t\]

Donde \(|\varphi|\le1\) y presenta un caso de grado 1 dado un proceso estocastico, donde se dice que los valores son distribuidos al tiempo “\(t\)” con distribución normal y de variables independientes.

Se dice que si el valor de \(\varphi=1\) indica que la serie es No Estacionaria es decir que presenta una raiz unitaria, en pocas palabras, la raiz unitaria indica que no hay estacionariedad en el proceso estocastico.

\[H_o : \varphi=1\]

En otro caso como dijimos que este valor puede ser menor o igual a 1, si este fuese menor a 1 entonces la serie es Estacionaria

\[H_A: \varphi<1\]

Sintaxis de implementación

Para la sintaxis se utilizara la libreria tseries por medio del comando *adf.test donde se ejecutara la siguiente sintaxis:

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

Sea “\(x\)” sera la serie de datos que se estara utilizando, y “\(k\)” sera el orden de la serie que se estara estudiando siendo \(0\) una serie de primer orden.

Otro tipo de sintaxis es por medio de la libreria urca con el comando ur.df(x,type=“trend”,lags=0)

Sea “\(x\)” sera la serie de datos que se estara utilizando, el type=“trend” es porque se quiere hacer una prueba de tipo tendencia y lags es el orden que se quiere estudiar el tipo de estacionariedad en este caso \(0\) sera de primer orden.

Estadístico de prueba

Para determinar el estadistico de prueba partimos del proceso estocastico:

\[y_t=\varphi y_{t-1}+\varepsilon_t\] Aplicando linealidad se calculan las variaciones en el periodo \(y\)

\[y_t-y_{t-1}=\varphi y_{t-1}-y_{t-1} +\varepsilon_t\] Aplicando factor comun

\[\Delta y_t=y_{t-1}(\varphi-1) +\varepsilon_t\]

Llamemos a \(\varphi-1=\tau\)

\[\Delta y_t=\tau y_{t-1} +\varepsilon_t\] El valor de \(\tau\) sera nuestro estadistico de prueba

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

library(urca)
A <- ur.df(DJIST, type = "trend", lags = 0)
A@teststat[, 1]
## [1] -1.822009
library(tseries)
A <- adf.test(DJIST, k = 0)
A$statistic
## Dickey-Fuller 
##     -1.822009

Criterio de decisión

Para el analisis del criterio de decisión se hara de la siguiente forma con las hipotesis:

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

\[H_a: \varphi<1 \text{ ; Hay estacionariedad}\] Entonces la forma de rechazar o no la hipotesis nula 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\]

Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

A <- ur.df(DJIST, type = "trend", lags = 0)
DF <- as.vector(A@teststat[, 1])
t <- as.vector(A@cval[1, 1])

abs(t) > abs(DF)
## [1] TRUE

No se rechaza la hipotesis nula y se interpreta que no hay evidencia de estacionariedad en la serie

Implementación de un ejemplo

Utilizando los datos del Indice de Dow Jones desde 2000-2022 (Enero)

library(forecast)
library(readxl)
DJI <- read_excel("~/MAE1182022/LABMAE3/DJI.xlsx",
                  range = "B1:B276")

DJIST <- ts(data = DJI,
            start = c(2000, 1),
            frequency = 12)

DJIST %>% autoplot(main = "Indice de Dow Jones 2000-2022 (Enero)", xlab =
                     "Años/Meses", ylab = "DJI")

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

Hipotesis

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

\[H_a: \varphi<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 liberaria tseries

library(tseries)
A <- adf.test(DJIST, k = 0)
A$statistic
## Dickey-Fuller 
##     -1.822009
A$p.value > 0.05
## [1] TRUE

No se rechaza la hipotesis nula y se interpreta que no hay evidencia de estacionariedad en la serie

2.Cointegración en el enfoque de Soren Johansen

Propósito de la prueba

El proposito de la Prueba de Soren Johansen determinar si entre tres o más series de tiempo pueden tener cointegración, en este caso se utilizan los vectores estocasticos de las series para determinar si presentan raices unitarias y determinar si existe una combinación lineal entre los vectores de cointegración. Este enfoque se pueden determinar cointegración de orden 0 \(I(0)\) y cointegración de orden 1 \(I(1)\).

Hipótesis de la prueba

Partimos de un modelo VAR de series temporales:

\[y_t=\mu+A1y_{t-1}+V_t\] Aplicamos linealidad:

\[y_t-y_{t-1}=\mu+A1y_{t-1}-y_{t-1}+V_t\] Aplicamos factor comun:

\[\Delta y=\mu+(A1-I)y_{t-1}+V_t\] sea:

\[A1-I=A\] Entonces:

\[\Delta y=\mu+Ay_{t-1}+V_t\]

Esta premisa es una representación de una variacion llamada MCE (Mecanismo de Correcion de Error) y donde A es un Vector de corrección Error, y si esto fuese para “n” dimensiones se aplica de la siguiente forma:

\[y_{t}=\mu+A1y_{t-1}+A2y_{t-2}+...+Apy_{t-p}+V_t\]

Si aplicamos linealidad

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

Siendo \(\Gamma_i=A_1+...+A_p\)

La prueba es sensible a la longitud de los rezagos elegidos en el Vector, en la matriz A se encuentra la relación de largo plazo. Si su rango es; rango (A) = \(\Gamma\), entonces se pueden encontrar las siguientes condiciones

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

Si \(\Gamma\) = m, el proceso multivariante \(Y_{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á p 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

Para determinar la cointegración se utilizara la libreraria urca con el comando ca.jo

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

Donde “\(x\)” es el vector de la serie de tiempo a estudiar.

eigen, que se utilizara el criterio vectorial de autovalores y en este caso cuenta la constante,

trend, significa que el tipo de analisis sera de tendencia.

Estadístico de prueba

El estadistico de prueba sera:

\[\Gamma_i=A_1+...+A_p\]

Criterio de decisión

El criterio de decisión sera el siguiente:

\[\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\]

Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

library(urca)
B <- ca.jo(NASDAQTS,"eigen","trend")

B0<-B@teststat[3]
B1<-B@teststat[2]

B0
## [1] 51.83823
B1
## [1] 20.81836
t0<-B@cval[3,2]
t1<-B@cval[2,2]

t0
## [1] 25.54
t1
## [1] 18.96

Para ver si existe cointegración de grado 0 \(I(0)\)

t0>B0
## [1] FALSE

No se rechaza la hipotesis nula y existe evidencia de que hay cointegración de orden cero

Implementación de un ejemplo

Se utilizaran las series de Apertura, Cierre y Maxima del Indice NASDAQ 2015-2022 (Noviembre)

library(dplyr)
NASDAQ <- read_excel("~/MAE1182022/LABMAE3/NASDAQ.xlsx",
                     range = "B1:D96")

NASDAQTS <- ts(data = NASDAQ,
               start = c(2015, 1),
               frequency = 12)

NASDAQTS %>% autoplot(main="Indice NASDAQ 2015-2022", xlab="Meses",ylab="NASDAQ")

ts_decompose(NASDAQTS, type = "additive", showline = TRUE)
library(urca)
B <- ca.jo(NASDAQTS,"eigen","trend")

B0<-B@teststat[3]
B1<-B@teststat[2]

B0
## [1] 51.83823
B1
## [1] 20.81836
t0<-B@cval[3,2]
t1<-B@cval[2,2]

t0
## [1] 25.54
t1
## [1] 18.96

Para ver si existe cointegración de grado 0 \(I(0)\)

t0>B0
## [1] FALSE

No se rechaza la hipotesis nula y no existe evidencia de que hay cointegración de orden cero

Para ver si existe cointegración de grado 1 \(I(1)\)

t1>B1
## [1] FALSE

No se rechaza la hipotesis nula y no existe evidencia de que hay cointegración de orden uno

3.Causalidad en el sentido de Granger

Propósito de la prueba

La causalidad en el sentido de Granger determina si una serie estocastica puede predecir otra serie estocastica, en este caso nos basamos en el supuesto de 2 series temporales \(Y\) y \(Z\), donde se dice que si \(Y\) causa \(Z\) y quiere decir que los modelos de \(Z\) dan retrasos de \(Y\).

Hipótesis de la prueba

Se parten de dos series temporales

\[Y_t=\sum_{i=1}^n \lambda_i Z_{t-i}+\sum_{j=1}^n \rho_jY_{t-j}+\varepsilon_{1t}\]

\[Z_t=\sum_{i=1}^n \omega_i Z_{t-i}+\sum_{j=1}^n \nu_jY_{t-j}+\varepsilon_{2t}\] Donde tomaremos de referencia la variable lambda \(\lambda\) para marcar el grado de sensibilidad que produce cambios en la serie \(Z\).

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

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

Sintaxis de implementación

Para ello usaremos la libreria lmtest con el comando grangertest

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

Donde \(Y\) es la primera serie de tiempo,

\(Z\) la segunda serie de tiempo,

y order determinara el orden que queremos el tipo de causalidad en este caso orden 1.

Estadístico de prueba

Para este caso el estadistico de prueba a utilizar sera el \(F\) de Fischer

Criterio de decisión

\[\text{no se rechaza } H_o \text{ si } F<F_{critico}\]

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

\[\text{Se rechaza } H_o \text{ si } F>F_{critico}\]

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

Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba

library(lmtest)
grangertest(SP500~NASDAQ,order=1,data = SPNASTS)
## Granger causality test
## 
## Model 1: SP500 ~ Lags(SP500, 1:1) + Lags(NASDAQ, 1:1)
## Model 2: SP500 ~ Lags(SP500, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     91                 
## 2     92 -1 1.0198 0.3152

En este caso utilizando un \(P_{value}=0.3152\) quiere decir que es mayor a \(0.05\) y se interpreta, No se rechaza la hipotesis nula y no existe evidencia de causalidad en el sentido de Granger de primer orden, por lo que el Indice SP500 no es causado por el NASDAQ

Implementación de un ejemplo

Utilizando las series de datos de SP500 y NASDAQ

SPyNAS <- read_excel("~/MAE1182022/LABMAE3/SPyNAS.xlsx", 
    range = "B1:C96")

SPNASTS <- ts(data = SPyNAS,
               start = c(2015, 1),
               frequency = 12)

SPNASTS %>% autoplot(main="Indice SP500 y NASDAQ 2015-2022", xlab="Meses",ylab="Index")

ts_decompose(SPNASTS, type = "additive", showline = TRUE)

Verificando si SP500 es causado por NASDAQ

library(lmtest)
grangertest(SP500~NASDAQ,order=1,data = SPNASTS)
## Granger causality test
## 
## Model 1: SP500 ~ Lags(SP500, 1:1) + Lags(NASDAQ, 1:1)
## Model 2: SP500 ~ Lags(SP500, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     91                 
## 2     92 -1 1.0198 0.3152

En este caso utilizando un \(P_{value}=0.3152\) quiere decir que es mayor a \(0.05\) y se interpreta, No se rechaza la hipotesis nula y no existe evidencia de causalidad en el sentido de Granger de primer orden, por lo que el Indice SP500 no es causado por el NASDAQ

Verificando si NASDAQ es causado por SP500

library(lmtest)
grangertest(NASDAQ~SP500,order=1,data = SPNASTS)
## Granger causality test
## 
## Model 1: NASDAQ ~ Lags(NASDAQ, 1:1) + Lags(SP500, 1:1)
## Model 2: NASDAQ ~ Lags(NASDAQ, 1:1)
##   Res.Df Df      F  Pr(>F)  
## 1     91                    
## 2     92 -1 5.4351 0.02194 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

En este caso utilizando un \(P_{value}=0.02194\) quiere decir que es menor a \(0.05\) y se interpreta, Se rechaza la hipotesis nula y existe evidencia de causalidad en el sentido de Granger de primer orden, por lo que el Indice NASDAQ no es causado por el SP500

Paquetes utilizados

Hothorn, Torsten, Achim Zeileis, Richard W. Farebrother, and Clint Cummins. 2022. Lmtest: Testing Linear Regression Models. https://CRAN.R-project.org/package=lmtest.
Hyndman, Rob J, and Yeasmin Khandakar. 2008. “Automatic Time Series Forecasting: The Forecast Package for R.” Journal of Statistical Software 26 (3): 1–22. https://doi.org/10.18637/jss.v027.i03.
Hyndman, Rob, George Athanasopoulos, Christoph Bergmeir, Gabriel Caceres, Leanne Chhay, Kirill Kuroptev, Mitchell O’Hara-Wild, et al. 2022. Forecast: Forecasting Functions for Time Series and Linear Models. https://CRAN.R-project.org/package=forecast.
Krispin, Rami. 2020. TSstudio: Functions for Time Series Analysis and Forecasting. https://github.com/RamiKrispin/TSstudio.
Pfaff, B. 2008. Analysis of Integrated and Cointegrated Time Series with r. Second. New York: Springer. https://www.pfaffikus.de.
Pfaff, Bernhard. 2022. Urca: Unit Root and Cointegration Tests for Time Series Data. https://CRAN.R-project.org/package=urca.
R Core Team. 2022. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Trapletti, Adrian, and Kurt Hornik. 2022. Tseries: Time Series Analysis and Computational Finance. https://CRAN.R-project.org/package=tseries.
Wickham, Hadley, and Jennifer Bryan. 2022. Readxl: Read Excel Files. https://CRAN.R-project.org/package=readxl.
Wickham, Hadley, Romain Francois, Lionel Henry, and Kirill Muller. 2022. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.
Zeileis, Achim, and Torsten Hothorn. 2002. “Diagnostic Checking in Regression Relationships.” R News 2 (3): 7–10. https://CRAN.R-project.org/doc/Rnews/.