UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONOMICAS

ESCUELA DE ECONOMIA

ASIGNATURA:

MÉTODOS PARA EL ANÁLISIS ECONÓMICO

DOCENTE:

MAF. CARLOS ADEMIR PÉREZ

LABORATORIO 3

Tema de investigación del laboratorio: Cointegración y Causalidad.

INTEGRANTES: CARNET

JAIME ROBERTO PEREZ GOMEZ PG07015

LIDIA MARGARITA PEÑATE HERNANDEZ PH18026

ALEXIS ANTONIO TORRES ROSALES TR17005

TERESA CAROLINA GRANADOS PALACIOS GP16030

GRUPO TEORICO:

02

CICLO/AŇO:

II-2022

SAN SALVADOR, NOVIEMBRE DE 2022.

Prueba de Raíz Unitaria de Dickey & Fuller.

Conceptualización

Un ensayo de la Asociación de Regional de Bancos Centrales, nos acerca a la utilidad y concepto de raíces unitarias (Mahadeva and Robinson 2009): “Los economistas de banca central deben entender y pronosticar series de tiempo macroeconómicas. Un serio problema que afrontan es que esas series de tiempo a menudo tienen tendencia o están afectadas por persistentes innovaciones en el proceso. Para resolver este problema, o por lo menos comprender sus posibles efectos, es común probar si las series son estacionarias. Estas pruebas son a menudo llamadas pruebas de raíz unitaria”.

Propósito de la prueba

Este tipo de pruebas son importantes debido a que sirven comprobar la Estacionariedad o también [Ibid.]: “Pero la teoría económica casi siempre es ambigua en sus implicaciones sobre el proceso generador de datos. Al aplicar la prueba de preestimación a los datos, se puede evaluar la relevancia de las diferentes teorías y posibles problemas con los datos”.

Los autores contúan diciendo [Ibid.]: “La estacionariedad es importante para la estimación: la aplicación de regresiones de mínimos cuadrados sobre variables no estacionarias, puede resultar en estimaciones de parámetros falsos acerca de las relaciones entre variables. La verificación de la estacionariedad también puede ser un factor importante para pronosticar: puede decirnos la clase de procesos que tendremos que construir en nuestros modelos, para realizar predicciones precisas”

Hipótesis de la prueba.

(Lizarazu-Alanez and Villaseñor-Alva 2007): “En el análisis de series de tiempo es habitual recurrir a la prueba Dickey-Fuller (DF) con el propósito de probar si los datos responden a un proceso auto regresivo de raíz unitaria. La prueba DF para un proceso raíz unitaria, sin embargo, depende de supuestos sobre el proceso estocástico bajo la hipótesis nula. De acuerdo con Schewert (1989), la prueba DF tiene baja potencia si se basa en un estimador de mínimos cuadrados ordinarios (MCO) para el parámetro ρ de un proceso autorregresivo \(\left(Y_t-\mu\right)=\rho\left(Y_{t-1} -\mu\right)+u_t\), con errores \(u_t ~ iidN\left(0,\sigma^2\right)\), donde la hipótesis nula es \(ρ=1\) y la hipótesis alternativa es \(|ρ|<1\)”.

Otro autor establece las hipótesis de la forma siguiente (Mata 2004):

\(H_0\) : \(δ\) La Serie es no estacionaria :Tiene una raiz unitaria

\(H_1\) : \(δ ≠ 0\) La Serie es estacionaria

Sintaxis de implementación en R

Del manual de paquete de tseries se puede encontrar el código adf.test (Trapletti et al. 2022): Prueba de Dickey-Fuller aumentada en R:

Sintaxis:

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

Esta prueba logrará calcular la prueba de Dickey-Fuller aumentada para el valor nulo de que x tiene una raíz unitaria:

Argumentos:

  • \(x➱\) un vector numérico o una serie de tiempo.

  • \(alternative➱\) indica la hipótesis alternativa y debe ser uno de “stacionary” (predeterminado) o “explosive”. Puede especificar solo la letra inicial.

  • \(k➱\) el orden de retraso para calcular el estadístico de prueba.

