Cointegración y Causalidad

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

MÉTODOS PARA EL ANÁLISIS ECONÓMICO

TEMA:

Investigación sobre Cointegración y Causalidad

DOCENTE:

MSF. Carlos Ademir Pérez Alas

Grupo teórico

GT-03

Integrantes: Carnet: Participación
Lopez Coto, Ezequiel Benjamin LC22057 100%
Méndez Benítez, Carlos Mauricio MB22006 100%
Martínez Guardado, Erick Jesé MG22058 100%

Ciudad Universitaria, 15 de enero de 2025

Explique cómo realizar las siguientes pruebas en R:

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

• Propósito de la prueba

Dickey y Fuller(1979) desarrollaron contrastes de raíces unitarias en el contexto de modelos univariantes de series temporales para analizar la estacionariedad de los procesos estocásticos.

Formalmente se dice que la serie temporal \(y_t\) tiene raíz de orden \(d(y_t~I(d))\) cuando \(y_t\) se transforma en una serie estacionaria al ser diferenciada d veces. Es decir si no existe relación entre el incremento de cada valor y el inmediato anterior la serie es estacionaria \((I(0))\), si existe dicha relación y esta es proporcional a lo largo de la serie se dice que la serie tiene raíz unitaria \((I(1))\). Si la relación no es constante a lo largo de la serie la raíz será de orden 2, 3 o más. (Montero. R, 2013).

El modelo más sencillo de una serie con raíz unitaria, la caminata aleatoria, es un proceso AR(1).

\[ y_{t}=\phi y_{t-1}+\varepsilon_{t} \] Donde:

  • \(y_t\): El valor de la serie temporal en el tiempo \(t\).
  • \(y_{t-1}\): El valor de la serie temporal en el tiempo anterior \(t-1\).
  • \(\varepsilon_{t}\): Un término de error de ruido blanco en el tiempo \(t\), que típicamente se asume con media \(0\) y varianza constante \(\sigma^{2}\) es decir, \(\varepsilon_{t}\sim N(0,\sigma^{2})\).
  • \(\phi\): El coeficiente autoregresivo, que determina la relación entre \(y_t\) y \(y_{t-1}\) .

Si \(\phi\) es menor que 1 la variable \(y_{t}\) estará autocorrelacionada pero será estacionaria, mientras que si es igual a uno, o mayor que la unidad, será no estacionaria y su varianza crecerá de forma explosiva.

\[ y_{t} - y_{t-1}=\phi y_{t-1} - y_{t-1}+\varepsilon_{t} \]

\[y_{t} - y_{t-1}=(\phi-1) y_{t-1}+\varepsilon_{t}\]

\[ \Delta y_{t} =\gamma y_{t-1}+\varepsilon_{t} \] \[ \gamma = (\phi-1) \]

Entonces se nos va a presentar lo siguiente ya que esta prueba tiene tres :

Tipo Característica Representación en ecuación
0 No const, No trend \(\Delta y_{t}= \gamma y_{t-1}+\varepsilon_{t}\)
1 Constant, No trend \(\Delta y_{t}= a_0+ \gamma y_{t-1}+\varepsilon_{t}\)
2 Constant, Trend \(\Delta y_{t}= a_0 + \beta t+\gamma y_{t-1}+\varepsilon_{t}\)

Fuente: Elaboración propia en base a Prueba de Raiz Unitaria de DICKEY FULLER En r - YouTube (2021)

La prueba aumentada de Dickey-Fuller

La prueba Dickey-Fuller aumentada (dfuller \(var\)) es un test exigente. Tiene la ventaja de que la hipótesis nula no es si la serie es o no ruido blanco, sino si tiene una raíz unitaria.(Montero.R, 2013)

No todas las series de tiempo pueden representarse apropiadamente como un proceso AR(1).

La prueba de Dickey-Fuller puede aplicarse en estos casos también, aunque con modificaciones.

Consideremos por ejemplo un proceso AR(2): \[y_{t}=\phi_{1} y_{t-1}+ \phi_{2} y_{t-2}+\varepsilon_{t}\] Se aplica la siguiente transformación: \[\begin{align*} \phi_{1}y_{t-1}&=(\phi_{1}+\phi_{2}-1)y_{t-1}-(\phi_{2}y_{t-1}+y_{t-1})\\ \phi_{2}y_{t-2}&=\phi_{2}(y_{t-1}-y_{t-2})+\phi_{2}y_{t-2}\\ \Delta y_t &=y_{t} - y_{t-1}\\ \Delta y_{t-1}&=(y_{t-1}-y_{t-2}) \end{align*} \] Entonces se tiene: \[\begin{align*} y_t &= \phi_1 y_{t-1} + \phi_2 y_{t-2} + \epsilon_t \\ &= [{(\phi_1 + \phi_2-1)}y_{t-1} - {\phi_2y_{t-1}] + [y_{t-1}} +\phi_2 y_{t-2} + \epsilon_t ]\\ &= {(\phi_1 + \phi_2-1)}y_{t-1} - ({\phi_2y_{t-1} + y_{t-1}}) +\phi_2 y_{t-2} + \epsilon_t\\ y_t - y_{t-1} &= (\phi_1 + \phi_2-1)y_{t-1} - \phi_2\left(y_{t-1} - y_{t-2}\right) + \epsilon_t \\ \Delta y_t &= (\phi_1 + \phi_2-1)y_{t-1} - \phi_2\Delta y_{t-1} + \epsilon_t \\ \Delta y_t &= \gamma y_{t-1} + a_1\Delta y_{t-1} + \epsilon_t \end{align*} \]

Redefinición de parámetros \[\gamma=\phi_{1}+\phi_{2}-1\\ a_{1}=-\phi_{2}\\\]

Para permitir la posibilidad que la serie original sea AR(p+1), la prueba aumentada de Dickey-Fuller introduce rezagos de la variable dependiente en la regresión original

\[\begin{align*} \Delta y_t &= \phantom{a_0 + b_0 t +} {\gamma} y_{t-1} + a_1\Delta y_{t-1} +\dots + a_p\Delta y_{t-p} + \epsilon_t \\ \Delta y_t &= a_0 \phantom{ + b_0 t } + {\gamma} y_{t-1} + a_1\Delta y_{t-1} +\dots + a_p\Delta y_{t-p} + \epsilon_t \\ \Delta y_t &= a_0 + \beta t +{\gamma} y_{t-1} + a_1\Delta y_{t-1} +\dots + a_p\Delta y_{t-p} + \epsilon_t \end{align*}\]

