UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

CICLO II-2022

Laboratorio 3: Cointegración y Causalidad

MÉTODOS PARA EL ANÁLISIS ECONÓMICO

Docente:

Carlos Ademir Pérez Alas

Integrantes:

Blanco Ochoa, José Alejandro BO20007

Bonilla Melara, Jeffry Isaac BM20033

Iraheta Mendoza, Ana Sofía IM19002

Mejía Platero, Roberto Moisés MP19056

Palacios Zuniga, Luis Alexander PZ18008

Grupo Teórico

03

Grupo de Trabajo

San Salvador, Ciudad Universitaria, 28 de noviembre del 2022

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

Propósito de la prueba, es decir ¿Para qué se usa?

Busca determinar la existencia o no de raíces unitarias en una serie de tiempo con el objetivo de comprobar si existe estacionaridad.

En términos sencillos, una serie de tiempo se llama estacionaria si no se desvía hacia el infinito y se mantiene alrededor de la media. Sus propiedades estadísticas (ej. momentos) no cambian con el tiempo. (MicroSoftware 2017)

Hipótesis de la prueba.

Si consideramos un proceso estocástico de la forma:

\[γ_i=φγ_i+ε_i\]

Donde \[|φ| ≤ 1\] Y \[εi\] es la serie de tiempo

Si \[|φ| = 1\] ; Tendremos una raíz unitaria.

En particular, si \(φ = 1\), tendremos un random walk, o camino aleatorio (Sin drift), el cuál no es estacionario.

  • Técnicamente mientras \(|φ| = 1\) el proceso será No Estacionario.

  • Si \(|φ| < 1\) el proceso es estacionario.

Hay otra opción que sería \[| φ | > 1\]

Dicho proceso sería un AR(1), es decir autorregresivo de primer orden.

¿Cómo vemos si hay raíces unitarias?

  1. Calculamos la primera diferencia
    \[y_i-y_(i-1)=φy_(i-1)+ε_i-y_(i-1)\]

Simplificamos la ecuación: \[y_i-y_(i-1)=(φ〖-1)y〗_(i-1)+ε_i\]

  1. Convertimos en una ecuación de regresión lineal simple usando el operador delta y beta: \[∆y_i=γ_i-y_(i-1) and set β=φ – 1\]

Simplificamos

\[∆y_i=βy_(i-1)+ε_i\] donde \(β≤0\)

Así que el test para φ es transformado en un test donde el parámetro pendiente es:
\[β = 0\]

De forma que tenemos un test de una sola cola ya que β no puede ser positivo, por lo que obtenemos como resultado en nuestras hipótesis:

  • \(H_0:β=0\) Existe raiz unitaria (no estacionaridad)

  • $H_1:β<0 $ No existe raiz unitaria (existe presencia de estacionaridad)

Podemos, por tanto, concluir se establecer como hipótesis nula (H0) la presencia de tendencia estocástica en las observaciones, mientras que para el caso de la hipótesis alterna(H1), se establece como la no tendencia estocástica en las observaciones.

Cuanto más negativa sea, más fuerte será el rechazo de la hipótesis de que existe una raíz unitaria. Por supuesto, esto es solo en depende en ocasiones del nivel de confianza, es decir que si el estadístico de la prueba DF es positivo, automáticamente se puede decidir no rechazar la hipótesis nula de raíz unitaria.(A.Rico 2017)

Sintaxis de implementación en R, explicando cada uno de los argumentos.

Calcula la prueba de Dickey-Fuller para el valor nulo de que x tiene una raíz unitaria. Se utiliza la ecuación de regresión general que incorpora una constante y una tendencia lineal y se calcula el estadístico t para un coeficiente autorregresivo de primer orden igual a uno. El número de rezagos utilizados en la regresión es k. El valor predeterminado de trunc((longitud(x)-1)^(1/3)) corresponde al límite superior sugerido en la tasa a la que se debe hacer crecer el número de rezagos, k, con el tamaño de la muestra para el Configuración general de ARMA(p,q). Tenga en cuenta que para k es igual a cero, se calcula la prueba estándar de Dickey-Fuller. Los valores de p se interpolan de la Tabla 4.2, p. 103 de Banerjee et al. (1993). Si la estadística calculada está fuera de la tabla de valores críticos, se genera un mensaje de advertencia. No se permiten valores faltantes. (Banerjee et al. 1993)

