Laboratorio 3

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

“LABORATORIO 3”

DOCENTE: MSF. CARLOS ADEMIR PÉREZ

MATERIA: MÉTODOS PARA EL ANÁLISIS ECONÓMICO

GT: 02

Presentado por:

NOMBRE CARNET
LUIS DAVID CASTRO MARTINEZ CM16011
KEILY MARLENE CAMPOS ULLOA CU14003
LISBETH ESMERALDA MELCHOR REYES MR14076
RUTH ABIGAIL MARROQUIN SARAVIA MS17026

1. Explique cómo realizar las siguientes pruebas en R:

1. Prueba de Raíz Unitaria de Dickey & Fuller.

PROPOSITO DE LA PRUEBA

La prueba de Dickey & Fuller es utilizada para determinar si en una serie de tiempo existe raíz unitaria, y por tanto, conocer su estacionaridad; Las variables que tienen una tendencia temporal definida se denominan “no estacionarias”. Las estimaciones de regresiones con variables no estacionarias son espurias salvo que estas estén cointegradas. Dos variables no estacionarias cointegradas son aquellas cuyos residuos son estacionarios.

Por tanto, resulta necesario previo a utilizar una serie de tiempo con fines de estimación y pronóstico, aplicarle el test de Dickey & Fuller (DF) para determinar si la serie en cuestión es estacionaria.

HIPOTESIS DE LA PRUEBA

Antes de plantear las hipótesis de la prueba, cabe mencionar que sus autores parten del proceso estocástico de raíz unitaria: \[Yt=ρYt−1+εt, con −1≤ρ≤ 1\]

Y al sustraer Yt−1 de ambos térmnos de la expresión, se tiene: \[ΔY=(ρ−1)Yt−1+εt\]

Las hipótesis se plantean de la siguiente forma (Robinson and Mahadeva 2009): \[ Ho:α=0 → (∅−1)=0 → ∅=1 \]

H0:ρ=1, es decir, se presenta raíz unitaria, por lo que la serie de tiempo es no estacionaria, que se convierte en un modelo de caminata aleatoria sin deriva o Random Walk Pure.

Pero si: \[H1:α≠0→(∅−1)≠0→∅≠1α<0 → (∅−1)<0 → ∅<1 \] H1:ρ<1, es decir, la serie de tiempo es estacionaria.

SINTAXIS DE IMPLEMENTACION EN R

Para llevar a cabo esta prueba en R se usa la función ur.df() de la librería urca de la siguiente manera: 1. Primero cargamos los datos y las librerias a utilizar, entre ellas urca. 2. Se transforman los datos a series temporales y se traza la serie de tiempo. 3. Se plantea el modelo de la serie y aplicamos el test.

ESTADISTICO DE PRUEBA

Estadístico τ(Tau) sobre la variable de prueba rezagada, se utiliza τ debido a que las pruebas t usuales no son adecuadas. La salida que R nos da contiene un valor t que es el que contrastaremos con el valor crítico.

CRITERIO DE DECISION

Se puede aplicar el método del valor crítico o el método del p_value.

*Por el método del valor crítico: Rechazar H0 si el estadístico de prueba es menor al valor crítico, (−τ<−τα)

*Por el método del p_value: Rechazar H0 si el p_value es menor o igual al nivel de significancia, (p_value≤α)

En otras palabras No se Rechaza H0:β=0 ó P−Value=1

La serie de tiempo no es estancionaria es decir tiene tendencia estocástica.

Se rechaza H0:β<0 ó P−Value<1

La serie de tiempo es estancionaria es decir tiene una tendencia determinista.

INTERPRETACION DE RECHAZO, O NO RECHAZO DE LA HIPOTESIS NULA DE LA PRUEBA

Ho: r = 0 contra H1: r ≠ 0. Si no puede rechazarse la hipótesis nula (p-valué > 0.05) la serie es no estacionaria y tiene raíz 1 (I(1)), es decir si el estadístico de prueba es mayor que el valor critico se tendrá la evidencia suficiente en favor de no rechazar la hipotesis nula por lo que la serie no es estacionaria.

Si el estadístico de prueba es menor que el valor critico se tendrá la evidencia suficiente en favor de rechazar la hipotesis nula (p-valué <0.05) es decir que la serie es estacionaria significando que las variables cointegran y se mantienen juntas en el tiempo.

EJEMPLO

Determinaremos si la serie de tiempo del precio de cierre de la criptomoneda Bitcoin (desde el año 2017) tiene raíz unitaria.

#Se utilizará la librería quantmod (Ryan and Ulrich 2020)
library(quantmod)
getSymbols("BTC-USD",quote="Close",from ="2017-01-01",periodicity = "daily")
## [1] "BTC-USD"
#para obtener base de datos a utilizar
datos<- na.omit(`BTC-USD`[,4])
library(tseries)
adf.test(x = datos, k = 0)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  datos
## Dickey-Fuller = -1.3958, Lag order = 0, p-value = 0.8341
## alternative hypothesis: stationary

2. Cointegración en el enfoque de Soren Johansen.