Detalles

Se utiliza la ecuación de regresión general que incorpora una constante y una tendencia lineal y la Se calcula el estadístico t para un coeficiente autorregresivo de primer orden igual a uno. El número de retrasos utilizado en la regresión es k. El valor por defecto de trunc((length(x)-1)^(1/3)) corresponde al límite superior sugerido en la tasa a la cual el número de rezagos, k, debe hacerse crecer con el tamaño de muestra para la configuración general de ARMA(p,q). Tenga en cuenta que para k es igual a cero, el Dickey-Fuller estándar se calcula la prueba. (…) Si la estadística calculada está fuera de la tabla de valores críticos, entonces se genera un mensaje de advertencia. No se permiten valores faltantes.

Valores

Una lista con la clase “htest” que contiene los siguientes componentes:

  • statistic: el valor de la estadística de prueba.

  • parameter: el orden de retraso.

  • p.value: el valor p de la prueba.

  • method: una cadena de caracteres que indica qué tipo de prueba se realizó.

  • data.name: una cadena de caracteres que da el nombre de los datos.

  • alternative: una cadena de caracteres que describe la hipótesis alternativa.

Estadístico de prueba

(Mahadeva and Robinson 2009): “El estadístico de prueba es el estadístico t sobre la variable dependiente rezagada. Si \(α > 1\) el coeficiente de la variable dependiente rezagada será positivo. Si \(α\) es igual a la unidad, \((α―1)\) será igual a cero. En ambos casos \(x_t\) será no estacionaria”.

Otro autor la resume (Mata 2004) así: \(t*= tau=ADF\) y los valores críticos de MacKinnon

La salida de R será:

library(tseries)
x <- rnorm(1000) # no unit-root
adf.test(x)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  x
## Dickey-Fuller = -9.2685, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary
y <- diffinv(x) # contains a unit-root
adf.test(y)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  y
## Dickey-Fuller = -2.4021, Lag order = 9, p-value = 0.4081
## alternative hypothesis: stationary

Criterio de decisión

(Ibíd.): si \(|t*|≤ | Valor\) \(crítico\) \(DF\) Rechace a \(H_0\). Serie estacionaria

Si \(|t*|> | Valor\) \(crítico\) \(DF\) No Rechace a \(H_0\). Serie No estacionaria

Es convencional rechazar la hipótesis nula con un nivel de significación \(α=0.05.\) Cuando se rechaza la hipótesis nula se dice que los resultados del estudio son estadísticamente significativos al nivel \(α\)

library(tseries)
x <- rnorm(1000) # no unit-root
adf.test(x)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  x
## Dickey-Fuller = -9.1893, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary
y <- diffinv(x) # contains a unit-root
adf.test(y)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  y
## Dickey-Fuller = -2.0358, Lag order = 9, p-value = 0.5631
## alternative hypothesis: stationary

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

Rechazar \(H_0\) si \(p≤0.05\)

No Rechazar \(H_0\) si \(p>0.05\)

Implementación de un ejemplo.

De la página: ine.es se ha extraído una base de datos sobre Renta nacional bruta y disponible

  1. covertimos los datos en objeto de serie temporal
library(kableExtra)
library(readxl)
library(ggplot2)
library(forecast)
YN_es<- read_excel("C:/Users/Torres/Desktop/MAE/Renta nacional bruta y disponible.xlsx",  col_types = c("skip", "numeric"))

data=YN_es$..%>% ts(start = c(2000,1),frequency = 4)->yn
print(head(yn, n=12)) %>%
  kable(caption = "Renta Nacional Disponible de España 2000-2022",
        align = "c",
        digits = 2) %>%
  kable_classic(html_font = "georgia",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "Fuente:",
           general = "Elaboración propia con de https://www.ine.es/")