Sintaxis

adf.test \[adf.test(x, alternative = c("stationary", "explosive"), k = trunc((length(x)-1)^(1/3) ))\]

x

un vector numérico o una serie de tiempo.

alternative

indica la hipótesis alternativa y debe ser una de "estacionaria" (por defecto) o "explosiva". Puede especificar solo la letra inicial.

k

El orden de retraso para calcular el estadístico de prueba. En el caso se requiera utilizar la prueba estándar (es decir no aumentada) habrá de utilizar un k=0

 

ur.df {urca} La función ur.df() calcula la prueba de Dickey-Fuller aumentada. Si el tipo se establece en “none” (ninguno), no se incluye ni una intersección ni una tendencia en la regresión de prueba. Si se establece en “drift”, se agrega una intercepción y si se establece en “Tendencia” (tendencia), se agrega una intercepción y una tendencia. Los valores críticos se toman de Hamilton (1994) y Dickey y Fuller (1981). (Dickey and Fuller 1979)

Sintaxis \[ur.df(y, type = c("none", "drift", "trend"), lags = 1, selectlags = c("Fixed", "AIC", "BIC"))\]

Y

Vector a probar para una raíz unitaria.

type

Tipo de prueba, ya sea "none", "drift" or "trend".

lags

Número de rezagos de la variable endógena a incluir.

selectlags

La selección de retardo se puede lograr de acuerdo con los criterios de información Akaike "AIC" o Bayes "BIC". El número máximo de retrasos considerados se establece por retrasos. El valor predeterminado es usar una longitud de retraso "fija" establecida por retrasos.

 

Estadístico de prueba (haga referencia en la salida que genera R)

Es posible utilizar la aproximación clásica de regresión lineal, sin embargo, habrá que tener en cuenta que no se utilizara la tradicional tabla de t para aceptar o rechazar la hipótesis. El coeficiente seguirá una distribución tau, por lo que la prueba consiste en determinar si el estadístico tau (que es equivalente al estadístico t usual) es menor que el t critico de los valores estadísticos tau de la tabla de dickey fuller. - Si el tau value es menor que el valor crítico de la tabla, entonces se tienen resultado significativo - Si el tau value es mayor que el valor de la tabla, se acepta la hipótesis nula de que existe una raíz unitaria y la serie de tiempo no es estacionaria

Referencia de salida en r

library(quantmod)
library(tseries)
library(fImport)
library(httr)
library(RCurl)
library(rjson)
library(parsedate)
require(tseries)
library(urca)
getSymbols("BTC-USD",quote="Close",from ="2016-01-01",periodicity = "daily")
## [1] "BTC-USD"
precio_BTC<- na.omit(`BTC-USD`[,4])
adf.test(precio_BTC,k=0) 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  precio_BTC
## Dickey-Fuller = -1.5972, Lag order = 0, p-value = 0.7489
## alternative hypothesis: stationary
plot(precio_BTC)

#Al ser el valor critico menor(-3.413) que el valor t (-1.587), se puede concluir que se denota la  existencia de raíz unitaria  y por tanto hay prueba de no estacionariedad, por lo que no se rechaza la ho. además, se puede fortalecer dichos argumentos al observas que el p-value(0.7535) > v_critic (0.05)

Criterio de decisión (haga referencia en la salida que genera R)

La prueba de raíz unitaria se lleva a cabo bajo la hipótesis nula α=0 contra la hipótesis alternativa de α<0.

  • Rechazar de Ho – no existencia de raíz unitaria (estacionaridad)- \[(VC> t) o (P value > VC)\] -No rechazo de Ho – Existencia de raíz unitaria (no estacionario)- \[(VC< t) o(P value< VC) \]