Por lo que el test puede realizarse en tres versiones sin intercepto ni tendencia o con alguna de las dos. PERO ES ACONSEJABLE HACERLO SIEMPRE UTILIZANDO LA TENDENCIA, PARA CORREGIR ESTE EFECTO SI EXISTE.(Montero.R, 2013)

Tipo Característica Representación en ecuación
0 Sin rumbo y sin tendencia \(\Delta y_{t}=\gamma y_{t-1}+ \sum_{i=1}^{p}\delta \Delta y_{t-1}+\varepsilon_{t}\)
1 Caminata aleatoria con rumbo \(\Delta y_{t}= a_0 + \gamma y_{t-1}+ \sum_{i=1}^{p}\delta \Delta y_{t-1}+\varepsilon_{t}\)
2 Con rumbo y tendencia determinista o determinística \(\Delta y_{t}= a_0 + \beta t +\gamma y_{t-1}+ \sum_{i=1}^{p}\delta \Delta y_{t-1}+\varepsilon_{t}\)

Fuente: Elaboración propia en base a Pruebas de raíz unitaria (introducción) - YouTube (2021)

Donde:

  • \(a_0>0\) Rumbo al alza
  • \(a_0<0\) Rumbo a la baja
  • \(\beta>0\) tendencia lineal (tiempo)a crecer
  • \(\beta>0\) tendencia lineal (tiempo) a disminuir

En los tres casos, pasamos el test \(H_0:\gamma=0\) contra \(H_1:\gamma≠0\).

La prueba de Phillips-Perron

La prueba de Phillips-Perron es una herramienta estadística que es denominada como sólida ya que esta busca la presencia de raíces unitarias en series de datos de tiempo, pero no será desarrollada, ya que aquí nos centramos en la Prueba de Raíz Unitaria de Dickey & Fuller.

Esta prueba es particularmente venerada por su capacidad para manejar una variedad de procesos comunes de generación de datos, lo que la convierte en una opción versátil para investigadores y analistas. La prueba de Phillips-Perron es flexible y admite datos con una variedad de propiedades, incluidas aquellas con correlación serial y heterocedasticidad.(FasterCapital, 2024)

Tanto las pruebas de Dickey-Fuller como las de Phillips-Perron son pruebas de raíz unitaria que se utilizan para determinar si una serie temporal es estacionaria. La principal diferencia entre los dos enfoques radica en cómo manejan la autocorrelación y la heterocedasticidad en los errores de la serie temporal.

  • Dickey-Fuller utiliza un enfoque paramétrico, que implica incluir variables rezagadas de la serie temporal en la ecuación de regresión para tener en cuenta la autocorrelación. Este enfoque supone que la estructura de autocorrelación puede modelarse mediante un proceso autorregresivo de orden finito \((AR)\).

  • Phillips-Perron, por otro lado, utiliza un enfoque semiparamétrico, que no hace ninguna suposición específica sobre la estructura de autocorrelación en los errores. En cambio, emplea métodos no paramétricos para estimar la autocorrelación a largo plazo de los errores. Esta estimación luego se utiliza para ajustar las estadísticas de prueba, haciendo que sean robustas a la autocorrelación y la heterocedasticidad de forma desconocida.

• Hipótesis de la prueba

\[ \Delta y_{t} =\gamma y_{t-1}+\varepsilon_{t} \]

Definición de la hipótesis nula

\[H_{0}: \gamma=0 \Rightarrow (\phi-1)=0 \Rightarrow \phi=1\] Si el parámetro gamma es igual a cero implica que la serie sigue un camino aleatorio, en consecuencia es no estacionaria

Definición de la hipótesis alternativa

\[ H_{1}: \gamma\neq 0 \Rightarrow (\phi-1)\neq0 \Rightarrow \phi\neq1\\ \gamma< 0 \Rightarrow (\phi-1)<0 \Rightarrow \phi<1\]

Si el parámetro gamma es distinto de cero y es negativo, entonces la serie es estacionaria

No obstante, Dickey y Fuller (1979) encontraron que si la hipótesis nula es verdadera, la regresión anterior tiene series no estacionarias en ambos lados de la ecuación, por lo que no se cumple que tenga una distribución \(t\)-Student.

\[\hat{t}_{\hat{\gamma}}=\frac{\hat{\gamma}}{SE \hat {\gamma}}\] Estimar por Minimos Cuadrados.

En el contexto de la prueba Dickey-Fuller hay dos condiciones para que la serie de tiempo sea estacionaria:

  • Rechazar la hipótesis nula.
  • Que el estimador gamma sea negativo.

Esto se pude probar mediante un estadístico \(t\) de Student

Para determinar la distribución de este estadístico, de manera que pueda realizarse la prueba de hipótesis, Dickey y Fuller realizaron experimentos de Monte Carlo, en los cuales

  • Se simula una caminata aleatoria con un tamaño de muestra predeterminado.
  • Se estima el modelo AR(1)
  • Se calcula el valor de \(\hat{t}_{\hat{\gamma}}\)

Realizando muchas simulaciones como la anterior es posible aproximar la verdadera distribución del estadístico \(\hat{t}_{\hat{\gamma}}\) bajo la hipótesis nula \(\gamma=0\)

Por lo tanto si \(\hat{t}_{\hat{\gamma}}\) es menor que el valor crítico de Dickey Fuller, entonces \(\gamma<0\), es decir, no hay raíz unitaria.

Entonces hay Condiciones de estacionaridad si \(t_{\hat{\gamma}} <0\) y Prob de rechazo <0.05.

Consideraciones en la prueba Dickey-Fuller

  1. Distribución del estadístico bajo la hipótesis nula, tiende a valores negativos
  2. Los resultados de la estimación del parámetro α son afectados por la presencia de autocorrelación en los errores de la prueba
  3. Los componentes de constante y tendencia deben ser incorporados en la especificación de la prueba.

• Sintaxis de implementación en R

Para aplicar La prueba de Dickey-Fuller y La prueba aumentada de Dickey-Fuller podemos hacerlo a través de dos librerías:

library(tseries)
library(urca)

Así por ejemplo con la library(tseries) tenemos:

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