##          Qtr1     Qtr2     Qtr3     Qtr4
## 2000   7.5976   6.2956   5.2661   5.9833
## 2001  12.2023  -1.3571  -2.8566  -3.7980
## 2002 -12.1050   2.8624   5.6518   5.6476
Renta Nacional Disponible de España 2000-2022
x
7.5976
6.2956
5.2661
5.9833
12.2023
-1.3571
-2.8566
-3.7980
-12.1050
2.8624
5.6518
5.6476
Fuente:
Elaboración propia con de https://www.ine.es/
plot (x = yn, type="b", main= "Ingreso Nacional de España, periodo 2000-2022 (junio)", sub=NA,
xlab = "Años", ylab= "Índice", col= "red")

Función de auto correlación parcial

library(stats)
acf(x=yn, main="Función de Autocorrelación Simple", lag.max =, col="red",xlab =,ylab=)

Función de autocorrelación parcial

pacf(x=yn, main="Función de Autocorrelación Parcial",lag.max =,
col="red",xlab =,ylab=)

“Test de Dickey-Fuller aumentado”

library(tseries)
adf.test(yn)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  yn
## Dickey-Fuller = -3.1887, Lag order = 4, p-value = 0.09472
## alternative hypothesis: stationary

Si observamos el p-valor (0.09472), este nos dice que no se puede rechazar la hipótesis nula, por lo que la serie tiene raíz unitaria y no es estacionaria como hemos observado en las gráficas anteriores. Esto nos hace indicar que debemos de llevar a cabo diferencias para eliminar la tendencia y hacer estacionaria la serie para su posterior ajuste.

Cointegración en el enfoque de Soren Johansen.

(Mata 2004): Durante las pasadas dos décadas los Economistas han desarrollado ciertas herramientas para examinar si las variables económicas tienen tendencias comunes, tal como lo predice la Teoría económica. Una de esas herramientas son las llamadas pruebas de cointegración. 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, como también se les denomina

Propósito de la prueba

  • Aplicable a sistemas de ecuaciones

  • Este método está basado en modelos VAR (Vectores autorregresivos).

  • Es un test de máxima verosimilitud que requiere grandes volúmenes de datos (100 ó más)

  • Prueba la existencia de múltiples vectores de cointegración entre las variables, mediante la prueba de la Traza y del Eigenvalue máximo

  • Descansa fuertemente en la relación entre el rango de la matriz y sus raíces características

Hipótesis de la prueba.

Luis Quintana Romero y Miguel Ángel Mendoza exponen que las Hipótesis son (Quintana and Mendoza 2016): La hipótesis nula \(H_0: r =0\): (no cointegración), frente a la alternativa \(H_1: r=1\).

la hipótesis nula de que hay como máximo r vectores de cointegración frente a la alternativa de que hay m, \(r≤m\),

Sintaxis de implementación en R

En la paquetería Urca del repositorio de Cran de R (Pfaff et al. 2022) se describe:

ca.jo(x, type = c("eigen", "trace"), ecdet = c("none", "const", "trend"), K = 2, spec=c("longrun", "transitory"), season = NULL, dumvar = NULL)

AValores

  • x: Matriz de datos a investigar para la cointegración.

  • type: La prueba a realizar, ya sea ‘eigen’ o ‘trace’.

  • ecdet: Carácter, ‘ninguno’ para no interceptar en cointegración, ‘const’ para término constante en cointegración y ‘tendencia’ para variable de tendencia en cointegración.

  • k: El orden de desfase de las series (niveles) en el VAR.

  • spec: Determina la especificación del VECM, consulte los detalles a continuación.

  • season: Si se deben incluir dummies estacionales, la frecuencia de los datos debe establecerse en consecuencia, es decir, ‘4’ para datos trimestrales.

  • dumvar: Si se deben incluir variables ficticias, una matriz con dimensión de fila igual a x se puede proporcionar.

Estadístico de prueba

En estadística es convencional rechazar la hipótesis nula con un nivel de significación \(α = 0.05\). Cuando se rechaza la hipótesis nula se dice que los resultados del estudio son estadísticamente significativos al nivel \(α\)

Salida en R:

library(urca)
data(denmark)
sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")]
sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun",
season=4)
summary(sjd.vecm)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 0.433165419495707859632 0.177583639403037035764 0.112790521526174192246
## [4] 0.043411299668678085539 0.000000000000000692755
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 3 |  2.35  7.52  9.24 12.97
## r <= 2 |  6.34 13.75 15.67 20.20
## r <= 1 | 10.36 19.77 22.00 26.81
## r = 0  | 30.09 25.56 28.14 33.24
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##             LRM.l2     LRY.l2     IBO.l2     IDE.l2   constant
## LRM.l2    1.000000  1.0000000  1.0000000   1.000000  1.0000000
## LRY.l2   -1.032949 -1.3681031 -3.2266580  -1.883625 -0.6336946
## IBO.l2    5.206919  0.2429825  0.5382847  24.399487  1.6965828
## IDE.l2   -4.215879  6.8411103 -5.6473903 -14.298037 -1.8951589
## constant -6.059932 -4.2708474  7.8963696  -2.263224 -8.0330127
## 
## Weights W:
## (This is the loading matrix)
## 
##            LRM.l2      LRY.l2       IBO.l2         IDE.l2
## LRM.d -0.21295494 -0.00481498  0.035011128  0.00202890785
## LRY.d  0.11502204  0.01975028  0.049938460  0.00110865413
## IBO.d  0.02317724 -0.01059605  0.003480357 -0.00157374159
## IDE.d  0.02941109 -0.03022917 -0.002811506 -0.00004767627
##                      constant
## LRM.d -0.00000000000017265228
## LRY.d  0.00000000000009428195
## IBO.d  0.00000000000004143714
## IDE.d  0.00000000000007781415

Criterio de decisión

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

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

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

library(urca)
data(denmark)
sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")]
sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun",
season=4)
summary(sjd.vecm)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 0.433165419495707859632 0.177583639403037035764 0.112790521526174192246
## [4] 0.043411299668678085539 0.000000000000000692755
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 3 |  2.35  7.52  9.24 12.97
## r <= 2 |  6.34 13.75 15.67 20.20
## r <= 1 | 10.36 19.77 22.00 26.81
## r = 0  | 30.09 25.56 28.14 33.24
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##             LRM.l2     LRY.l2     IBO.l2     IDE.l2   constant
## LRM.l2    1.000000  1.0000000  1.0000000   1.000000  1.0000000
## LRY.l2   -1.032949 -1.3681031 -3.2266580  -1.883625 -0.6336946
## IBO.l2    5.206919  0.2429825  0.5382847  24.399487  1.6965828
## IDE.l2   -4.215879  6.8411103 -5.6473903 -14.298037 -1.8951589
## constant -6.059932 -4.2708474  7.8963696  -2.263224 -8.0330127
## 
## Weights W:
## (This is the loading matrix)
## 
##            LRM.l2      LRY.l2       IBO.l2         IDE.l2
## LRM.d -0.21295494 -0.00481498  0.035011128  0.00202890785
## LRY.d  0.11502204  0.01975028  0.049938460  0.00110865413
## IBO.d  0.02317724 -0.01059605  0.003480357 -0.00157374159
## IDE.d  0.02941109 -0.03022917 -0.002811506 -0.00004767627
##                      constant
## LRM.d -0.00000000000017265228
## LRY.d  0.00000000000009428195
## IBO.d  0.00000000000004143714
## IDE.d  0.00000000000007781415

Implementación de un ejemplo.

Se han Consulatdo los Datos del PIB y consumo final de El Salvador de la página Oficial del Banco Central y se utilizará para realizar la prueba correspondiente:

library(kableExtra)
library(urca)
library(car)
library(readxl)
library(forecast)
PIB_Cons <- read_excel("C:/Users/Torres/Desktop/MAE/PIB_Cons.xlsx")
ts(PIB_Cons, frequency= 4, start = c(2010,1))->pib
head(pib, n=20) %>%
  kable(caption = " Tabla del PIB y Consumo de El Salvador 2010-2022 (II trimestre)",
        align = "c",
        digits = 2) %>%
  kable_classic(html_font = "Georgia",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "Fuente:",
           general = "Elaboración propia con datos del BCR")