El valor critico a utilizar dependerá de 3 importantes factores:

  1. La cantidad de observaciones con que la data cuenta.

  2. El nivel de confianza a considerar.

  3. Y de la versión de prueba a utilizar, esta según algunos autores se toma según el comportamiento de los valores (por lo que es de importancia en primer lugar graficar). Partiendo del esto, se tomará en cuenta si la serie original presenta tendencia, se debe incluir tendencia e intercepto. Si no parece tener tendencia y su media no es cero, sólo incluir intercepto. Si parece fluctuar en torno a su valor medio cero, no incluir ni tendencia e intercepto.(Barnett and Seth 2014)

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

  • Al ser rechazada la hipótesis Nula, no se rechaza la hipótesis alternativa y por tanto se concluye que no existe raíz unitaria (los residuales son estacionarios).
  • Al no ser rechazada la hipótesis nula, se concluye que existe raíz unitaria (los residuales no son estacionarios)

Implementación de un ejemplo.

Test de Dickey Fuller Standar

library(quantmod)
library(tseries)
library(fImport)
library(httr)
library(RCurl)
library(rjson)
library(parsedate)
require(tseries)
library(urca)

Planteamiento de hipotesis.

  • H0. La serie temporal presentanta raiz unitaria (no estacionaridad)
  • H1. La serie temporta no presenta raiz unitaria (existe evidencia de estacionaridad)

Carga de data .

getSymbols("ETH-USD",quote="Close",from ="2016-01-01",periodicity = "daily")
## [1] "ETH-USD"
plot(`ETH-USD`[,4],type="l")

Partiendo de lo mencionado en el punto e, se tomara en la prueba tipo 2 (se incluira tendencia e intercepto), debido a que visualmente se puede determinar tendencia en los valores estudiados.

Utilizando la funcion adf.test la cual nos arroja el modelo de dickey fuller de tipo 2 (Con intercepto y constante)

precio_ethereum<- na.omit(`ETH-USD`[,4])
adf.test(precio_ethereum,k=0)  
## 
##  Augmented Dickey-Fuller Test
## 
## data:  precio_ethereum
## Dickey-Fuller = -1.6753, Lag order = 0, p-value = 0.7158
## alternative hypothesis: stationary
# número de datos 1843>500 
# valor critico -3.413 al 5%= 0.05
# valor t -1.6773


#comparando el valor critico con el t
# t> valor_critico

Se concluye _Al ser el valor critico (-3.413) menor que el valor t (-1.6854), se puede concluir que se denota la existencia de raíz unitaria y por tanto hay prueba de no estacionariedad por lo que no se rechaza la ho. además, se puede fortalecer dichos argumentos al observas que el p-value (0.7115)> v_critic (0.05)__

Utilizando la funcion y=ur.df Con intercepto y constante

y=ur.df(precio_ethereum,type="trend",lags=0)
summary(y)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -913.49  -13.36   -2.02   13.39  535.51 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  0.831240   3.743795   0.222    0.824  
## z.lag.1     -0.003453   0.002061  -1.675    0.094 .
## tt           0.003835   0.004642   0.826    0.409  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 79.61 on 1841 degrees of freedom
## Multiple R-squared:  0.001598,   Adjusted R-squared:  0.0005137 
## F-statistic: 1.474 on 2 and 1841 DF,  p-value: 0.2294
## 
## 
## Value of test-statistic is: -1.6753 1.0042 1.4736 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.96 -3.41 -3.12
## phi2  6.09  4.68  4.03
## phi3  8.27  6.25  5.34
y@teststat
##                tau3     phi2     phi3
## statistic -1.675295 1.004224 1.473639
y@cval
##       1pct  5pct 10pct
## tau3 -3.96 -3.41 -3.12
## phi2  6.09  4.68  4.03
## phi3  8.27  6.25  5.34
# número de datos 1843>500 
# valor critico -3.413 al 5%= 0.05
# valor t -1.6773


#comparando el valor critico con el t
# t> valor_critico

Se concluye _Al ser el valor critico (-3.413) menor que el valor t (-1.6854), se puede concluir que se denota la existencia de raíz unitaria y por tanto hay prueba de no estacionariedad por lo que no se rechaza la ho. además, se puede fortalecer dichos argumentos al observas que el p-value (0.7115)> v_critic (0.05)__

