Indicaciones:
Explique cómo realizar las siguientes pruebas en R:
1. Prueba de Raíz Unitaria de Dickey & Fuller.
2. Cointegración en el enfoque de Soren Johansen.
3. Causalidad en el sentido de Granger.
Cada una de las pruebas deberá incluir la siguiente estructura de presentación:
La prueba de Raiz unitaria se usa para determinar si una serie temporal es estacionaria o contiene una raíz unitaria (no estacionaria)
La regresión base del ADF es:
[ y_t = + t + y_{t-1} + _{i=1}^k i y{t-i} + _t]
La hipótesis relevante es sobre γ, el coeficiente del término rezagado:
H0: γ = 0 → la serie tiene raíz unitaria → NO es estacionaria Esto ocurre cuando (y_t) sigue un paseo aleatorio.
H1: γ < 0 → la serie es estacionaria (sin raíz unitaria) Un γ negativo implica un proceso que vuelve al equilibrio.
adf.test(x, k = número_de_rezagos)
Donde:
En la salida de R aparece:
Augmented Dickey-Fuller Test
Dickey-Fuller = -3.45, p-value = 0.045
Si p-value < 0.05 → rechazo H0 → la serie es estacionaria
Si p-value ≥ 0.05 → no rechazo H0 → la serie tiene raíz unitaria
Rechazo H0: la serie es estacionaria.
No rechazo H0: la serie no es estacionaria → requiere diferenciación.
library(tseries)
set.seed(123)
serie <- arima.sim(list(order = c(0,1,0)), n = 200)
adf.test(serie, k = 2)##
## Augmented Dickey-Fuller Test
##
## data: serie
## Dickey-Fuller = -2.388, Lag order = 2, p-value = 0.4136
## alternative hypothesis: stationary
La prueba de Johansen se utiliza para detectar relaciones de equilibrio a largo plazo entre dos o más series.
Si existe cointegración:
Las series se mueven juntas a largo plazo. Se debe usar un modelo VECM, no VAR.
Johansen evalúa el número de vectores de cointegración (r).
Dos estadísticas:
Trace Test H0: r = r₀ (número de vectores de cointegración ≤ r₀)
H1: r > r₀
Max-Eigenvalue H0: r = r₀
H1: r = r₀ + 1
ca.jo(datos, type = “trace”, # o “eigen” ecdet = “const”, # componente determinística: const, trend, none K = 2) # número de rezagos +1
Donde:
Fragmento de salida:
Test type: trace statistic r <= 0: 25.4 (critical value 15.4) r <= 1: 8.2 (critical value 3.8)
library(urca)
set.seed(123)
x <- cumsum(rnorm(200))
y <- x + rnorm(200, sd = 0.5)
datos <- cbind(x, y)
jtest <- ca.jo(datos, type = "trace", ecdet = "const", K = 2)
summary(jtest)##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , without linear trend and constant in cointegration
##
## Eigenvalues (lambda):
## [1] 3.647929e-01 2.555981e-02 -5.541128e-308
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 5.13 7.52 9.24 12.97
## r = 0 | 94.98 17.85 19.96 24.60
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## x.l2 y.l2 constant
## x.l2 1.000000000 1.0000000 1.000000
## y.l2 -0.987452094 0.2494413 -1.180294
## constant -0.008879332 -2.0727334 17.693469
##
## Weights W:
## (This is the loading matrix)
##
## x.l2 y.l2 constant
## x.d -0.08119175 -0.04467488 5.658533e-18
## y.d 1.00224838 -0.04541582 4.244958e-18
Determina si: los rezagos de una variable X contribuyen a predecir Y.
No es causalidad “real”, sino “predictiva”.
Ejemplo: evaluar si X causa a Y.
H0: X no causa a Y en el sentido de Granger. → Los coeficientes de los rezagos de X son todos cero.
H1: X sí causa a Y. → Al menos un coeficiente rezagado de X es distinto de cero.
Estas hipótesis se basan en que si X tiene poder predictivo sobre Y, sus rezagos deben mejorar el modelo.
grangertest(Y ~ X, order = p)
Donde:
Salida:
F-test = 4.52, p-value = 0.015
library(lmtest)
set.seed(123)
x <- cumsum(rnorm(200))
y <- 0.5*lag(x, -1) + rnorm(200) # x influye en y
grangertest(y ~ x, order = 2)## Granger causality test
##
## Model 1: y ~ Lags(y, 1:2) + Lags(x, 1:2)
## Model 2: y ~ Lags(y, 1:2)
## Res.Df Df F Pr(>F)
## 1 193
## 2 195 -2 35.37 8.184e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1