Tabla del PIB y Consumo de El Salvador 2010-2022 (II trimestre)
Trimestre PIB Consumo_Final
1 87.45 85.16
2 90.65 92.14
3 88.22 89.57
4 94.07 99.07
5 90.65 89.50
6 94.95 94.97
7 91.96 92.03
8 96.58 100.31
9 93.10 89.55
10 97.64 95.13
11 94.69 97.15
12 99.24 106.39
13 93.57 93.31
14 99.64 101.69
15 98.06 101.91
16 102.00 104.33
17 97.69 95.15
18 101.68 101.79
19 98.66 101.02
20 101.97 102.04
Fuente:
Elaboración propia con datos del BCR

grafica del PIB y Consumo

ttx<-data.frame(PIB_Cons$PIB, PIB_Cons$Consumo_Final)
ts(ttx, frequency= 4, start = c(2010,1))->tty
plot.ts(tty, main="PIB y Consumo de El Salvador 2010-2022(II Trimestre)")

Identificacion del Numero de Retardos a Incluir en el VEC

library(MTS)
VARorder(pib,maxp = 5.90051e-31)
## selected order: aic =  1 
## selected order: bic =  1 
## selected order: hq =  1 
## Summary table:  
##      p      AIC      BIC       HQ     M(p) p-value
## [1,] 0   9.8919   9.8919   9.8919    0.000       0
## [2,] 1 -52.9216 -52.5774 -52.7905 2811.222       0

Se asigna la variable de serie de tiempo al objeto PIB

lpib <- log(PIB_Cons$PIB)
lcon <- log(PIB_Cons$Consumo_Final)
# Para aplicar el procedimiento de Johansen, primero se combinan las variables en un solo objeto
O_pib<- cbind(lpib,lcon)

Aplicando la prueba de Johasen con cointegracion de la traza

xpib<-ca.jo(O_pib, type="trace",ecdet="none",spec=c("longrun"), K=4)
summary(xpib)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend 
## 
## Eigenvalues (lambda):
## [1] 0.10432591 0.01716819
## 
## Values of teststatistic and critical values of test:
## 
##          test 10pct  5pct  1pct
## r <= 1 | 0.80  6.50  8.18 11.65
## r = 0  | 5.86 15.66 17.95 23.52
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##           lpib.l4   lcon.l4
## lpib.l4  1.000000  1.000000
## lcon.l4 -1.068477 -2.131451
## 
## Weights W:
## (This is the loading matrix)
## 
##           lpib.l4   lcon.l4
## lpib.d -0.2947360 0.0858622
## lcon.d  0.0162381 0.1117750

Los resultados muestran que para la primera hipótesis r =0 y alternativa r=1, se acepta la hipótesis alternativa de cointegración: el estadístico es mayor al valor critico del 10 porciento, 5.86 < 15.66. Para la segunda hipótesis r<=1 y alternativa r=2, se acepta la hipótesis nula de un solo vector de cointegración. Por lo que se puede concluir que existe un vector de cointegración y se representa por [1 -1.06].

Prueba de Johansen de la traza con constante

xxpib<- ca.jo(O_pib, type="trace",ecdet="const",spec=c("longrun"), K=4)
summary(xxpib)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 0.160008162763451561306 0.039967447350597685995 0.000000000000001833271
## 
## Values of teststatistic and critical values of test:
## 
##          test 10pct  5pct  1pct
## r <= 1 | 1.88  7.52  9.24 12.97
## r = 0  | 9.90 17.85 19.96 24.60
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##              lpib.l4   lcon.l4   constant
## lpib.l4   1.00000000  1.000000  1.0000000
## lcon.l4  -1.02495949 -1.304105  0.6158543
## constant  0.09489285  1.414072 -7.4238508
## 
## Weights W:
## (This is the loading matrix)
## 
##           lpib.l4   lcon.l4               constant
## lpib.d -0.5032709 0.2943971 0.00000000000008384519
## lcon.d -0.3175788 0.4455919 0.00000000000003531674