2. Cointegración en el enfoque de Soren Johansen

Propósito de la prueba

El procedimiento multivariado de S. Johansen (1988 y 1991), profesor de estadística matemática de la Universidad de Copenhagen, se ha convertido en un método muy popular para probar la existencia de cointegración en la variables I(1) y I(0), en donde I(1) y I(0) indican integración de primer y cero orden, respectivamente. En la tecnología de S. Johansen, es necesario analizar las series previamente con el fin de conocer si presentan o no raíces unitarias. Las series que presenten raíces unitarias se colocan en un vector autorregresivo a partir del cual se puede probar la existencia de una o mas combinaciones lineales J(U) o vectores de cointegración.(Mahadeva and Robinson 2009)

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 (Bernhard Pfaff 2016), 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

El estadístico de prueba en la salida R se muestra como “Values of teststatistic and critical values of test:” los estadisticos de estas se ubicaran en la columna test del resumen de estadisticas de pruebas y valores criticos.

Criterio de decisión

Los siguientes planteamientos fueron tomados de: (Mata 2004)

Rechace \(H0\) si \(p≤α\)

No rechace a \(H0\) si \(p>α\)

Donde:

\(α=0.05\)

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

\(P<0.10\) No significativo \(0.05<p<0.10\) marginalmente significativo \(0.01<p<0.01\) Significativo \(0.001<p<0.01\) altamente significativo \(p<0.01\) fuertemente significativo

Ejemplo de aplicacion

El siguiente ejemplo fue realizado por: (Eloriaga 2020)

Importacion de datos

library(urca)
library(forecast)
library(tidyverse)
library(readr)
datos <- read_csv("C:/Users/PC/Desktop/UES/CICLO 2 2022/MAE/Lab 3/DATA.csv")
head(datos)
## # A tibble: 6 × 15
##     CPI Date     GDP lnCPI lnGDP    M4    M3    M1  lnM4  lnM3  lnM1    M2  lnM2
##   <dbl> <chr>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  64.6 1/31… 1.84e6  4.17  14.4 10.2   6.57 19.0   2.32  1.88  2.94  6.73  1.91
## 2  65.1 5/1/… 1.93e6  4.18  14.5  8.97  5.63 12.2   2.19  1.73  2.50  5.73  1.75
## 3  65.5 8/1/… 1.91e6  4.18  14.5  6.93  4.4   9.87  1.94  1.48  2.29  4.3   1.46
## 4  65.7 10/3… 2.16e6  4.19  14.6  5.17  4     8.7   1.64  1.39  2.16  3.93  1.37
## 5  66.5 1/31… 1.97e6  4.20  14.5  5.47  5.3  10.8   1.70  1.67  2.38  5.3   1.67
## 6  67.4 5/1/… 2.08e6  4.21  14.5  6.2   5.37 12.3   1.82  1.68  2.51  5.33  1.67
## # … with 2 more variables: Consumption <dbl>, lnConsumption <dbl>

Creacion de las series temporales

library(tseries)
GDP <- ts(datos$lnGDP, start = c(2003,1,31), frequency = 4)
CPI <- ts(datos$lnCPI, start = c(2003,1,31), frequency = 4)
M3 <- ts(datos$lnM3, start = c(2003,1,31), frequency = 4)
#Luego declaramos nuestras variables de series de tiempo usando el comando ts(). Observamos que la serie comienza en el primer trimestre de 2001 hasta el primer trimestre de 2020. Obviamente, estos son datos trimestrales, por lo que establecemos la frecuencia en cuatro.

# Se crea la data global que contenga las variables.
dataset <- cbind(GDP,CPI,M3)

Calculo de numeros optimos de retardo.

library(vars)
retardos <- VARselect(dataset, lag.max = 7, type = "const")
retardos$selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      6      5      4      5

Dado que 5 apareció en Hannan Quinn y el error de predicción final, elegimos usar 4 retrasos. Se esperan 4 rezagos dado que la frecuencia de los datos es trimestral.

Prueba de Johasen con cointegracion de la traza

