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
<- na.omit(`BTC-USD`[,4]) datos
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)
<- read_csv("/cloud/project/VECM_LectureNotes.csv") datos
## 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.