Los resultados muestran que para la primera hipótesis r =0 y alternativa r=1, se acepta la hipótesis alternativa de cointegración: el estadístico es mayor al valor critico del 10 porciento, 9.90 < 17.85. Para la segunda hipótesis r<=1 y alternativa r=2, se acepta la hipótesis alternativa nula de dos vector de cointegración. Por lo que se pueden identificar los vectores de cointegración [1 -1.25 4.55] y [1 -1.41 7.19].

Causalidad en el sentido de Granger.

(Mata 2004):

  • Aplicable a modelos uniecuacionales (con dos o más variables ?)

  • Método en dos etapas basado en los residuos estimados

  • Asume a priori que existe un solo vector de cointegración en el modelo

  • El resultado de este método de cointegración puede cambiar dependiendo de cual variable se seleccione como dependiente

Propósito de la prueba

(Quintana and Mendoza 2016): Una de las pruebas utilizadas comúnmente para evaluar la existencia de cointegración es la desarrollada por Engle y Granger en su trabajo ya referido de 1987. Para ejemplificarla considere que el modelo a estimar es el más general, con k menos un variables: \(Y = XB + U\) La prueba puede ejecutarse en dos pasos: 1) Realizar pruebas de raíz unitaria a las series de la regresión para verificar que el orden de integración sea I(1); y, 2) Estimar la regresión cointegrante: \(Y = XB' + U'\)

Hipótesis de la prueba.

(Mata 2004): Planteamiento de hipótesis:

\(H_0:\) GCP does not Granger-cause IPD (GCP no explica a IPD)

\(H_1:\) GCP Granger-cause IPD (GCP explica a IPD)

Sintaxis de implementación en R

(Hothorn et al. 2022): grangertest es una función genérica para realizar una prueba de causalidad de Granger.

Uso:

## Default S3 method: grangertest(x, y, order = 1, na.action = na.omit, ...) ## S3 method for class 'formula' grangertest(formula, data = list(), ...)

Argumentos:

  • x: ya sea una serie bivariada (en cuyo caso tiene que faltar y) o una serie univariadade observaciones.

  • y: una serie univariante de observaciones (si x también es univariante).

  • order: 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.

  • ...: más argumentos pasados a waldtest.

  • formula: una especificación de fórmula de una serie bivariada como y ~ x.

  • data: un marco de datos opcional que contiene las variables en el modelo. Por defecto el las variables se toman del entorno desde el que se llama grangertest

Estadístico de prueba

(Mata 2004): “W estadistico (Chi) de Wald”

Salida en R:

library(lmtest)
## Which came first: the chicken or the egg?
data(ChickEgg)
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
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

Criterio de decisión

(Goldrossen 2021): En el caso de la técnica de Granger, en un sistema con n variables diremos que están cointegradas si cada una de ellas es integrada de orden superior a 0 (no son estacionarias), ambas son del mismo orden y existe un vector de parámetros β tal que la combinación lineal de estas variables resulta ser integrada de orden inferior. Es decir, le reducimos un orden de integración.

library(lmtest)
## alternative ways of specifying the same test
grangertest(ChickEgg, order = 3)
## 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
grangertest(ChickEgg[, 1], ChickEgg[, 2], order = 3)
## Granger causality test
## 
## Model 1: ChickEgg[, 2] ~ Lags(ChickEgg[, 2], 1:3) + Lags(ChickEgg[, 1], 1:3)
## Model 2: ChickEgg[, 2] ~ Lags(ChickEgg[, 2], 1:3)
##   Res.Df Df      F Pr(>F)
## 1     44                 
## 2     47 -3 0.5916 0.6238

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

(Mata 2004):

Rechace a \(H_0\) si Prob es menor o igual a \(0.05\)

No rechace a \(H_0\) si Prob es mayor que \(0.05\)

Implementación de un ejemplo.

Aplicaremos la prueba en el Sentido de Granger a los datos del PIB y Consumo de El Salvador extraídos del BCR, analizados en la prueba en el sentido de S. Johansen analizados anteriormente:

library(urca)
library(car)
library(readxl)
library(forecast)
PIB_Cons <- read_excel("C:/Users/Torres/Desktop/MAE/PIB_Cons.xlsx")
ts(PIB_Cons, frequency= 4, start = c(2010,1))->pib
summary(pib)
##    Trimestre          PIB         Consumo_Final   
##  Min.   : 1.00   Min.   : 87.45   Min.   : 85.16  
##  1st Qu.:13.25   1st Qu.: 97.65   1st Qu.: 98.61  
##  Median :25.50   Median :102.53   Median :103.21  
##  Mean   :25.50   Mean   :103.26   Mean   :102.82  
##  3rd Qu.:37.75   3rd Qu.:110.62   3rd Qu.:107.44  
##  Max.   :50.00   Max.   :117.33   Max.   :120.51

Se asignan las variables de serie de tiempo al objeto PIB y Consumo de El Salvador

spibx <- log(PIB_Cons$PIB)
sconx <- log(PIB_Cons$Consumo_Final)
wpibx <- diff(spibx)
wconx <- diff(sconx)
# Se asigna la variable periodo que ordena en el tiempo 
periodo<-PIB_Cons$Trimestre
summary(periodo)
##    Length     Class      Mode 
##        50 character character

Grafica las variables de los logaritmos del PIB y el Consumo de El Salvador en el tiempo:

plot(spibx,main="Pib y Consumo de El Salvador 2010-2022", ylim=c(4.35,4.8))
lines(spibx,col="blue")
lines(sconx,col="red")

grafica con las primera diferencia del Consumo y PIB

