Series Temporales en R
Vectores Autotegresivos (VAR)
Nerys Ramírez Mordán
Universidad Autónoma de Santo Domingo
January 12, 2020
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 1/1
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 2/1
Preliminares
Section 1
Preliminares
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 3/1
Preliminares
Modelo estructural
El modelo estructural captura las relaciones contemporanea derivadas de la
teoria (B):
BYt = Γ0 + Γ1 Yt−1 + εt , εt ∼ N (M, Σε )
(I − Γ1 L) Yt = B (L) Yt = Γ0 + t
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 4/1
Preliminares
Modelo estructural
Para obtener la representación del VAR(p), premultiplicamos el VAR
tradicional por matriz (B −1 ), donde se encuentran las restricciones
estructurales que impone la teoría económica o las relaciones contemporáneas
entre variables:
Yt = B −1 Γ0 + B −1 Γ1 Yt−1 + B −1 εt
Yt = A0 + A1 Yt−p + ut
0 0
; A0 = B −1 Γ0 , A1 = B −1 Γ1 y ut = B −1 εt .
– Siendo Yt = y1,t , y2,t
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 5/1
Preliminares
Representación del VAR
Dado un VAR(p) en su forma reducida, sin restringir y sin variables exógenas:
Yt = A0 + A1 Yt−p + ut
Donde Yt ∼ I(0) es una matriz de kxT variables estacionarias, consideradas a
priori como endógenas; p representa los retardos a incluir; A1 representa una
matriz cuadrada (kxk) de coeficientes parciales que acompañan el vector de
variables endógenas; y, E (ut ) = 0;E (ut ut0 ) = Σ, pudiendo Σ no ser diagonal.
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 6/1
Preliminares
Modelo estructural
Ahora, verifique que ut = B −1 εt son combinaciones lineales de las
innovaciones estructurales de interés.
yt = (B −1 Γ0 ) + (B −1 Γ1 )yt−1 + B −1 t
Modelo VAR
El VAR es una forma reducida (sistema de ecuaciones en que cada variable
endógena se expresa en funcion solo de las variables predeterminadas)
derivada de algún modelo estrutural (Londoño, 2005, p.5).
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 7/1
Vectores autoregresivos
Section 2
Vectores autoregresivos
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 8/1
Vectores autoregresivos
Representación historica
library(tidyverse)
[Link](EuStockMarkets) %>%
mutate(date = time(EuStockMarkets)) %>%
gather(id, value, -date) %>%
ggplot(aes(x = date, y = value)) +
geom_line(aes(color = id), size = 1)+
theme_minimal()
8000 id
6000 CAC
value
DAX
4000
FTSE
2000 SMI
1993 1995 1997 1999
date
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 9/1
Vectores autoregresivos
Orden de integración
Los VAR se construyen sobre series estacionarias.
k<-ncol(EuStockMarkets)
obs<-nrow(EuStockMarkets)
ret <- diff(log(EuStockMarkets))
colnames(ret) <- colnames(EuStockMarkets)
head(ret)
## DAX SMI CAC FTSE
## [1,] -0.009326550 0.006178360 -0.012658756 0.006770286
## [2,] -0.004422175 -0.005880448 -0.018740638 -0.004889587
## [3,] 0.009003794 0.003271184 -0.005779182 0.009027020
## [4,] -0.001778217 0.001483372 0.008743353 0.005771847
## [5,] -0.004676712 -0.008933417 -0.005120160 -0.007230164
## [6,] 0.012427042 0.006737244 0.011714353 0.008517217
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 10 / 1
Vectores autoregresivos
Test de estacionariedad: correlogramas
library(ggfortify)
DAX <- ts(ret[,"DAX"], frequency = 12, star = 1991.496)
autoplot(acf(DAX, type = "partial", plot = FALSE),
[Link] = '#0000FF', [Link] = 0.8, [Link] = 'ma')
0.06
0.03
ACF
0.00
−0.03
0 1 2
Lag
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 11 / 1
Vectores autoregresivos
Test de estacionariedad: Dickey-Fuller
h0 del test es que la serie presenta raíz unitaria. En el ejemplo siguiente, se
rechaza h0 .
library(tseries)
[Link](ret[,"DAX"])
##
## Augmented Dickey-Fuller Test
##
## data: ret[, "DAX"]
## Dickey-Fuller = -11.105, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 12 / 1
Vectores autoregresivos
Seleccionar el orden del VAR
El orden del Var (p) se puede obtener a partir de diversas metodologías:
– Criterio de información: AIC (Akaike Information Criterion) o BIC
(Schwarz/Bayesian Information Criterion).
– Contraste de autocorrelación de los residuos.
– Reglas empírica a partir del tamaño de la muestra (T/3) o derivado de algún
modelo empírico.
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 13 / 1
Vectores autoregresivos
Seleccionar el orden del VAR
Es decir, (p) se obtiene a partir del valor del mismo que permita obtener
innovaciones ruido blanco, o minimice los denominados criterios de
información.
n2 p + n
AIC = ln |Ω| + 2
T
n2 p + n ln (T )
BIC = ln |Ω| + 2
T
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 14 / 1
Vectores autoregresivos
Seleccionar el orden del VAR
Se toma el orden que hace mínimo el criterio de información.
library(sandwich);
library(zoo); library(vars);
VARselect(ret, [Link] = 4, type="both")
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 1 1 1 1
##
## $criteria
## 1 2 3 4
## AIC(n) -3.940485e+01 -3.939758e+01 -3.939631e+01 -3.939167e+01
## HQ(n) -3.937850e+01 -3.935366e+01 -3.933483e+01 -3.931262e+01
## SC(n) -3.933336e+01 -3.927842e+01 -3.922950e+01 -3.917720e+01
## FPE(n) 7.703542e-18 7.759802e-18 7.769624e-18 7.805749e-18
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 15 / 1
Vectores autoregresivos
Estimación del VAR
modelVAR <- VAR(ret, p = 1)
# Ver representación del VAR
# summary(modelVAR)
# summary(modelVAR,equation="DAX")
Note que se comentan algunas salidas, por cuestiones de formato.
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 16 / 1
Vectores autoregresivos
Estimación del VAR
Podemos buscar el orden de retardo del VAR basados en el criterio Akaike de
información.
modelVAR <- VAR(ret, type = "none", [Link] = 5, ic = "AIC")
# summary(modelVAR)
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 17 / 1
Vectores autoregresivos
Estimación del VAR: stargazer reportar resultados
library(stargazer)
eq <- modelVAR$varresult
stargazer(eq$DAX, eq$SMI, eq$CAC, eq$FTSE,
type="text", [Link]=FALSE)
##
## =====================================================================
## Dependent variable:
## -------------------------------------
## (1) (2) (3) (4)
## ---------------------------------------------------------------------
## DAX.l1 0.006 -0.008 -0.026 -0.010
## (0.040) (0.036) (0.042) (0.030)
##
## SMI.l1 -0.089** 0.0004 -0.109*** -0.085***
## (0.038) (0.034) (0.040) (0.029)
##
## CAC.l1 0.037 0.035 0.062* -0.005
## (0.034) (0.031) (0.037) (0.026)
##
## FTSE.l1 0.050 0.070* 0.092** 0.165***
## (0.042) (0.038) (0.045) (0.033)
##
##Ramírez
Nerys ---------------------------------------------------------------------
Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 18 / 1
Vectores autoregresivos
Validación del VAR
Los residuos deben ser ruido blanco.
resid_dax <- residuals(modelVAR)[,"DAX"]
autoplot(acf(resid_dax, type = "partial", plot = FALSE),
[Link] = '#0000FF', [Link] = 0.8, [Link] = 'ma')
0.06
0.03
ACF
0.00
−0.03
0 10 20 30
Lag
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 19 / 1
Vectores autoregresivos
Validación del VAR
The null hypothesis is no serial correlation.
[Link](modelVAR, [Link] = 16, type = "[Link]")
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object modelVAR
## Chi-squared = 272.44, df = 240, p-value = 0.07367
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 20 / 1
Vectores autoregresivos
Validación del VAR: estabilidad
Dada la representación general de un VAR de orden p:
Yt = A0 + A1 Yt−p + ut , Se puede utilizar el operador de retardos para:
(In − A1 Lp ) Yt = A0 + ut
−1 −1
Yt = (In − A1 Lp ) A0 + (In − A1 Lp ) ut
La condición de estabilidad requiere que todos los valores propios de la matriz
(In − A1 Lp ) estén fuera del círculo unitario.
roots(modelVAR)
## [1] 0.09538188 0.07803836 0.07803836 0.03132215
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 21 / 1
Vectores autoregresivos
Validación del VAR: estabilidad
Raices unitarias
Recuerde (I − φL)Yt = ut , que resolviendo el polinomio de la ec. característica
((I − φL) = 0), se obtiene L = φ1 , por lo que dado la condición de estabilidad
(|φ| < 1), L > 1
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 22 / 1
Vectores autoregresivos
Validación del VAR: estabilidad
# plot(stability(modelVAR), nc = 2)
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 23 / 1
Vectores autoregresivos
ARCH test (Autoregressive conditional
heteroscedasdicity)
[Link](modelVAR, [Link] = 10)
##
## ARCH (multivariate)
##
## data: Residuals of VAR object modelVAR
## Chi-squared = 1640.7, df = 1000, p-value < 2.2e-16
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 24 / 1
Vectores autoregresivos
Extraer objetos de un modelo VAR
summary(modelVAR$varresult$DAX)$[Link]
## [1] 0.001791585
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 25 / 1
Vectores autoregresivos
Análisis de VAR: impulse response
Un VAR(p) es invertibles (lo puedo escribir como unVAM(p)), al cumplir la
condición de estabilidad:
Yt = A0 + A1 Yt−1 + ut
Yt = A0 + A1 [A0 + A1 Yt−2 + ut−1 ] + ut
Yt = (Ik + A1 ) A0 + A21 Yt−2 + (A1 ut−1 + ut )
...
n−1
X
Yt = Ik + A1 + A21 + ... + An−1 Ai1 ut−i + An1 Yt−n
1 A 0 +
i=0
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 26 / 1
Vectores autoregresivos
Análisis de VAR: impulse respons
Tomando la representación ma del var :
∞
X
Yt = u + Ai1 ut−i
i=0
Ai1 es la función de impulso respuesta al horizonte i de shocks. Siendo la
representación MA(p).
Yt = ut + Φ1 ut−1 + Φ2 ut−2 + ...
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 27 / 1
Vectores autoregresivos
Análisis de VAR: impulse response
varirfs <- irf(modelVAR,[Link] = 30)
varirfs <- irf(modelVAR,
[Link] = 12,
response = "DAX", impulse = "FTSE",
boot = T, ci = 0.95, run = 100)
plot(varirfs)
xy$x
2 6 12
0e+00
Orthogonal Impulse Response from FTSE
DAX
95 % Bootstrap CI, 100 runs
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 28 / 1
Vectores autoregresivos
Análisis de VAR: impulse response
varirfsc <- irf(modelVAR,
[Link] = 12,
response = "DAX", impulse = "FTSE",
boot = T, ci = 0.95, run = 100,
cumulative = T)
plot(varirfsc)
Orthogonal Impulse Response from FTSE (cumulative)
8e−04
6e−04
4e−04
DAX
2e−04
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 29 / 1
Vectores autoregresivos
Análisis de VAR: descomposición de la varianza
fevd(modelVAR, [Link] = 10)$DAX
## DAX SMI CAC FTSE
## [1,] 1.0000000 0.000000000 0.000000000 0.0000000000
## [2,] 0.9961225 0.001905212 0.001242891 0.0007293681
## [3,] 0.9960886 0.001929305 0.001243016 0.0007390955
## [4,] 0.9960884 0.001929365 0.001243081 0.0007391098
## [5,] 0.9960884 0.001929366 0.001243082 0.0007391100
## [6,] 0.9960884 0.001929366 0.001243082 0.0007391100
## [7,] 0.9960884 0.001929366 0.001243082 0.0007391100
## [8,] 0.9960884 0.001929366 0.001243082 0.0007391100
## [9,] 0.9960884 0.001929366 0.001243082 0.0007391100
## [10,] 0.9960884 0.001929366 0.001243082 0.0007391100
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 30 / 1
Vectores autoregresivos
Análisis de VAR: causalidad
library(lmtest)
grangertest(ret[,"FTSE"] ~ ret[,"DAX"])
## Granger causality test
##
## Model 1: ret[, "FTSE"] ~ Lags(ret[, "FTSE"], 1:1) + Lags(ret[, "DAX"], 1:1)
## Model 2: ret[, "FTSE"] ~ Lags(ret[, "FTSE"], 1:1)
## [Link] Df F Pr(>F)
## 1 1855
## 2 1856 -1 5.9822 0.01454 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 31 / 1
Vectores autoregresivos
Pronóstico con VAR
forecastsVAR <- predict(modelVAR, [Link] = 100)
predict(modelVAR, [Link] = 10)[[1]]$DAX
## fcst lower upper CI
## [1,] -4.013255e-04 -0.02060845 0.01980580 0.02020713
## [2,] -1.096055e-04 -0.02035612 0.02013691 0.02024652
## [3,] -7.132264e-06 -0.02025417 0.02023990 0.02024704
## [4,] -2.555257e-08 -0.02024706 0.02024701 0.02024704
## [5,] 4.287872e-08 -0.02024700 0.02024708 0.02024704
## [6,] 4.797594e-09 -0.02024703 0.02024704 0.02024704
## [7,] 2.529015e-10 -0.02024704 0.02024704 0.02024704
## [8,] -2.116357e-12 -0.02024704 0.02024704 0.02024704
## [9,] -1.753562e-12 -0.02024704 0.02024704 0.02024704
## [10,] -1.728417e-13 -0.02024704 0.02024704 0.02024704
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 32 / 1
Vectores autoregresivos
Pronóstico con VAR
plot(forecastsVAR)
Forecast of series DAX
0.05
−0.10
0 500 1000 1500 2000
Forecast of series SMI
0.02
−0.08
0 500 1000 1500 2000
Forecast of series CAC
0.02
−0.08
0 500 1000 1500 2000
Forecast of series FTSE
0.04
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 33 / 1
Vectores autoregresivos estructurales (SVAR)
Section 3
Vectores autoregresivos estructurales (SVAR)
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 34 / 1
Vectores autoregresivos estructurales (SVAR)
SVAR: modelo A
Impone restricciones sobre las relaciones contemporaneas de las variables.
Amat <- diag(k)
Amat[[Link](Amat, diag = FALSE)] <- NA
Amat
## [,1] [,2] [,3] [,4]
## [1,] 1 0 0 0
## [2,] NA 1 0 0
## [3,] NA NA 1 0
## [4,] NA NA NA 1
SVAR(modelVAR, estmethod = "direct", Amat=Amat)
##
## SVAR Estimation Results:
## ========================
##
##
## Estimated A matrix:
## DAX SMI CAC FTSE
## DAX 1.0000 0.0000 0.0000 0
## SMI -0.6205 1.0000 0.0000 0
##Ramírez
Nerys CACMordán
-0.9986
(Universidad0.1908 1.0000
Autónoma de 0 Temporales en R
Santo Domingo)Series January 12, 2020 35 / 1
Vectores autoregresivos estructurales (SVAR)
SVAR: modelo B
Impone restricciones sobre las relaciones contemporaneas de las variables.
Bmat <- diag(k)
Bmat[[Link](Bmat, diag = FALSE)] <- NA
SVAR(modelVAR, estmethod = "direct", Bmat=Bmat)
##
## SVAR Estimation Results:
## ========================
##
##
## Estimated B matrix:
## DAX SMI CAC FTSE
## DAX 1.0000 0.0000 0.0000 0
## SMI 0.6492 1.0000 0.0000 0
## CAC 0.8051 0.1686 1.0000 0
## FTSE 0.4588 0.2233 0.2004 1
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 36 / 1
Vectores autoregresivos estructurales (SVAR)
Restricciones de largo plazo
Bmat1 <- diag(k)
diag(Bmat1) <- NA
Bmat1[4,4] <-1
ModelSVAR <- SVAR(modelVAR, Bmat=Bmat1, Amat=Amat)
ModelSVAR
##
## SVAR Estimation Results:
## ========================
##
##
## Estimated A matrix:
## DAX SMI CAC FTSE
## DAX 1.0000 0.0000 0.0000 0
## SMI -0.6351 1.0000 0.0000 0
## CAC -0.6329 -0.2368 1.0000 0
## FTSE -0.1924 -0.1686 -0.2463 1
##
## Estimated B matrix:
## DAX SMI CAC FTSE
## DAX 0.01031 0.000000 0.000000 0
## SMI 0.00000 0.006548 0.000000 0
## CAC 0.00000 0.000000 0.007317 0
##Ramírez
Nerys FTSE 0.00000
Mordán 0.000000
(Universidad Autónoma de0.000000
Santo Domingo)Series1Temporales en R January 12, 2020 37 / 1
Referencias
Section 4
Referencias
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 38 / 1
Referencias
Referencias
Londoño, Wbaldo. (2005). Modelos de ecuaciones simultaneas.
[Link]. Plotting Time Series Statistics with ggplot2 and ggfortify.
Zivot, E. (2000). Notes on Structural VAR Modeling.
Nerys Ramírez Mordán (Universidad Autónoma de Santo Domingo)Series Temporales en R January 12, 2020 39 / 1