Propósito de la prueba

El test de Soren Johansen permite evidenciar si dos o más series de tiempo se mueven en la misma tendencia a lo largo del tiempo, teniendo a su vez estabilidad en las diferencias entre ellas. Así pues, este conjunto de series de tiempo no estacionarias de orden I(1), estarán cointegradas si existe una combinación lineal de esas series que sea estacionaria (de orden I(0)). (Mata, n.d.)

Hipótesis de la prueba

Las hipótesis de esta prueba se presentan a continuación:

H0:r=0, es decir, no existe presencia de cointegración entre las variables en estudio.

H1:r>0, es decir, hay presencia de una relación de cointegración entre las variables.

Sintaxis de implementación en R

Para realizar esta prueba en R, se procede a utilizar la función ca.jo() que pertenece al paquete urca (urca?), cuya sintaxis se presenta a continuación:

ca.jo(X,type,ecdet,k)

Donde:

x: Matriz de información a aplicar el test. type: El tipo de prueba a realizar. ecdet: Indica si la cointegración presentará o no intercepto, constante y tendencia. k: Orden de rezagos de las variables.

Estadístico de prueba

ara este caso, Johansen presenta dos pruebas que pueden utilizarse (ambas basadas en el criterio de máxima verosimilitud), teniendo por tanto dos posibles estadísticos de prueba, los cuales explica (“RPubs - Cointegración” n.d.):

El estadístico de prueba de la traza es efectuada en la secuencia r=n−1,…,1,0 y verifica la H0 de que el rango de cointegración es r en contraste a la H1 de que dicho rango es n. Los estadísiticos correspondientes se presentan en la primera columna del resumen de la prueba:

####################### 
# Johansen-Procedure # 
###################### 

#Test type: trace statistic , with linear trend in cointegration 

#Values of teststatistic and critical values of test:

          #test 10pct  5pct  1pct
#r <= 2 |  7.24 10.49 12.25 16.26
#r <= 1 | 21.64 22.76 25.32 30.45
#r = 0  | 52.57 39.06 42.44 48.45

#Eigenvectors, normalised to first column:
#(These are the cointegration relations)

El estadístico de prueba del autovalor máximo se efectúa en la secuencia r=0,1,…,n−1 y verifica la H0 de que el rango de cointegración es r en contraste a la H1 de que dicho rango es r+1. Los estadísiticos correspondientes se presentan en la primera columna del resumen de la prueba:

###################### 
# Johansen-Procedure # 
###################### 

#Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 

#Values of teststatistic and critical values of test:

         # test 10pct  5pct  1pct
#r <= 2 |  7.89  7.52  9.24 12.97
#r <= 1 | 21.64 13.75 15.67 20.20
#r = 0  | 87.77 19.77 22.00 26.81

#Eigenvectors, normalised to first column:
#(These are the cointegration relations)

Criterio de decisión

Aplicando el método del valor crítico, al rechazar H0=0, se procede nuevamente a hacer el contraste de hipótesis, ahora con H0=1, teniendo H1=2, y así sucesivamente se repite el proceso hasta que no se rechace H0.

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

Al rechazar H0=0, se tendrá que las series de tiempo analizadas presentan cointegración, el largo del vector de cointegración lo determinará el valor de que le correspondió a la última H0 no rechazada.

Implementación de un ejemplo.

El ejemplo que se muestra a continuación está tomado de (Eloriaga 2020), que de igual forma proporciona la data a utilizar en su sitio oficial.

library(urca)
library(forecast)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0      ✔ purrr   0.3.5 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.1 
## ✔ readr   2.1.3      ✔ forcats 0.5.2 
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first()  masks xts::first()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::last()   masks xts::last()
library(readr)
datos <- read_csv("/cloud/project/VECM_LectureNotes.csv")
## Rows: 69 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): Date
## dbl (14): CPI, GDP, lnCPI, lnGDP, M4, M3, M1, lnM4, lnM3, lnM1, M2, lnM2, Co...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

3. Causalidad en el sentido de Granger.

Propósito de la prueba

La prueba de causalidad de Granger es una prueba de hipótesis estadística para determinar si una serie de tiempo es un factor y ofrece información útil para pronosticar otra serie de tiempo. (Li 2020)

En otras palabras, la prueba de causalidad de Granger se usa para examinar si una serie de tiempo puede usarse para pronosticar otra.

Hipótesis de la prueba

Esta prueba utiliza las siguientes hipótesis nulas y alternativas:

H0: La serie de tiempo x no Granger-causa la serie de tiempo y.

H1: La serie de tiempo x Granger-causa la serie de tiempo y.

El término “Granger-causa” significa que conocer el valor de la serie de tiempo x en un cierto retraso es útil para predecir el valor de la serie de tiempo y en un período de tiempo posterior. (Zach 2021)

Sintaxis de implementación en R

Para realizar una prueba de causalidad de Granger en R, se puede usar la función grangertest () del paquete lmtest (Zeileis and Hothorn 2002), que usa la siguiente sintaxis:

grangertest(x,y,order=1)

Donde:

