A31-Cointegración y Causalidad
Portada
UNIVERSIDAD DE EL SALVADOR FACULTAD DE CIENCIAS ECONÓMICAS ESCUELA DE ECONOMÍA MÉTODOS PARA EL ANÁLISIS ECONÓMICO CICLO II-2024 GT02
TEMA A INVESTIGAR: “Uso de Api ́s en Rstudio”
INTEGRANTES:
Nombre | Cárne |
---|---|
Edwin Fabricio Aguirre Sarmiento | AS19011 |
Gabriel Arturo Sánchez Henríquez | SH22002 |
Diego Edgardo Siliezar Madrid | SM21024 |
DOCENTE: Carlos Ademir Pérez Alas
Ciudad Universitaria, San Salvador, 10 de enero del 2025.
Se abordaran tres pruebas fundamentales en el análisis de series de tiempo las cuales son las siguientes: 1. la prueba de raíz unitaria de Dickey-Fuller, 2. la prueba de cointegración de Johansen, y por ultimo la prueba de causalidad en el sentido de Granger. Por cada prueba se incluira el propósito, las hipótesis, el código en R, estadisticos mas sus criterios de desicion, y una interpretación de los resultados.
Prueba de Raíz Unitaria de Dickey-Fuller
Propósito de la prueba, es decir ¿Para qué se usa?
La prueba de Dickey-Fuller verifica si una serie de tiempo tiene una raíz unitaria, es decir, si es no estacionaria
La prueba Dickey-Fuller 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 por lo que el test puede realizarse en tres versiones sin intercepto ni tendencia o con alguna de las dos.
Esta prueba se basa en la ecuacion:
Δxt=(α−1)xt−1+εt Que es el resultado de sustraer xt−1 de ambos lados de esta ecuacion xt=αxt−1+εt
Hipótesis de la prueba. (explique el porqué de las hipótesis Nula y Alternativa)
La hipótesis nula en la prueba Dickey-Fuller es que α es igual a 1. La hipótesis alternativa es que α < 1, es decir, que (α−1) es negativo, lo que refleja el proceso estacionario
Sintaxis de implementación en R, explicando cada uno de los argumentos
Para el calculo de la prueba se hace uso de una libreria llamda [tseries], y se ocuoa la funcion adfTest, la cual su estructua es la siguiente:
adf.test(x, alternative = c(“stationary”, “explosive”), k = trunc((length(x)-1)^(1/3)))
Donde: x = Es el vector numérico o una serie temporal a evaluar
alternative = Indica la hipótesis alternativa y debe ser una de «estacionaria» (por defecto) o «explosiva». Puede especificarse sólo con la letra inicial.
k = Es el orden de los retardos para calcular el estadístico de prueba.
Tener en cuenta que el número de lags utilizados en la regresión es k. El valor por defecto de trunc((longitud(x)-1)^(1/3)) corresponde al límite superior sugerido en la tasa a la que el número de lags, k, debe hacerse crecer con el tamaño de la muestra para la configuración general ARMA(p,q). Obsérvese que para k igual a cero se calcula la prueba estándar de Dickey-Fuller.
En este caso se usara un lag 0 para el ejemplo de prueba simplemente mostrando la prueba estándar de Dickey-Fuller.
Implementación de un ejemplo
library(tseries)
# Datos de ejemplo
set.seed(123)
data <- cumsum(rnorm(100)) # Se simula una serie simulada no estacionaria
# Prueba de Dickey-Fuller
adf_test <- adf.test(data, k=0)
adf_test
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -1.9361, Lag order = 0, p-value = 0.6031
## alternative hypothesis: stationary
Estadístico de prueba y Criterio de decisión
El estadístico de prueba de Dickey-Fuller es un valor calculado durante la prueba de Dickey-Fuller para determinar si una serie de tiempo es estacionaria o no.
El estadístico de Dickey-Fuller se basa en el coeficiente estimado γ γ asocia a xt−1, y se define como:
Estadístico ADF=ˆγerror estándar de ˆγ El criterio de decision seria:
Si el estadístico es menor que el valor crítico, rechazamos H0 y concluimos que la serie es estacionaria.
Si el estadístico es mayor o igual al valor crítico, no rechazamos H0, indicando que la serie no es estacionaria.
Sin embargo un criterio mas practico, facil y mas rapido seria mediante el uso del p-value que nos devuelve la prueba empleada en R, por lo cual el criterio de decision seria el siguiente:
Si el p-value es menor que al nivel de significancia establecido (estandar 0.05), rechazamos H0 y concluimos que la serie es estacionaria.
Si el p-value es mayor o igual al nivel de significancia establecido (estandar 0.05), no rechazamos H0, indicando que la serie no es estacionaria.
Como resultado de la prueba hecho en el ejemplo tenemos el estadistico Dickey-Fuller = -1.9361
Y como p-value = 0.6031
Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.
Si no se rechaza la hipotesis nula: - Hipótesis nula (H0): La serie tiene una raíz unitaria (no estacionaria). Si se rechaza la hipotesis nula: - Hipótesis alternativa (H1): La serie no tiene una raíz unitaria (es estacionaria).
Usando el ejemplo realizado tenemos el caso en el cual al tomar el p-value = 0.6031 calculado en la prueba tenemos suficiente evidencia para no rechazar la hipotesis nula lo cual resulta en que la serie tiene una raiz unitarialo que significa que no es estacionaria.
Prueba de Cointegración de Johansen
Propósito de la prueba, es decir ¿Para qué se usa?
La cointegración de Johansen se utiliza para analizar las relaciones a largo plazo entre variables de series temporales, permitiendo la identificación de vectores cointegrados, que indican la presencia de una relación de equilibrio estable a largo plazo entre las variables.
La justificación para usar la cointegración de Johansen radica en la capacidad que tiene para capturar las relaciones a largo plazo entre las variables que se mueven juntas en el tiempo. La cointegración de Johansen permite el análisis de datos de series temporales no estacionarias centrándose en su movimiento conjunto e identificando las relaciones de equilibrio subyacentes. Las matemáticas subyacentes a la cointegración de Johansen se basan en el modelo vectorial autorregresivo (VAR) y su representación en el marco del modelo vectorial de corrección de errores (VECM).
Hipótesis de la prueba. (explique el porqué de las hipótesis Nula y Alternativa)
La prueba de Johansen utiliza la descomposición de valores propios y se basa en dos tipos de estadísticas principales: traza y autovalores. Estas se calculan para diferentes rangos de cointegración, es decir, diferentes números de relaciones de cointegración posibles.
Hipótesis Nula(H0)
La hipótesis nula de la prueba se formula en términos del número de relaciones de cointegración (r) presentes entre las series temporales:
- Para la estadística de la traza: $ H_0: r r_0$ Esto implica que hay como máximo r0 relaciones de cointegración.
Por ejemplo, si r0=0, no existe ninguna relación de cointegración.
- Para la estadística de valor máximo propio: H0:r=r0 Esto implica que hay exactamente r0 relaciones de cointegración.
Hipótesis Alternativa (H1)
La hipótesis alternativa varía según la estadística empleada:
Para la estadística de la traza: H1:r>r0 Esto implica que hay más de r0 relaciones de cointegración.
Para la estadística de valor máximo propio: H1:r=r0+1 Esto implica que hay exactamente r0+1 relaciones de cointegración.
Sintaxis de implementación en R, explicando cada uno de los argumentos
Para el calculo de la prueba se hace uso de una libreria llamda [urca], y se ocupa la funcion [ca.jo], la cual su estructua es la siguiente:
ca.jo(x, type = c(“eigen”, “trace”), ecdet = c(“none”, “const”, “trend”), K = 2,spec=c(“longrun”, “transitory”), season = NULL, dumvar = NULL)
Donde: x = Matriz de datos que se investigará para la cointegración.
Type = La prueba a realizar, ya sea «eigen» o «trace».
ecdet = El carácter, «none» para no interceptar en cointegración, «const» para término constante en cointegración y «trend» para variable de tendencia en cointegración.
K = El orden de retardo de las series (niveles) en el VAR.
spec = Determina la especificación del VECM, véanse los detalles a continuación.
Season = Si deben incluirse variables ficticias estacionales, la frecuencia de los datos debe establecerse en consecuencia, es decir, «4» para datos trimestrales.
dumvar = Si deben incluirse variables ficticias, puede proporcionarse una matriz con una dimensión de fila igual a x.
Implementación de un ejemplo
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] 4.331654e-01 1.775836e-01 1.127905e-01 4.341130e-02 6.853773e-16
##
## 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 constant
## LRM.d -0.21295494 -0.00481498 0.035011128 2.028908e-03 2.437019e-13
## LRY.d 0.11502204 0.01975028 0.049938460 1.108654e-03 -1.738409e-13
## IBO.d 0.02317724 -0.01059605 0.003480357 -1.573742e-03 -2.139321e-14
## IDE.d 0.02941109 -0.03022917 -0.002811506 -4.767627e-05 -1.148246e-14
data(finland)
sjf <- finland
sjf.vecm <- ca.jo(sjf, ecdet = "none", type="trace", K=2,
spec="longrun", season=4)
summary(sjf.vecm)
##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend
##
## Eigenvalues (lambda):
## [1] 0.30932660 0.22599561 0.07308056 0.02946699
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 3 | 3.11 6.50 8.18 11.65
## r <= 2 | 11.00 15.66 17.95 23.52
## r <= 1 | 37.65 28.71 31.52 37.22
## r = 0 | 76.13 45.23 48.28 55.43
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## lrm1.l2 lny.l2 lnmr.l2 difp.l2
## lrm1.l2 1.0000000 1.000000 1.0000000 1.000000
## lny.l2 -0.9763252 -1.323191 -0.9199865 1.608739
## lnmr.l2 -7.0910749 -2.016033 0.2691516 -1.375342
## difp.l2 -7.0191097 22.740851 -1.8223931 -15.686927
##
## Weights W:
## (This is the loading matrix)
##
## lrm1.l2 lny.l2 lnmr.l2 difp.l2
## lrm1.d 0.033342108 -0.020280528 -0.129947614 -0.002561906
## lny.d 0.022544782 -0.005717446 0.012949130 -0.006265406
## lnmr.d 0.053505000 0.046876449 -0.007367715 0.002173242
## difp.d 0.005554849 -0.017353903 0.014561151 0.001531004
Estadístico de prueba y Criterio de decisión
Existen 2 estadisticos de prueba de Johansen uno es el de trace y el otro el de autovalores
Trace statistic
Este estadistico evalúa si existe cointegración entre las series temporales. Este estadístico mide la evidencia en contra de la hipótesis nula H0, que establece el número máximo de relaciones de cointegración r≤r0.
El estadístico de traza ayuda a medir la importancia acumulativa de los valores propios λi desde i=r+1 hasta n. Valores propios más grandes indican relaciones fuertes entre las series temporales, lo que sugiere la existencia de cointegración en las series temporales.
Fórmula del trace statistic
El estadístico de traza se calcula como: TraceStatistic=−Tn∑i=r+1ln(1−λi)
Donde: - T: Número de observaciones ajustadas en la prueba.
n: Número de series en el sistema.
λi: Valores propios estimados (autovalores) ordenados de mayor a menor.
r: Número de relaciones de cointegración bajo la hipótesis nula H0.
El criterio de decisión en la prueba de Johansen se compara el estadístico de traza con los valores críticos correspondientes para un nivel de significancia específico (10%, 5% o 1%).
Si el estadístico de traza es mayor que el valor crítico para el nivel de significancia elegido:
Se rechaza la hipótesis nula (H0:r≤r0) Esto implica que hay más relaciones de cointegración de las planteadas en la hipótesis nula.
Si el estadístico de traza es menor o igual al valor crítico:
No se rechaza la hipótesis nula (H0:r≤r0). Esto implica que el número de relaciones de cointegración es como máximo r0.
La prueba eigenvalor máximo:
Esta prueba se basa en la razón de máxima verosimilitud:ln[LMV(r)LMV(r+1)],
y se realiza de forma secuencial para: r=0,1,…,n−1.
Esta prueba verifica la hipótesis nula de que el rango de cointegración es r, frente a la hipótesis alternativa de que el rango de cointegración es (r+1).
El estadístico de prueba está dado por: ℓ∗r+1−ℓ∗r=−T2ln(1−ˆλr+1).
El criterio de decision es igual en el anterior explicado para el estadistico de traza en el cual se evalia el estadisco respecto a los valores criticos.
Como resultado de la prueba con el estadistico eigen tenemos:
Para r=0:
Estadístico de eigen: 30.09
Valor crítico (5%): 28.14
Para r≤1:
Estadístico de eigen: 10.36
Valor crítico (5%): 22
Para r≤2:
Estadístico de eigen: 6.34
Valor crítico (5%): 15.67
Para r≤3:
Estadístico de eigen: 2.35
Valor crítico (5%): 9.24
Como resultado de la prueba con el estadistico trace tenemos:
Para r=0:
Estadístico de trace: 76.13
Valor crítico (5%): 48.28
Para r≤1:
Estadístico de trace: 37.65
Valor crítico (5%): 31.52
Para r≤2:
Estadístico de trace: 11.00
Valor crítico (5%): 17.95
Para r≤3:
Estadístico de trace: 3.11
Valor crítico (5%): 8.18
Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba.
Para poder dar una interpretacion de los resultados se tomaran los resultados del estadistico trace.
Hipótesis 1: r=0 (Ninguna relación de cointegración)
Dado que 76.13 > 48.28, existe suficiente evidencia para poder rechazar la hipótesis nula H0:r≤0.Lo que sugiere que existe al menos una relación de cointegración en las series temporales.
Hipótesis 2: r≤3 (Máximo una relación de cointegración)
Dado que 3.11<8.18, existe suficiente evidencia para no rechazar la hipótesis nula H0:r≤1.Lo que implica que no hay más de una relación de cointegración en las series temporales.
Prueba de Causalidad de Granger
Propósito de la prueba, es decir ¿Para qué se usa?
La causalidad de Granger se explica de la siguiente manera:
“Se dice que una serie temporal Xt causa a otra serie temporal Xt si los valores históricos de Yt contribuyen a la predicción de los valores futuros de Yt”
Esto implica que Yt no solo depende de sus propios valores pasados, es decir, Yt−p, sino también de los valores pasados de Xt, es decir, Xt−p, al proporcionar información adicional útil para la predicción.
La causalidad de Granger está sujeta a dos condiciones fundamentales: 1. La primera condición establece que la causa debe ocurrir antes que el efecto. En otras palabras, el efecto Yt depende únicamente de los valores pasados de la causa Xt, sin incluir valores simultáneos o futuros. 2. La segunda condición exige que la causa aporte información única que permita mejorar la predicción de los valores futuros de Yt.
Hipótesis de la prueba. (explique el porqué de las hipótesis Nula y Alternativa)
Se plantean dos hipótesis que sirven para determinar si una serie temporal 𝑋 tiene la capacidad de predecir o causar a otra serie temporal 𝑌 en el sentido de Granger, es decir, si los valores pasados de 𝑋 contienen información que ayuda a mejorar la predicción de Y.
Conocer el valor de una serie de tiempo X en un rezago dado sirve para pronosticar el valor de una serie de tiempo Y en un período de tiempo posterior que se conoce como “causas de Granger”.
Hipótesis Nula(H0)
H0: β2,1=β2,2=β2,3=0 “La serie de tiempo X no causa que la serie de tiempo Y sea la causa de Granger en sí misma.”
Hipótesis Alternativa (H_1)
H1:β2,1,β2,2,β2,3≠0 “La serie de tiempo X causa la serie de tiempo Y a la propia causa de Granger.”
Sintaxis de implementación en R, explicando cada uno de los argumentos
Para el calculo de la prueba se hace uso de una libreria llamda [lmtest] y se ocupa la funcion [grangertest], la cual su estructua es la siguiente:
grangertest(x, y, order = 1, na.action = na.omit, ...)
Donde:
x = ya sea una serie bivariante (en cuyo caso y tiene que faltar) o una serie univariante de observaciones.
y = una serie univariante de observaciones (si x también es univariante).
order = entero que especifica el orden de los rezagos que se incluirán en la regresión auxiliar.
na.action = una función para eliminar los NA después de alinear las series x e y.
… = otros argumentos pasados a waldtest.
Estadístico de prueba
Para el estadistico de prueba se utiliza la prueba F
F = \frac{(SCR_R-SCR_{NR})/m}{SCR_{NR}/(n-k)} ## Criterio de decisión
\text{No se rechaza H}_0 \text{ si } F<F_\text{crítico} \text{ Ó } p\text{-value}>0.05 \text{Se rechaza H}_0 \text{ si } F>F_\text{crítico} \text{ Ó } p\text{-value}<0.05 ## Interpretación del rechazo, o no rechazo de la Hipótesis Nula de la prueba. Si P_\text{value} ≥ α no se rechaza la hipótesis nula, por lo tanto se concluye que no hay evidencia suficiente para decir que las variables de tiempo x granger-causan la serie de tiempo y, es decir, es tal caso no se estaria prediciendo el modelo.
Si $P_ ≤ α $ se rechaza la hipótesis nula se podemos concluir que tenemos evidencia suficiente para decir que las series de tiempo x Granger-causan las series de tiempo y.
Implementación de un ejemplo
El siguiente ejemplo se tomo de “How to Perform a Granger-Causality Test in R (Zach 2021)”, en el cual se usará el conjunto de datos ChickEgg que viene precargado en el paquete lmtest. Este conjunto de datos contiene valores para la cantidad de huevos fabricados junto con la cantidad de pollos en los EE. UU. Desde 1930 hasta 1983:
Carga de datos
## chicken egg
## [1,] 468491 3581
## [2,] 449743 3532
## [3,] 436815 3327
## [4,] 444523 3255
## [5,] 433937 3156
## [6,] 389958 3081
Realizando el test
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; para ello se ejecutará la prueba usando tres lags o retrasos:
## 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
Interpretación de 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 solo el número de pollos en los tres años anteriores como variables predictoras.
F: Esta es la estadística de prueba F, el cual tiene un valor de 5.405.
Pr (> F): este es el valor p que corresponde al estadístico de prueba F, el cual es 0.002966.
Dado que el valor p es menor que 0.05, podemos rechazar la hipótesis nula de la prueba y concluir que conocer el número de huevos es útil para predecir el número futuro de pollos.
Realizando la prueba de causalidad de Granger a la inversa
A pesar que rechazamos la hipótesis nula de la prueba, en realidad es posible que exista un caso de causalidad inversa, es decir, es posible que la cantidad de pollos esté provocando que la cantidad de huevos cambie.
Para descartar esta posibilidad debemos realizar la prueba de Causalidad de Granger a la inversa, utilizando pollos como variable predictora y huevos como variable de respuesta:
# Prueba de causalidad de Granger a la inversa
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. Dado que no es inferior a 0.05 no podemos rechazar la hipótesis nula, es decir, la cantidad de pollos no predice la cantidad futura 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
ienceDirect. (2023). Título del artículo. ScienceDirect. Recuperado de https://www.sciencedirect.com/science/article/pii/S2590051X23000345#section-cited-by
Montero, P. (s. f.). Cointegración: Conceptos básicos y ejemplos. Universidad de Granada. Recuperado de https://www.ugr.es/~montero/matematicas/cointegracion.pdf?authuser=0
R. (2013). Variables no estacionarias y cointegración. Documentos de Trabajo en Economía Aplicada. Universidad de Granada, España.
R-bloggers. (2021). Granger causality test in R with example. Recuperado de https://www.r-bloggers.com/2021/11/granger-causality-test-in-r-with-example/?authuser=0
Rpubs. (2021). Granger causality test in R. Recuperado de https://rpubs.com/wilsonsr/828582