El comando y los argumentos anteriores realizan la prueba de Dickey-Fuller aumentada (ADF) con opciones avanzadas para evaluar la estacionariedad o explosividad de una serie temporal.

  • adf.test: Ejecuta la prueba de Dickey-Fuller aumentada (ADF), que evalúa si una serie temporal es estacionaria o contiene una raíz unitaria.
  • x: Puede ser un vector numérico o un objeto de serie temporal (\(ts\)).
  • alternative = c(“stationary”, “explosive”): Indica la hipótesis alternativa de la prueba.
    • stationary: La hipótesis alternativa es que la serie es estacionaria (sin raíz unitaria) está predeterminada.
    • explosive: La hipótesis alternativa es que la serie muestra un comportamiento explosivo (tendencia acelerada hacia valores muy altos o bajos). Puede especificar solo la letra inicial.
  • k: Determina automáticamente el número de rezagos para la prueba basándose en la longitud de la serie, utilizando la regla empírica. Esto controla la autocorrelación en los residuos sin introducir demasiados parámetros.

Así por ejemplo con la library(urca) tenemos:

ur.df(y,type=c("none","drift","trend"),lags=1,selectlags=c("Fixed","AIC","BIC"))
  • y: Puede ser un vector numérico o un objeto de serie temporal (\(ts\)).

  • type: Define el modelo de la prueba ADF:

    • none: Sin término constante ni tendencia.
    • drift: Incluye un término constante (intercepto).
    • trend: Incluye tanto un término constante como una tendencia lineal. El modelo seleccionado influye en la hipótesis nula de la prueba.
  • lags: Especifica el número de rezagos incluidos en la regresión.

  • selectlags: Determina cómo seleccionar automáticamente el número de rezagos:

    • Fixed: Usa el valor fijo proporcionado en lags.
    • AIC: Selecciona el número de rezagos óptimo según el criterio de Akaike (AIC).
    • BIC: Selecciona el número de rezagos óptimo según el criterio bayesiano de Schwarz (BIC).

• Estadístico de prueba

Una vez explicada la sintaxis en R de como se puede verificarse las Raíces Unitarias de Dickey-Fuller. Podemos verificar el estadistico de prueba de ambas librerías.

Salida que genera R a través de library(tseries)

options(scipen = 9999)
#Ocuparemos datos de varve {astsa}
class(varve) #Nos sirve para ver el tipo de datos.
## [1] "ts"
ndiffs(varve,test = "adf") #Nos sirve para ver el número de diferencia o lag a optar.
## [1] 0
library(tseries)
# DF test
adf.test(log(varve), k=0) 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  log(varve)
## Dickey-Fuller = -12.857, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationary
# ADF test
#adf.test(log(varve)) 

Salida que genera R a través de library(urca)

options(scipen = 99999)
library(urca)
ur.df(log(varve),type = "trend",lags = 0,selectlags = "AIC") |> summary()
## 
## ############################################### 
## # 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 
## -1.78768 -0.35792  0.01161  0.36335  1.33120 
## 
## Coefficients:
##               Estimate Std. Error t value            Pr(>|t|)    
## (Intercept)  1.2333207  0.1042176  11.834 <0.0000000000000002 ***
## z.lag.1     -0.4165491  0.0323981 -12.857 <0.0000000000000002 ***
## tt           0.0002042  0.0001130   1.808              0.0711 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5138 on 630 degrees of freedom
## Multiple R-squared:  0.2079, Adjusted R-squared:  0.2053 
## F-statistic: 82.66 on 2 and 630 DF,  p-value: < 0.00000000000000022
## 
## 
## Value of test-statistic is: -12.8572 55.1047 82.6556 
## 
## 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

• Criterio de decisión

Si el estadístico de prueba es mayor que el valor crítico, entonces rechazamos la hipótesis nula y concluimos que la serie temporal no tiene una raíz unitaria. Si el estadístico de prueba es menor que el valor crítico, entonces no rechazamos la hipótesis nula y concluimos que la serie temporal puede tener una raíz unitaria.(Durlauf & Blume, 2010, p. 5354)

  • The value of the Dickey-Fuller test statistic \(\approx \hat{t}_{\hat{\gamma}}\)
  • Critical values for test statistics \(\approx V.C.\)
  • \(p-value\)