ctest1tr <- ca.jo(dataset, type = "trace", ecdet = "const", K = 4)
summary(ctest1tr)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1]  7.408536e-01  2.831294e-01  1.143077e-01 -1.025883e-16
## 
## Values of teststatistic and critical values of test:
## 
##            test 10pct  5pct  1pct
## r <= 2 |   7.89  7.52  9.24 12.97
## r <= 1 |  29.53 17.85 19.96 24.60
## r = 0  | 117.30 32.00 34.91 41.07
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##              GDP.l4    CPI.l4      M3.l4     constant
## GDP.l4    1.0000000  1.000000  1.0000000  1.000000000
## CPI.l4   -1.9652971 -3.401060 -2.3478809 -1.258575716
## M3.l4     0.1534219 -5.703423  0.1823729 -0.004795708
## constant -4.2100503 15.387818 -4.6126235 -9.216460807
## 
## Weights W:
## (This is the loading matrix)
## 
##             GDP.l4        CPI.l4       M3.l4      constant
## GDP.d  0.027782440 -4.455686e-05 -0.01509218  2.231752e-15
## CPI.d  0.001718154  5.843056e-04  0.01124142  1.957418e-14
## M3.d  -0.022303210  5.927883e-02 -0.28911043 -4.671628e-12

si \(α=0.05\), cuando \(r=0\), el estadístico de prueba es mayor al valor crítico, lo que implica rechazar \(H0\), por tanto, hay evidencia estadística de la presencia de cointegración entre las variables. Ahora, se procede a contrastar la \(H0\) cuando \(r=1\), acá también el estadístico de prueba es superior al valor crítico, por lo que se procede a recharzar la \(H0\), teniendo así que \(r>1\). Ya en el momento de \(r<2\), es el valor crítico el que supera al estadístico (VC 9.24 > 7.89), por lo que no se rechaza la \(H0\).

Podemos concluir que con la prueba de la traza, las 3 variables analizadas presentan cointegración en una presencia máxima de 2 relaciones.

ctest1ei <- ca.jo(dataset, type = "eigen", ecdet = "const", K = 4)
summary(ctest1ei)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1]  7.408536e-01  2.831294e-01  1.143077e-01 -1.025883e-16
## 
## 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)
## 
##              GDP.l4    CPI.l4      M3.l4     constant
## GDP.l4    1.0000000  1.000000  1.0000000  1.000000000
## CPI.l4   -1.9652971 -3.401060 -2.3478809 -1.258575716
## M3.l4     0.1534219 -5.703423  0.1823729 -0.004795708
## constant -4.2100503 15.387818 -4.6126235 -9.216460807
## 
## Weights W:
## (This is the loading matrix)
## 
##             GDP.l4        CPI.l4       M3.l4      constant
## GDP.d  0.027782440 -4.455686e-05 -0.01509218  2.231752e-15
## CPI.d  0.001718154  5.843056e-04  0.01124142  1.957418e-14
## M3.d  -0.022303210  5.927883e-02 -0.28911043 -4.671628e-12

Cuando \(r = 0\), el estadístico de prueba \(87.77 > 22\). Esto significa que rechazamos la hipótesis nula que sugiere que \(r > 0\). Como tal, hay algo de cointegración presente. Cuando \(r<1,21.64 > 15.67\). Esto nuevamente significa que rechazamos la hipótesis nula que sugiere que \(r > 1\). Por último, cuando \(r < 2\), no podemos rechazar la hipótesis nula porque \(7.89 < 9.24\). Por lo tanto, concluimos que hay a lo sumo 2 relaciones de cointegración presentes.

3. Causalidad en el sentido de Granger.

Propósito de la prueba, es decir ¿Para qué se usa?

La idea básica de causalidad en el sentido de Granger es comprobar si los resultados de una variable sirven para predecir a otra variable, si tiene carácter unidireccional o bidireccional. Para ello se tiene que comparar y deducir si el comportamiento actual y el pasado de una serie temporal A predice la conducta de una serie temporal B. En otras palabras, una serie de tiempo causa, en el sentido de Granger, otra serie, si está condicionada a valores pasados de la raíz pronosticada, el error cuadrático medio de está es menor que cuando se omitió información sobre valores pasados (Minaya and Sánchez 2018)