plot(wpibx, main="Diferencias en logaritmo del consumo
 y del PIB de El Salvador 2010-2022")
lines(wpibx,col="purple")
lines(wconx,col="red")

Metodologia de Granger

# Función consumo para probar cointegración tipo Engle y Granger
mod_pib<- lm(spibx ~ sconx)
summary(mod_pib)
## 
## Call:
## lm(formula = spibx ~ sconx)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.072119 -0.018429  0.002358  0.018556  0.052349 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept)  0.20161    0.21876   0.922               0.361    
## sconx        0.95735    0.04724  20.265 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02654 on 48 degrees of freedom
## Multiple R-squared:  0.8953, Adjusted R-squared:  0.8932 
## F-statistic: 410.7 on 1 and 48 DF,  p-value: < 0.00000000000000022

Los resultados muestran que la constante y el parámetro del logaritmo del PIB son altamente significativos y la elasticidad ingreso del consumo es de 0.95.

Para generar un objeto con los residuales y graficarlos, se utilizan los siguientes comandos

res1<- residuals.lm(mod_pib)
summary(res1)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.072119 -0.018429  0.002358  0.000000  0.018556  0.052349

Grafica de los errores

residualPlot(mod_pib)

En segundo lugar, a los residuales de la función consumo se le aplica las pruebas de raíz unitaria

# Prueba de ADF para cointegracion tipo Granger
pgf <- ur.df(y=res1, type='trend',lags=4, selectlags=c("AIC"))
summary(pgf)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.040851 -0.007943 -0.000417  0.009260  0.028626 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -0.0103845  0.0097281  -1.067  0.29249   
## z.lag.1     -0.5196752  0.2433929  -2.135  0.03926 * 
## tt           0.0004304  0.0003501   1.229  0.22654   
## z.diff.lag1  0.0415450  0.2730668   0.152  0.87988   
## z.diff.lag2 -0.1157184  0.2364847  -0.489  0.62742   
## z.diff.lag3 -0.0708357  0.1967943  -0.360  0.72088   
## z.diff.lag4  0.4727531  0.1511453   3.128  0.00337 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01716 on 38 degrees of freedom
## Multiple R-squared:  0.6698, Adjusted R-squared:  0.6177 
## F-statistic: 12.85 on 6 and 38 DF,  p-value: 0.00000007102
## 
## 
## Value of test-statistic is: -2.1351 1.8158 2.6568 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2  7.02  5.13  4.31
## phi3  9.31  6.73  5.61

La primera prueba ADF considera la tendencia y constante, y los resultados muestran que el valor del estadístico (-2.13) es menor en valor absoluto a valor critico al 10 porciento (- 3.18), por lo que los residuales tienen raíz unitaria por lo que se concluye que el consumo y el pib no mantienen una relación de cointegración.

# La segunda prueba ADF se aplica solamente con constante
pgf2<- ur.df(y=res1, type='drift',lags=4, selectlags=c("AIC"))
summary(pgf2)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.038410 -0.007478  0.001013  0.010105  0.027997 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.001149   0.002585   0.445  0.65906   
## z.lag.1     -0.276504   0.142723  -1.937  0.05997 . 
## z.diff.lag1 -0.214294   0.177926  -1.204  0.23570   
## z.diff.lag2 -0.325576   0.164712  -1.977  0.05518 . 
## z.diff.lag3 -0.222451   0.154347  -1.441  0.15750   
## z.diff.lag4  0.386497   0.134743   2.868  0.00663 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01727 on 39 degrees of freedom
## Multiple R-squared:  0.6567, Adjusted R-squared:  0.6127 
## F-statistic: 14.92 on 5 and 39 DF,  p-value: 0.00000003466
## 
## 
## Value of test-statistic is: -1.9373 1.9427 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1  7.06  4.86  3.94

En este caso se encontró que aunque la diferencia es pequeña, el valor del estadístico (-1.93) es menor en valor absoluto a valor critico al 10 por ciento (-2.60), por lo que la conclusión es la misma que en al prueba anterior, el consumo y el pib no están cointegrados.

# Por último se aplica la prueba ADF sin tendencia y constente
pgf3<- ur.df(y=res1, type='none',lags=4, selectlags=c("AIC"))
summary(pgf3)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.037335 -0.006344  0.002092  0.011416  0.029132 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## z.lag.1      -0.2738     0.1412  -1.940  0.05947 . 
## z.diff.lag1  -0.2115     0.1760  -1.201  0.23667   
## z.diff.lag2  -0.3240     0.1630  -1.988  0.05374 . 
## z.diff.lag3  -0.2197     0.1527  -1.439  0.15794   
## z.diff.lag4   0.3883     0.1333   2.912  0.00584 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0171 on 40 degrees of freedom
## Multiple R-squared:  0.655,  Adjusted R-squared:  0.6118 
## F-statistic: 15.19 on 5 and 40 DF,  p-value: 0.00000002318
## 
## 
## Value of test-statistic is: -1.9399 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.62 -1.95 -1.61

Con esta especificación de la prueba, el valor del estadístico (-1.93) es mayor en valor absoluto a valor critico al 10 porciento (-1.61), por lo que ahora la conclusión se modifica y se puede asegurar que el consumo y el pib están cointegrados.

Bibliografía

Goldrossen, Nicolas. 2021. “?‘ Cuál Es La Dinámica Entre Los Precios Spot y Futuro Del Bitcoin?: Análisis de Causalidad En Sentido de Granger Durante La Corrección de 2018.”
Hothorn, Torsten, Achim Zeileis, Richard W. Farebrother, and Maintainer Zeileis Zeileis. 2022. “Package ‘Lmtest’.”
Lizarazu-Alanez, Eddy, and José A Villaseñor-Alva. 2007. “Efectos de Rompimientos Bajo La Hipótesis Nula de La Prueba Dickey-Fuller Para Raı́z Unitaria.” Agrociencia 41 (2): 193–203.
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.
Pfaff, Bernhard, Eric Zivot, Matthieu Stigler, and Maintainer Pfaff Zivot. 2022. “Package ‘Urca’.”
Quintana, L, and M Mendoza. 2016. “Econometrı́a Aplicada Utilizando r. DGAPA, Universidad Nacional Autónoma de méxico.”
Trapletti, Adrian, Kurt Hornik, Blake LeBaron, and Maintainer Kurt Hornik. 2022. “Package ‘Tseries’.”