\[ No~Rechazar~H_{0} = \left\{ \begin{array}{cl} |\hat{t}_{\hat{\gamma}}| & \lt ~|V.C.| \\ p_{value} & \gt ~ 0.05 \end{array} \right. \] \[ Rechazar~H_{0} = \left\{ \begin{array}{cl} |\hat{t}_{\hat{\gamma}}| & \gt~|V.C.| \\ p_{value} & \lt~ 0.05 \end{array} \right.\]

Entonces tenemos que:

  • No Rechazar \(H_0\) implica que la serie tempral No es Estacionaria.
  • Rechazar \(H_0\) implica que la serie temporal es Estacionaria.

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

  • La hipótesis nula, \(H_0\) : no estacionariedad de la perturbación, no se rechaza hipotesis nula si \(\hat{t}_{\hat{\gamma}}\) toma un valor situado a la derecha del valor crítico correspondiente al nivel de significación establecido (las tablas proporcionan generalmente los valores críticos, que son negativos, para niveles de significación del 1%, 5% y 10%, siendo el 5% el más utilizado en la práctica) y se rechaza si toma un valor menor que el valor crítico.

    • Si no puede rechazarse la nula \((p-valor > 0.05)\) la serie es no estacionaria y tiene raíz 1 \(I(1)\) o \(I(p)\).
  • La hipótesis alternativa, \(H_1\) : estacionariedad se reconoce si \(\hat{t}_{\hat{\gamma}}\) es <0 y suficientemente grande en valor absoluto para situarse a la izquierda del valor crítico.

    • Si se rechaza la nula \((p-valor<0.05)\) la serie es estacionaria y tiene una raíz 0 \(I(0)\).

Es importante notar que el estadístico de contraste para la \(\hat{t}_{\hat{\gamma}}\) no son la \(t\) usual sino que Dickey-Fuller (1979) y MacKinnon (1994) mediante simulaciones de Montecarlo, construyeron unas tablas especiales en las que la \(t\) es superior.

En la prueba DF, no rechazar la hipótesis de que una serie tenga raíz unitaria no implica que la serie sí tenga tal raíz unitaria; solamente decimos que no hay evidencia suficiente para descartarla con un nivel “razonable” de significancia.

• Implementación de un ejemplo

Haciendo uso de la Api de la Organización para la Cooperación y el Desarrollo Económico (OCDE), accedemos a la base de datos de Indicadores Económicos Clave (KEI) y presentamos el índice de Productividad y costes laborales unitarios para Bélgica con frecuencia de observación trimestral.

# Es el enlace que genera la página de la OCDE.
url<- "https://sdmx.oecd.org/public/rest/data/OECD.SDD.TPS,DSD_PDB@DF_PDB_ULC_Q,1.0/.Q...IX.Q..."  
Volumen_Productividad<- readSDMX(url)
Volumen_Productividad<-Volumen_Productividad %>% as_tibble()
Volumen_Productividad %>%
  arrange(desc(obsTime)) %>% 
  select("obsTime","FREQ", "REF_AREA", "obsValue","BASE_PER", everything()) %>% 
  head(10) %>% 
  kable(caption = "Indice de Productividad y costes laborales unitarios para todos los paises de la OCDE") %>%  
  kable_classic(html_font = "Times New Roman", font_size = 14) %>% 
  add_footnote(label="Tomado de la API de la OCDE",
               notation="symbol") %>%  kable_styling()
Indice de Productividad y costes laborales unitarios para todos los paises de la OCDE
obsTime FREQ REF_AREA obsValue BASE_PER MEASURE ACTIVITY UNIT_MEASURE PRICE_BASE TRANSFORMATION ADJUSTMENT CONVERSION_TYPE UNIT_MULT DECIMALS OBS_STATUS
2024-Q3 Q CHE 107.70330 2015 GDPEMP _T IX Q _Z S NC 0 0 A
2024-Q3 Q TUR 121.59930 2015 GDPEMP _T IX Q _Z S NC 0 0 A
2024-Q3 Q USA 114.70350 2015 GDPEMP _T IX Q _Z S NC 0 0 A
2024-Q3 Q TUR 128.81560 2015 GDPEMP _T IX Q _Z N NC 0 0 A
2024-Q3 Q IRL 125.24070 2015 GDPEMP _T IX Q _Z N NC 0 0 A
2024-Q3 Q CHE 107.17860 2015 GDPEMP _T IX Q _Z N NC 0 0 A
2024-Q3 Q AUS 99.47939 2015 GDPEMP _T IX Q _Z S NC 0 0 A
2024-Q3 Q AUS 99.74567 2015 GDPEMP _T IX Q _Z N NC 0 0 A
2024-Q3 Q IRL 120.58560 2015 GDPEMP _T IX Q _Z S NC 0 0 A
2024-Q3 Q NZL 102.69350 2015 GDPEMP _T IX Q _Z S NC 0 0 A
* Tomado de la API de la OCDE
Grafica<-Volumen_Productividad %>% 
  filter(REF_AREA%in%c("BEL"),
         ADJUSTMENT=="N",
         obsTime>2000)%>% 
  select("obsTime","REF_AREA","obsValue") %>% 
  group_by(obsTime,REF_AREA) %>% 
   pivot_wider(names_from = REF_AREA, values_from =obsValue ) -> Grafico
Grafico[,-1]%>% ts(start = c(2000,1), frequency = 4 ) ->`Indice de Productividad y costes laborales unitarios de Bélgica`
ts_plot(`Indice de Productividad y costes laborales unitarios de Bélgica`, Xtitle = "Años/Trimestres")

Podemos visualizar que nuestra serie de tiempo del Indice de Productividad y costes laborales unitarios de Bélgica 2000-2024Q2 no es estacionario simplemente con el gráfico.

Por ello nos ayudamos con el comando “ndiffs” de la librería “forecast” para ver la diferencias aplicar.

ndiffs(`Indice de Productividad y costes laborales unitarios de Bélgica`, test = "adf", alpha = 0.05) 
## [1] 1
diff(`Indice de Productividad y costes laborales unitarios de Bélgica`,1) %>%
  ts_plot( title = "Diferencia del Indice de Productividad y costes laborales unitarios de Bélgica",Xtitle = "Años/Trimestres")

Visualizamos que ya con la primera diferenciación ya se logra ver una varianza constante con media cero, pero para comprobarlo y para que esto sea cierto ocuapmos el test de Dickey-Fuller.

Prueba Caminata aleatoria con tendencia y constante

library(tseries)
# DF test
adf.test(`Indice de Productividad y costes laborales unitarios de Bélgica`, k=0) 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Indice de Productividad y costes laborales unitarios de Bélgica
## Dickey-Fuller = -8.9484, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationary
library(urca) 
options(scipen = 99999)
ur.df(`Indice de Productividad y costes laborales unitarios de Bélgica`, 
            type="trend", 
            lags = 0,
            selectlags=c("AIC")) %>% 
summary()
## 
## ############################################### 
## # 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 
## -11.0610  -3.9687  -0.7163   4.0003  10.3008 
## 
## Coefficients:
##             Estimate Std. Error t value           Pr(>|t|)    
## (Intercept) 92.69156   10.41658   8.898 0.0000000000000404 ***
## z.lag.1     -0.92486    0.10335  -8.948 0.0000000000000316 ***
## tt          -0.05698    0.02029  -2.808            0.00606 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.299 on 94 degrees of freedom
## Multiple R-squared:   0.46,  Adjusted R-squared:  0.4485 
## F-statistic: 40.04 on 2 and 94 DF,  p-value: 0.0000000000002641
## 
## 
## Value of test-statistic is: -8.9484 26.6969 40.0399 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47
  • \(\hat{t}_{\hat{\gamma}}\) : |8.9484 |
  • \(V.C.\) : |3.45|

Como el estadístico de prueba (-8.9484) es mucho menor que en los valores críticos de cada nivel, rechazamos la hipótesis nula.

  • \(p-value\): 0.0000000000002641

Como el p-value (2.641e-13) es mucho menor que el nivel de significancia del 5%, Rechazamos la hipotesis nula.

Por tanto incluyendo tanto un término constante como una tendencia y con lags=0 en nuestra serie de tiempo del Indice de Productividad y costes laborales unitarios de Bélgica 2000-2024Q2, tenemos que una tendencia Estacional, además el modelo explica el 46% de la variabilidad de los datos.

Prueba Caminata aleatoria con constante

options(scipen = 99999)
ur.df(`Indice de Productividad y costes laborales unitarios de Bélgica`, 
            type="drift", 
            lags = 2,
            selectlags=c("AIC")) %>%  
summary()
## 
## ############################################### 
## # 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 
## -12.7509  -2.7682   0.1151   2.3855  10.5326 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept) 25.12436    9.12516   2.753             0.00711 ** 
## z.lag.1     -0.25957    0.09388  -2.765             0.00688 ** 
## z.diff.lag  -0.69643    0.07254  -9.600 0.00000000000000158 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.864 on 92 degrees of freedom
## Multiple R-squared:  0.7074, Adjusted R-squared:  0.701 
## F-statistic: 111.2 on 2 and 92 DF,  p-value: < 0.00000000000000022
## 
## 
## Value of test-statistic is: -2.7648 3.8432 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
  • \((Intercept)\): El valor estimado de la constante es 25.12 y tiene un valor p de 0.0071, lo que indica que la serie tiene una tendencia (la constante es significativa).

  • \(z.lag.1\): El coeficiente es -0.2596 con un valor p de 0.0069. Este valor es negativo, lo que sugiere que si el valor de la serie en el periodo anterior es alto, el valor actual será relativamente bajo. Este coeficiente también es significativo.

  • \(z.diff.lag\): El coeficiente es -0.6964 con un valor \(P_{value}\) muy bajo (< 2.2e-16), lo que indica que esta variable tiene una relación muy fuerte con las diferencias de la serie.

El valor de la estadística de la prueba (-2.7648) es mayor que el valor crítico al 1% (-3.51) pero menor que el valor crítico al 5% (-2.89). Esto sugiere que está cerca del umbral de significancia del 5%, por lo que la serie es marginalmente estacionaria.

Por tanto incluyendo solo el término constante y con un lags=2 en nuestra serie de tiempo del Indice de Productividad y costes laborales unitarios de Bélgica 2000-2024Q2, tenemos que una tendencia Estacional, además la serie tiene una tendencia (deriva), ya que el valor de la constante es significativo sumado a esto el modelo explica el 70.74% de la variabilidad de los datos.

Prueba Caminata aleatoria sin tendencia ni constante

options(scipen = 99999)
ur.df(`Indice de Productividad y costes laborales unitarios de Bélgica`, 
            type="none", 
            lags = 2,
            selectlags=c("AIC")) %>% 
summary()
## 
## ############################################### 
## # 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 
## -14.037  -2.788   0.100   2.390  11.800 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## z.lag.1    -0.001327   0.004221  -0.314               0.754    
## z.diff.lag -0.822772   0.058142 -14.151 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.998 on 93 degrees of freedom
## Multiple R-squared:  0.6832, Adjusted R-squared:  0.6764 
## F-statistic: 100.3 on 2 and 93 DF,  p-value: < 0.00000000000000022
## 
## 
## Value of test-statistic is: -0.3143 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61

Aquí se nos presenta que no incluyendo tendencia ni constante y con un lags =2 en nuestra serie de tiempo del Indice de Productividad y costes laborales unitarios de Bélgica 2000-2024Q2, tenemos que una tendencia No Estacional, además el modelo explica el 68.32% de la variabilidad de los datos.

Aplicamos Lags

options(scipen = 99999)
ur.df(diff(`Indice de Productividad y costes laborales unitarios de Bélgica`), 
            type="none", 
            lags = 2,
            selectlags=c("AIC")) %>% 
summary()
## 
## ############################################### 
## # 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 
## -13.0205  -0.9213   0.1635   1.3989   7.0621 
## 
## Coefficients:
##             Estimate Std. Error t value             Pr(>|t|)    
## z.lag.1     -2.95314    0.18786 -15.720 < 0.0000000000000002 ***
## z.diff.lag1  1.21794    0.14913   8.167 0.000000000001723900 ***
## z.diff.lag2  0.71714    0.07317   9.802 0.000000000000000663 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.815 on 91 degrees of freedom
## Multiple R-squared:  0.9577, Adjusted R-squared:  0.9563 
## F-statistic: 686.6 on 3 and 91 DF,  p-value: < 0.00000000000000022
## 
## 
## Value of test-statistic is: -15.7198 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
  • \(\hat{t}_{\hat{\gamma}}\) : |15.72 |
  • \(V.C.\) : |1.95|

El valor de la estadística de la prueba (-15.7198) es mucho menor que los valores críticos de cada nivel. Esto sugiere que la serie es estacionaria y podemos rechazar la hipótesis nula.

El coeficiente de z.lag.1 es muy significativo y sugiere que la serie tiene una relación fuerte con su propio valor rezagado, indicando que la serie tiende a revertir hacia su media.

Además ahora el modelo explica el 95.77% de la variabilidad de los datos.

Es importante señalar que a medida que se para determinar el número adecuado de rezagos (\(p\) o también nombrados como \(lags\), \(k\)) en un modelo como el de Dickey-Fuller aumentado es crucial para capturar correctamente la estructura de autocorrelación de la serie sin sobreajustar el modelo, y a medida este aumente nuestros resultados tiende a variar en las conclusiones de la prueba de hipótesis.

2. Cointegración en el enfoque de Soren Johansen

• Propósito de la prueba

La prueba de Johansen (1988) se utiliza para determinar si existe una o más relaciones de largo plazo (vectores de cointegración) entre un conjunto de series temporales \(I(1)\) no estacionarias. La cointegración implica que, aunque las series puedan ser no estacionarias en niveles, existe una combinación lineal de ellas que es estacionaria.

Tomando en cuenta el enfoque de los modelos VAR (vectorial autorregresivo), si un conjunto de variables está cointegrado, entonces habrá un Modelo de Corrección de Errores Vectoriales (VECM) tal que:

\[\Delta y_t =\alpha z_{t-1}+\sum_{i=1}^{p-1}\Gamma _i\Delta y_{t-i}+\upsilon _t\] Donde:

  • \(\alpha _{(M\times r )}\): Matriz de Coeficiente de Ajuste a Desequilibrios
  • $_{i(MM)} $: Matriz de Coeficientes
  • \(\upsilon_{i(M\times 1)}\): Vector de Errores
  • \(z_{t-1(r\times 1)}\): Desequilibrios
  • \(r\): número de relaciones a largo plazo

Tomando en cuenta que \(z_{t-1(r\times 1)}=\beta y _{t-1}\) y \(\alpha \beta = \Pi\), entonces:

\[\Delta y_t = \Pi y_{t-1}+\sum_{i=1}^{p-1}\Gamma _i\Delta y_{t-i}+\upsilon _t\] Johansen demostró que en este modelo bajo la condición de cointegración, el determinante de \(\Pi\) es 0 y el rango de \(\Pi\) es diferente de 0 e igual al número de vectores de cointegración.

Al no conocer \(\Pi\), Johansen propone estimar esta matriz mediante máxima verosimilitud y encontrar los valores propios de esta. Lo anterior se puede realizar a través de la prueba de traza o la prueba de máximo valor propio.

El test de Johansen se puede resumir en los siguientes pasos:

  1. Determinar el orden de integración de las series.
  2. Determinar el número de rezagos óptimo para el modelo VAR.
  3. Hacer la prueba de traza y/o la prueba de máximo valor propio.
  4. Analizar el vector de cointegración normalizado y el coeficiente de ajuste.
  5. Analizar la causalidad de las series.

Ventajas:

  • Permite evaluar múltiples relaciones de cointegración simultáneamente.
  • Es adecuada para sistemas multivariados.

Limitaciones:

  • Es sensible a la selección de rezagos (\(K\)).
  • Los resultados pueden verse afectados por pequeños tamaños de muestra.
  • No contempla el orden de la causalidad

• Hipótesis de la prueba

La hipótesis nula, \(H_0\), consiste en que no existe cointegración o el rango de cointegración es igual a \(r\). Esto implica que no hay relación de equilibrio de largo plazo entre las series.

La hipótesis alterna, \(H_1\), consiste en que existe cointegración y el rango de cointegración es mayor a \(r\).

Entonces, si no se rechaza \(H_0\), no hay evidencia de cointegración.

Si se rechaza \(H_0\), hay evidencia de cointegración.

• Sintaxis de implementación en R

La función en R más común para implementar la prueba de Johansen es ca.jo del paquete [urca].

library(urca)
# ca.jo(data, type = "trace", ecdet = "const", K = 2)
  • data: Data frame o matriz con las series temporales.
  • type: Especifica el tipo de prueba. Opciones:
    • “trace”: Prueba de traza.
    • “eigen”: Prueba del máximo eigenvalor.
  • ecdet: Modelo para el término determinista. Opciones:
    • “none”: Sin término constante (determinista).
    • “const”: Incluye término constante.
    • “trend”: Incluye una tendencia lineal.
  • K: Número de rezagos en el modelo VAR.

• Estadístico de prueba

Prueba de traza

El estadístico para esta prueba es:

\[\lambda_{trace}(k)=-T\sum _{i=k} ^M ln(1-\hat{\lambda_i})\]

Donde: - \(T\): tamaño de la muestra. - \(M\): número total de variables en el sistema. - \(\hat{\lambda}_i\): valores propios estimados, ordenados en forma descendente. - \(\ln(1 - \hat{\lambda}_i)\): mide la contribución de cada vector de cointegración al sistema.

Prueba de máximo valor propio

El estadístico de esta prueba es:

\[\lambda_{Max}(k,0)=-T ln(1-\hat{\lambda}_{k+1})\]

Donde:

  • \(T\): el tamaño de la muestra.
  • \(\hat{\lambda}_{k+1}\): el \((k+1)\)-ésimo valor propio estimado del sistema, ordenado en forma descendente.
  • $ (1 - _{k+1}) $: mide la fuerza de la relación entre las variables en el \((k+1)\)-ésimo vector.

• Criterio de decisión

Prueba de traza

Hipótesis Nula Hipótesis Alterna Estadístico Criterio de Decisión Conclusión
\(r = 0\) \(r > 0\) \(-T \sum_{i=1}^M \ln(1 - \hat{\lambda}_i)\) Si \(\lambda_{\text{trace}} >\) valor crítico: Rechazamos \(H_0\). Existe al menos 1 vector de cointegración.
\(r\leq1\) \(r>1\) \(-T\sum_{i=2}^M\ln(1-\hat{\lambda}_i)\) Si \(\lambda_{\text{trace}}>\) valor crítico: Rechazamos \(H_0\). Existe más de 1 vector de cointegración.
\(r\leq2\) \(r>2\) \(-T\sum_{i=3}^M\ln(1-\hat{\lambda}_i)\) Si \(\lambda_{\text{trace}}>\) valor crítico: Rechazamos \(H_0\). Existe más de 2 vectores de cointegración.
\(r\leq k\) \(r>k\) \(-T\sum_{i=k+1}^M\ln(1-\hat{\lambda}_i)\) Si \(\lambda_{\text{trace}}\leq\) valor crítico: No rechazamos \(H_0\). El número de vectores de cointegración es \(r=k\).

Prueba de máximo valor propio

Hipótesis Nula Hipótesis Alternativa Estadístico de Máximo Valor Propio Criterio de Decisión Conclusión
\(r=0\) \(r=1\) \(\lambda_{\text{Max}}=-T\ln(1-\hat{\lambda}_1)\) Si \(\lambda_{\text{Max}}>\) valor crítico: Rechazamos \(H_0\). Existe al menos 1 vector de cointegración.
\(r=1\) \(r=2\) \(\lambda_{\text{Max}}=-T\ln(1-\hat{\lambda}_2)\) Si \(\lambda_{\text{Max}}>\) valor crítico: Rechazamos \(H_0\). Existe más de 1 vector de cointegración.
\(r=2\) \(r=3\) \(\lambda_{\text{Max}}=-T\ln(1-\hat{\lambda}_3)\) Si \(\lambda_{\text{Max}}>\) valor crítico: Rechazamos \(H_0\). Existe más de 2 vectores de cointegración.
\(r=k\) \(r=k+1\) \(\lambda_{\text{Max}}=-T\ln(1-\hat{\lambda}_{k+1})\) Si \(\lambda_{\text{Max}}\leq\) valor crítico: No rechazamos \(H_0\). El número de vectores de cointegración es \(r=k\).

• Implementación de un ejemplo

La librería [vars] contiene una base de datos (Canada) de series trimestrales macroeconómicas de Canadá (del I-1980 hasta el IV-2000), se determinará la cointegración entre las variables que representan:

  • prod: Producción
  • e: tasa de cambio
  • U: tasa de desempleo
  • rw: salarios reales
library(urca)

# Carga de datos
library(vars) 

ts_plot(Canada)
# Realizar la prueba de Johansen por traza
johansen_test_tr <- ca.jo(Canada, type = "trace", ecdet = "const", K = 2)
summary(johansen_test_tr)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1]  5.392277e-01  2.620181e-01  1.203181e-01  8.047422e-02 -7.107306e-15
## 
## Values of teststatistic and critical values of test:
## 
##            test 10pct  5pct  1pct
## r <= 3 |   6.88  7.52  9.24 12.97
## r <= 2 |  17.39 17.85 19.96 24.60
## r <= 1 |  42.31 32.00 34.91 41.07
## r = 0  | 105.84 49.65 53.12 60.16
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##                   e.l2      prod.l2        rw.l2         U.l2      constant
## e.l2        1.00000000    1.0000000    1.0000000     1.000000  1.000000e+00
## prod.l2     0.08536852    0.1562742   -0.3437156     6.602765 -6.333346e-03
## rw.l2      -0.14261822   -0.3710885   -0.3400819    -1.421147 -3.245414e-01
## U.l2        4.28476956    2.5747683    1.5615389     6.749140  1.554657e+00
## constant -967.81673997 -867.7073735 -669.1040066 -3074.812435 -8.128022e+02
## 
## Weights W:
## (This is the loading matrix)
## 
##                e.l2     prod.l2       rw.l2         U.l2      constant
## e.d    -0.005972228  0.16850796 -0.02649704  0.004648136 -1.004362e-11
## prod.d  0.004658649  0.24424906 -0.02589597 -0.010518631 -9.819830e-12
## rw.d   -0.106070442  0.03698073  0.17173200 -0.003626215 -3.949599e-12
## U.d    -0.021905078 -0.10841723 -0.03757852 -0.003044769  1.013956e-11
  • Para \(r \leq 3\): El estadístico es 6.88, menor que todos los valores críticos. No se rechaza la hipótesis nula, indicando que no hay más de 3 vectores de cointegración.
  • Para \(r \leq 2\): El estadístico es 17.39, también menor que los valores críticos al 5% y 1%. No se rechaza la hipótesis nula, sugiriendo que no hay más de 2 vectores de cointegración.
  • Para \(r \leq 1\): El estadístico es 42.31, mayor que los valores críticos al 5% (34.91) y menor que al 1% (41.07). Se rechaza la hipótesis nula al 5%, indicando la posible existencia de 2 vectores de cointegración.
  • Para \(r = 0\): El estadístico es 105.84, mayor que todos los valores críticos. Rechazamos la hipótesis nula, lo que confirma la existencia de al menos un vector de cointegración.

Basado en los resultados, hay evidencia estadística que respalda la existencia de 2 vectores de cointegración en las series analizadas. Esto sugiere una relación de equilibrio a largo plazo entre las variables económicas.

johansen_test_eig <- ca.jo(Canada, type = "eigen", ecdet = "const", K=2)
summary(johansen_test_eig)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1]  5.392277e-01  2.620181e-01  1.203181e-01  8.047422e-02 -7.107306e-15
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 3 |  6.88  7.52  9.24 12.97
## r <= 2 | 10.51 13.75 15.67 20.20
## r <= 1 | 24.91 19.77 22.00 26.81
## r = 0  | 63.54 25.56 28.14 33.24
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##                   e.l2      prod.l2        rw.l2         U.l2      constant
## e.l2        1.00000000    1.0000000    1.0000000     1.000000  1.000000e+00
## prod.l2     0.08536852    0.1562742   -0.3437156     6.602765 -6.333346e-03
## rw.l2      -0.14261822   -0.3710885   -0.3400819    -1.421147 -3.245414e-01
## U.l2        4.28476956    2.5747683    1.5615389     6.749140  1.554657e+00
## constant -967.81673997 -867.7073735 -669.1040066 -3074.812435 -8.128022e+02
## 
## Weights W:
## (This is the loading matrix)
## 
##                e.l2     prod.l2       rw.l2         U.l2      constant
## e.d    -0.005972228  0.16850796 -0.02649704  0.004648136 -1.004362e-11
## prod.d  0.004658649  0.24424906 -0.02589597 -0.010518631 -9.819830e-12
## rw.d   -0.106070442  0.03698073  0.17173200 -0.003626215 -3.949599e-12
## U.d    -0.021905078 -0.10841723 -0.03757852 -0.003044769  1.013956e-11
  • Para \(r \leq 3\): El estadístico es 6.88, menor que los valores críticos al 5% (9.24) y 1% (12.97). No rechazamos la hipótesis nula, lo que sugiere que no hay más de 3 vectores de cointegración.
  • Para \(r \leq 2\): El estadístico es 10.51, menor que los valores críticos al 5% (15.67) y 1% (20.20). No rechazamos la hipótesis nula, indicando que no hay más de 2 vectores de cointegración.
  • Para \(r \leq 1\): El estadístico es 24.91, mayor que los valores críticos al 5% (22.00) pero menor que al 1% (26.81). Se rechaza la hipótesis nula al 5%, sugiriendo que existe más de 1 vector de cointegración.
  • Para \(r = 0\): El estadístico es 63.54, mayor que todos los valores críticos. Rechazamos la hipótesis nula, confirmando la existencia de al menos un vector de cointegración.