La noción de causalidad introducida por Wiener en 1956, Granger en 1969 y Christopher A. Sims en la década de 1980, parece ser la base del análisis de las relaciones dinámicas entre series de tiempo . Aunque definido formalmente, sigue sujeto a varias controversias entre los economistas.

Hipótesis de la prueba.(explique el porqué de las hipótesis Nula y Alternativa)

La prueba de modo general, explica que, como el futuro no puede predecir el pasado, si la variable X (a la manera de Granger) causa la variable Y, los cambios en X deben preceder a los cambios en Y. Por consiguiente, en una regresión de Y, sobre otras variables (con sus propios valores pasados), si incluimos valores pasados o rezagados de X y esto mejora significativamente la predicción de Y, podemos decir que X causa Y.

Los pasos comprendidos en la prueba de causalidad de Granger son los siguientes.

Realizar la regresión de Y actual (Yt) sobre sus términos rezagados (definido previamente el tamaño del rezago) y otras variables, pero no incluir las variables X rezagadas en esta regresión, esta es la regresión restringida (Gujarati, 2010)

  1. A partir de la regresión Y, se obtiene la suma de cuadrados residuales restringida (SCRR).

  2. Efectuar la regresión con los términos rezagados de X (m)

  3. A partir de la regresión m, se obtiene la suma de cuadrados residuales no restringida (SCRNR)

  4. La hipótesis nula es \[H0:∝1=0,i=1,2,...,n\]

    es decir, los términos rezagados de X (m) no pertenecen a la regresión.

  5. Para probar esta hipótesis, aplicamos la prueba F