x: la primera serie temporal y: la segunda serie temporal order: el número de retrasos que se utilizarán en la primera serie de tiempo. El valor predeterminado es 1.

Estadístico de prueba

Esta prueba produce un estadístico de prueba F con un p-value correspondiente.

Haciendo referencia a la salida generada en R:

# Granger causality test

# Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3)
# Model 2: egg ~ Lags(egg, 1:3)
#  Res.Df Df      F Pr(>F)
# 1     44                 
# 2     47 -3 5.405 0.002966

El valor del estadístico F es 5.405, al que corresponde un p-value de 0.002966.

Criterio de decisión

A continuación se muestra el criterio de decisión sobre el recha o no rechazo de la hipótesis nula:

p_value≤α rechazar H0

p_value>α No rechazar H0

Haciendo referencia a la salida generada en R:

# Granger causality test

# Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3)
# Model 2: chicken ~ Lags(chicken, 1:3)
#  Res.Df Df     F   Pr(>F)   
# 1     44                     
# 2     47 -3 5.405 0.002966 **

Para un nivel de significacia de 95% se tiene un p-value que corresponde a 0.002966 ≤ 0.05. Por tanto se rechaza la hipótesis nula.

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

Si p_value≤α, por ejemplo α=0.05 entonces es posible rechazar la hipótesis nula y concluir que hay evidencia suficiente para decir que la serie de tiempo x Granger-causa la serie de tiempo y.

Por otra parte, si p_value>α se puede decir que hay evidencia suficiente para no rechazar la hipótesis nula. Por tanto, la serie de tiempo “x” NO Granger-causa la serie de tiempo “y”.

Implementación de un ejemplo

El siguiente ejemplo se toma de: How to Perform a Granger-Causality Test in R (Zach 2021).

Para este ejemplo, se usará el conjunto de datos ChickEgg que viene precargado en el paquete lmtest. Este conjunto de datos contiene valores para la cantidad de huevos fabricados junto con la cantidad de pollos en los EE. UU. Desde 1930 hasta 1983:

library(lmtest)
data(ChickEgg) #Cargando la base 
head(ChickEgg)
## Time Series:
## Start = 1930 
## End = 1935 
## Frequency = 1 
##      chicken  egg
## 1930  468491 3581
## 1931  449743 3532
## 1932  436815 3327
## 1933  444523 3255
## 1934  433937 3156
## 1935  389958 3081

A continuación, se procede a utilizar la función grangertest () para realizar una prueba de causalidad de Granger para ver si el número de huevos fabricados es predictivo del número futuro de pollos. Se ejecutará la prueba usando tres lags o retrasos:

grangertest(chicken ~ egg, order = 3, data = ChickEgg)
## Granger causality test
## 
## Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3)
## Model 2: chicken ~ Lags(chicken, 1:3)
##   Res.Df Df     F   Pr(>F)   
## 1     44                     
## 2     47 -3 5.405 0.002966 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretando el resultado

Modelo 1: Este modelo intenta predecir el número de pollos utilizando el número de pollos en los tres años anteriores y el número de huevos en los tres años anteriores como variables predictoras. Modelo 2: Este modelo intenta predecir el número de pollos utilizando solo el número de pollos en los tres años anteriores como variables predictoras. F: Esta es la estadística de prueba F. Resulta ser 5.405. Pr (> F): este es el valor p que corresponde al estadístico de prueba F. Resulta ser 0.002966. Regla de decisión

Dado que el p-value es menor que 0.05, se rechaza la hipótesis nula de la prueba y se concluiye que conocer el número de huevos es útil para predecir el número futuro de pollos.

Bibliografía

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2022. Rmarkdown: Dynamic Documents for r.
CEPAL. n.d. Construccion de Escenarios Economicos y Econometria Avanzada. Universidad Nacional de Colombia.
Chamberlain, Gary. 2014. The General Equivalence of Granger and Sims Causality. Econometric Societyc. http://www.jstor.org/stable/1912601.
Chung, Victor. n.d. “Modelos VEC En r.” https://rstudio-pubs-static.s3.amazonaws.com/189106_a4b4ea3e4c9747ef9a7a28eba1137d6c.html.
Eloriaga, Justin. 2020. Johansen Cointegration Test in r. https://youtu.be/VjMLj7crVkw.
Hothorn, Torsten, Achim Zeileis, Richard W. Farebrother, and Clint Cummins. 2022. Lmtest: Testing Linear Regression Models.
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.
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.
Ryan, Jeffrey A., and Joshua M. Ulrich. 2022. Quantmod: Quantitative Financial Modelling Framework.
Trapletti, Adrian, and Kurt Hornik. 2022. Tseries: Time Series Analysis and Computational Finance.
Wickham, Hadley. 2022. Tidyverse: Easily Install and Load the Tidyverse.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 2018. R Markdown: The Definitive Guide. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2020. R Markdown Cookbook. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown-cookbook.
Zeileis, Achim, and Torsten Hothorn. 2002. “Diagnostic Checking in Regression Relationships.” R News 2 (3): 7–10. https://CRAN.R-project.org/doc/Rnews/.