Basado en los resultados, hay evidencia estadística que respalda la existencia de 2 vectores de cointegración en las series analizadas. Esto sugiere una relación de equilibrio a largo plazo entre las variables económicas.

3. Causalidad en el sentido de Granger

• Propósito de la prueba

La prueba causalidad de Granger se utiliza para ver si los resultados de una variable pueden predecir los resultados de otra. Esto puede ser unidireccional o bidireccional. Para llevar a cabo esta prueba, se comparan los comportamientos pasados y presentes de una serie temporal X con los de otra serie temporal Y. Si la serie X ayuda a predecir la serie Y, se dice que “X causa a Y” en el sentido de Granger, lo que muestra una relación unidireccional. Sin embargo, si X predice Y y Y también predice X, entonces hay una relación bidireccional. Cuando una serie temporal X causa a otra Y, los modelos que incluyen datos pasados de ambas series (X e Y) deberían tener un mejor rendimiento que aquellos que solo utilizan datos pasados de Y. Esto ayuda a identificar cuál variable influye más en la otra a lo largo del tiempo. Es importante destacar que este test busca identificar si una variable ocurre antes que la otra en una serie de datos, lo que las convierte en buenas herramientas de predicción. Se plantean las siguientes ecuaciones:

\[ X_t=α_0+α_1X_{t−1}+α_2X_{t−2}+…+α_iX_{t−i}+β_1Y_{t−1}+β_2Y_{t−2}+…+β_iY_{t−i}+U_{1t}\] \[ Y_t=δ_0+δ_1X_{t−1}+δ_2X_{t−2}+…+δ_iX_{t−i}+θ_1Y_{t−1}+θ_2Y_{t−2}+…+θ_iY_{t−i}+U_{2t}\]