\[F = \frac{(SCR_{R}-SCR_{NR})/m}{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.

Si el valor F calculado excede al valor F crítico en el nivel seleccionado de significancia, rechazamos la hipótesis nula, en cuyo caso los términos rezagados de X pertenecen a la regresión[minaya2018crecimiento]

Sintaxis de implementación en R, explicando cada uno de los argumentos.

Prueba de causalidad de Granger grangertest es una función genérica para realizar una prueba de causalidad de Granger. Sintaxis \(grangertest(x,y,order = 1,na.action = na.omit,...)\)

x

Primera serie temporal. ya sea una serie bivariada (en cuyo caso tiene que faltar y) o una serie univariada de observaciones.

y

Segunda serie temporal. una serie univariante de observaciones (si x también es univariante).

order

el número de retrasos que se utilizarán en la primera serie de tiempo. (El valor predeterminado es 1). entero que especifica el orden de los retrasos que se incluirán en la regresión auxiliar.

na.action

una función para eliminar NA después de alinear las series x e y.

 

Estadístico de prueba (haga referencia en la salida que genera R)

Esta prueba se define y resuelve a través del estadístico de prueba F con un p-value correspondiente (el cual es explicado en el punto 2 literal 3)

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

CRITERIO DE DECISIÓN

Rechace \(H0\) si \(p≤α\)

No rechace a \(H0\) si \(p>α\)

Donde:

\(α=0.05\)

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

Si \(Pvalue≤α\) se rechaza la hipótesis nula por lo tanto decimos que la serie temporal \(ts1\) hace que la serie temporal \(ts2\) se cause asi misma con Causa-Granger.

Si \(Pvalue≥α\) no se rechaza la hipótesis nula por lo tanto decimos que la serie temporal \(ts1\) no causa que la serie temporal \(ts2\) se cause asi misma.

Implementación de un ejemplo

el ejemplo fue tomado de: (ZACH 2021) Para este ejemplo, usaremos el conjunto de datos ChickEgg que viene precargado en el paquete lmtest(Hothorn et al. 2022). 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:

Data

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 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

Interpretacion resultados:

  • \(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 únicamente 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 .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.

Prueba de causalidad de Granger a la inversa

Aunque rechazamos la hipótesis nula de la prueba, en realidad es posible que haya un caso de causalidad inversa. Es decir, es posible que el número de pollos esté haciendo que el número de huevos cambie.

Para descartar esta posibilidad, necesitamos realizar la prueba de Causalidad de Granger a la inversa, utilizando pollos como variable predictora y huevos como variable de respuesta:

grangertest(egg ~ chicken, order = 3, data = ChickEgg)
## 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 0.5916 0.6238

El valor p de la prueba es 0,6238. Como no es menos de .05, no podemos rechazar la hipótesis nula. Es decir, el número de gallinas no predice el número futuro de huevos.

Por lo tanto, podemos concluir que conocer el número de huevos es útil para predecir el número futuro de pollos.

BIBLIOGRAFIA:

A.Rico, Victor. 2017. “Prueba de Raiz Unitaria de DICKEY FULLER En r.” Conceptos Básicos (Primera Ed.). Medellı́n: Ecoe. Ediciones.
Banerjee, Anindya, Juan J Dolado, John W Galbraith, and David Hendry. 1993. Co-Integration, Error Correction, and the Econometric Analysis of Non-Stationary Data. Oxford university press.
Barnett, Lionel, and Anil K Seth. 2014. “The MVGC Multivariate Granger Causality Toolbox: A New Approach to Granger-Causal Inference.” Journal of Neuroscience Methods 223: 50–68.
Dickey, David A, and Wayne A Fuller. 1979. “Distribution of the Estimators for Autoregressive Time Series with a Unit Root.” Journal of the American Statistical Association 74 (366a): 427–31.
Eloriaga, J. 2020. “Long Run Linkages: A Briefer on the Johansen Cointegration Methodology.” Https://Towardsdatascience.com/Long-Run-Linkages-a-Briefer-on-the-Johansen-Cointegration-Methodology-6744ee253012.
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.
Mahadeva, Lavan, and Paul Robinson. 2009. “Ensayo 76: Prueba de Raı́z Unitaria Para Ayudar a La Construcción de Un Modelo.” México DF: Centro de Estudios Monetarios Latinoamericanos.
Mata, Humberto. 2004. “Nociones Elementales de Cointegración Enfoque de Soren Johansen.” Trabajo No Publicado. Http://Webdelprofesor. Ula. Ve/Economı́a.
MicroSoftware, Quantitative. 2017. “EViews Help: Unit Root Testing.” Conceptos Básicos (Primera Ed.). Medellı́n: Ecoe. Ediciones.
Minaya, Carlos, and Alizi Sánchez. 2018. “Crecimiento Económico y Desnutrición Crónica Infantil Regional En El Perú: Una Aplicación Del Modelo de Probabilidad En El Perı́odo 2000-2016.” In Anales Cientı́ficos, 79:249–57. 2. Universidad Nacional Agraria La Molina.
Pfaff, B. 2008a. Analysis of Integrated and Cointegrated Time Series with r. Second. New York: Springer. http://www.pfaffikus.de.
———. 2008b. Analysis of Integrated and Cointegrated Time Series with r. Second. New York: Springer. https://www.pfaffikus.de.
Pfaff, Bernhard. 2008. “VAR, SVAR and SVEC Models: Implementation Within R Package vars.” Journal of Statistical Software 27 (4). https://www.jstatsoft.org/v27/i04/.
———. 2016. Urca: Unit Root and Cointegration Tests for Time Series Data. https://CRAN.R-project.org/package=urca.
———. 2021. Vars: VAR Modelling. https://www.pfaffikus.de.
Trapletti, Adrian, and Kurt Hornik. 2022. Tseries: Time Series Analysis and Computational Finance. https://CRAN.R-project.org/package=tseries.
Wickham, Hadley. 2022. Tidyverse: Easily Install and Load the Tidyverse. https://CRAN.R-project.org/package=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.
ZACH. 2021. “C ómo Realizar Una Prueba de Causalidad de Granger En r.” Https://Www.statology.org/Granger-Causality-Test-in-r/.
Zeileis, Achim, and Torsten Hothorn. 2002. “Diagnostic Checking in Regression Relationships.” R News 2 (3): 7–10. https://CRAN.R-project.org/doc/Rnews/.