Para esta prueba las variables X y Y deben de ser estacionarias.Para verificar que X no está causando a Y en el sentido de Granger, se debe analizar si incluir los valores rezagados (o retrasados) de X en un modelo que predice Y reduce significativamente el error de varianza. En este caso, se asume que tanto X como Y siguen un proceso autorregresivo de orden p.

• Hipótesis de la prueba

Hipotesis nula

Esto significa que los rezagos de 𝑋 no tienen un efecto estadísticamente significativo en la predicción de 𝑌, es decir,𝑋 no causa a 𝑌en el sentido de Granger.Entonces \(β_1\) \(β_2\),\(β_i\) serán cero:

\[ H_0: β_1=β_2=…=β_i=0\] Hipotesis alternativa

Esto significa que los rezagos de 𝑋 tienen un efecto estadísticamente significativo en la predicción de 𝑌, es decir,𝑋 causa a 𝑌 en el sentido de Granger.Entonces \(β_1\), \(β_2\),\(β_i\) serán distintos a cero:

\[ H_0: β_1≠β_2=…≠β_i≠0\]

• Sintaxis de implementación en R

Para aplicar La prueba de Causalidad en el Sentido de Granger se puede hacer a traves de la libreria lmtest, dentro de ella se encuentra la función grangertest para realizar la prueba Granger-Causality

library(lmtest)
# grangertest(X,Y,orden =1)

Donde:

X: es la primer serie temporal.

Y: es el segundo conjunto de la serie temporal.

orden: el número de retrasos a utilizar.

• Estadístico de prueba.

Una manera de calcular esta prueba es por medio del calculo de la suma de residuales al cuadrado de regresion no restringida (URSS)

\[ URSS =\sum_{t=1}^{n}\hat{u}^2t\] y compararla con la suma de residuales al cuadrado de una autorregresión univariada no restringida para X_t , (RRSS)

\[ RRSS =\sum_{t=1}^{n}\hat{e}2t\] El estadístico de la prueba nos queda de la siguiente forma:

\[ F≡ \frac{(RRSS−URSS/m)}{URSS/(n−k)}\]

Donde los grados de libertad son m : es el numero de términos rezagados de Y, y k es el número de parámetros estimados en la regresión no restringida. La prueba de causalidad en el sentido de Granger se calcula con la función grangertest() en R. En la presentacion de resultados el Estadistico de Prueba tiene la notacion F

• Criterio de decisión

Se rechaza la hipotesis nula si el valor-p es menor que el nivel de significancia

\[Rechazar~H_o~si~valor~p<α\] Se acepta la hipotesis nula si el valor-p es mayor o igual que el nivel de significancia

\[No~Rechazar~H_o~si~valor~p\geqα\] • Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.

Si se rechaza la hipotesis nula, existe evidencia que la serie de tiempo X causa la serie de tiempo Y en el sentido de Granger.

si no se rechaza la hipotesis nula, se dice que no hay evidencia suficiente para afirmar que X causa a Y en el sentido de Granger.

• Implementación de un ejemplo

Data <- EuStockMarkets[,1:3]

Prueba de causalidad en el sentido de Granger

library(lmtest)
granger_test <- grangertest(DAX~SMI,order=3,data = Data)
print(granger_test)
## Granger causality test
## 
## Model 1: DAX ~ Lags(DAX, 1:3) + Lags(SMI, 1:3)
## Model 2: DAX ~ Lags(DAX, 1:3)
##   Res.Df Df      F    Pr(>F)    
## 1   1850                        
## 2   1853 -3 8.4968 1.322e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El estadístico de prueba F se denota con la letra F y es igual a 8.4968 y el valor p que corresponde al estadístico de prueba F es Pr (> F) 1.322e-05. Existe evidencia estadistica de que La serie de tiempo SMI causa la serie de tiempo DAX a la propia causa de Granger. Esto significa que conocer los valores de SMI es valioso para pronosticar los valores futuros de DAX.

Prueba de causalidad en el sentido de Granger a la inversa

Esto se hace por que a pesar de que se rechazo la prueba puede que se este produciendo causalidad inversa.Es probable que los cambios en los valores del DAX estén afectando a los cambios en los valores del SMI.

library(lmtest)
granger_test <- grangertest(SMI~DAX,order=3,data = Data)
print(granger_test)
## Granger causality test
## 
## Model 1: SMI ~ Lags(SMI, 1:3) + Lags(DAX, 1:3)
## Model 2: SMI ~ Lags(SMI, 1:3)
##   Res.Df Df      F  Pr(>F)  
## 1   1850                    
## 2   1853 -3 2.6576 0.04689 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El estadístico de prueba F se denota con la letra F y es igual a 2.6576 y el valor p que corresponde al estadístico de prueba F es Pr (> F) 0.04689. Existe evidencia estadistica de que La serie de tiempo DAX causa la serie de tiempo SIM a la propia causa de Granger. Esto significa que conocer los valores de DAX es valioso para pronosticar los valores futuros de SIM.

Bibliografía

Aguilar, R. R. (2021). Apuntes de Macroeconometría. GitHub Pages. Retrieved 12 28, 2024, from https://randall-romero.github.io/econometria/00-acerca.html

ESTADÍSTICAS FINN (2021).Prueba de causalidad de Granger en R (con ejemplo), from https://finnstats.com/2021/11/08/granger-causality-test-in-r/

Durlauf, S. N., & Blume, L. E. (Eds.). (2010). Macroeconometrics and Time Series Analysis. Palgrave Macmillan.

Guisán, C. (2002). CAUSALIDAD Y COINTEGRACION EN MODELOS ECONOMETRICOS: Aplicaciones a los países de la OCDE y limitaciones de los tests de cointegración. Retrieved 12 27, 24, from https://www.usc.gal/economet/aeeadepdf/aeeade61.pdf

Montero. R (2013): Variables no estacionarias y cointegración. Documentos de Trabajo en Economía Aplicada. Universidad de Granada. España

Johansen, S.(1988). Statistical Analysis of Cointegration Vectors. Journal of Economic Dynamics and Control, vo112, pp.231-254.

Johansen Test for Cointegrating Time Series Analysis in R. (s/f). Quantstart. https://www-quantstart-com.translate.goog/articles/Johansen-Test-for-Cointegrating-Time-Series-Analysis-in-R/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=tc

Vincent Arel-Bundock. EuStockMarkets.csv, from https://github.com/vincentarelbundock/Rdatasets/blob/master/csv/datasets/EuStockMarkets.csv