VAR en R
VAR en R
macroeconómica
Clase 1. Vectores Autotegresivos (VAR)
22 de March de 2024
2 Modelos VAR
5 Análisis estructural
6 Referencias
ˆ
yt = β1 ŷt−1 + β2 Eŷt+1 − β3^it + ηtdemand
^
yt + ηtsupply
πt = α1 πt−1 + (1 − α1 )Eπt+1 + α2^
1000
800
rem
yt+h = ϕ0 + ϕ1 yt
yt+h = ϕ0 + ϕ1 yt + β1 xt
15
10
−5
−10
2000 2005 2010
Section 1
{yt : t = 1, 2, 3, ...T }
T
1 X
E[yt ] = yt
T t=1
T −k
1 X
γ̂k = (yt − E[yt ])(yt+k − E[yt ]) = cov(yt , yt+k )
T t=1
Ej. Al ver una serie temporal se visualiza una única trayectoria observada de un proceso
estocástico mayor. Por tanto, la distribución de probabilidad puede o no cambiar en el
tiempo.
120
100
d
80
60
0 100 200 300 400 500
Ej. El análisis exploratorio permite identificar dinámicas de una serie temporal -tendencias,
volatilidad, estacionariedad, . . . -, aunque, son los test formales, los determinates para la
toma de decisiones.
1000
750
rem
500
250
σx2
σxy σxz
Σ = σyx σy2 σyz
σzx σzy σz2
n
1X
cov(x , y ) = (xi − x̄ )(yi − ȳ )
n i=1
## Time Series:
## Start = c(1991, 130)
## End = c(1991, 131)
## Frequency = 260
## DAX SMI CAC FTSE
## 1991.496 1628.75 1678.1 1772.8 2443.6
## 1991.500 1613.63 1688.5 1750.5 2460.2
x<-EuStockMarkets[,"DAX"]
y<-EuStockMarkets[,"SMI"]
cor(x,y)
## [1] 0.9911539
dlnx<-diff(log(x))
dlny<-diff(log(y))
cor(dlnx,dlny)
## [1] 0.7031219
y t = x t β + ϵt ϵt ∼ N(0, Σ2 )
yt = yt−1 ϕ + xt β + ϵt
Estimadores
S = ϵ′ ϵ = (y − βx )′ (y − βx )
n
1 (xi −βx )2
e−
Y
L(µ, σ 2 ; x1 , x2 , . . . , xn ) = √ 2σ 2
i=1 2πσ 2
(1 − ϕ1 L − ... − ϕp Lp )yt = ϵt
ϕp (L)yt = ϵt
Orden de integración
0.3
dln_rem
0.0
−0.3
−0.6
2000 2010 2020
Nivel [Link]
(1) (2)
ind_prod_usa 27.154∗∗∗
(1.784)
d_index_usa 2.141∗∗∗
(0.783)
Constant −2,246.147∗∗∗ 0.666
(172.261) (0.904)
Observations 312 311
R2 0.428 0.024
Adjusted R2 0.426 0.020
Residual Std. Error 173.934 15.919
F Statistic 231.717∗∗∗ 7.473∗∗∗
Note: ∗ p<0.1; ∗∗ p<0.05; ∗∗∗ p<0.01
Section 2
Modelos VAR
Modelos VAR
Modelo VAR
Yt = A0 + A1 Yt−p + ut
Donde:
Yt ∼ I(0) es una matriz de kxT variables estacionarias, consideradas a priori
como endógenas;
p indica el orden de retardos a incluir;
A1 es una matriz (kxk) de coeficientes parciales que acompañan el vector de
variables endógenas rezagadas; y,
E (ut ) = 0;E (ut ut′ ) = Σu , pudiendo Σu no ser diagonal.
Yt = A0 + A1 Yt−p + ut
y1t α01 α11 α12 y1,t−1 u1t
= + +
y2t α02 α21 α22 y2,t−1 u2t
En términos de ecuaciones:
Yt = A0 + A1 Yt−p + ut
VAR recursivo (un caso particular del SVAR, donde se ordena de la más
exógena a la menos. No estimo directamente el SVAR porque hay problemas
de identificación):
BYt = A0 + A1 Yt−p + ut
a11 0 0
B = a21
a22 0
a31 a32 a33
VAR estructural:
BYt = A0 + A1 Yt−p + ut
Clase 1 22 de March de 2024 25 / 67
Estimación, especificación y uso
Section 3
n2 p + n
AIC = ln |Ω| + 2
T
n2 p + n ln (T )
BIC = ln |Ω| + 2
T
Estimación
n
1 (xi −βx )2
e−
Y
L(µ, σ 2 ; x1 , x2 , . . . , xn ) = √ 2σ 2
i=1 2πσ 2
library(readxl)
library(tidyverse)
## # A tibble: 5 x 4
## t gdp_r p i
## <dttm> <dbl> <dbl> <dbl>
## 1 1996-03-01 [Link] 58.1 17.3 15.5
## 2 1996-06-01 [Link] 55.3 17.4 14.8
## 3 1996-09-01 [Link] 53.2 17.6 15.0
## 4 1996-12-01 [Link] 56.7 17.8 13.5
## 5 1997-03-01 [Link] 61.1 18.5 13.1
gdp_r i p
50 125
200
40 100
150 30 75
20 50
100
10 25
50
2000 2010 2020 2000 2010 2020 2000 2010 2020
dlnx = ln xt − ln xt−1
h0 del test es que la serie presenta raíz unitaria. Usamos series donde
rechacemos h0 .
library(tseries)
## [1] 0.6807773
#diferencia logaritmica
inf <- diff(log(pib))
[Link](inf)$[Link]
## [1] 0.01
Obtener el valor estacionario como el valor de la serie en torno a una tendencia de largo
plazo.
x̂t = xt − x̄t
library(mFilter)
library(x12)
0.05
0.00
−0.05
−0.10
2000 2010 2020
Podemos vectorizar operaciones para realizar el test sobre múltiples series de forma
simultánea. Posterior se usa la función sapply para recuperar los [Link] asociado al test de
cada serie.
## gdp_r p i
## 0.68077727 0.45281833 0.08820263
Preparar data.
# Transformaciones
ln_ipc <- log(data_ej2[,"p"])*100
pi <- ln_ipc-dplyr::lag(ln_ipc,4)
# Data frame
data <- [Link](gap_gdp = [Link](ciclo_adj),
p = pi$p,
r = data_ej2[,"i"]/4)
gap_gdp i p
0.05 4
10
0.00 3
5
−0.05 2
0
−0.10 1
201020152020 201020152020 201020152020
## 1 2 3 4
## AIC(n) -10.541125 -11.56495 -12.064525 -12.515513
## HQ(n) -10.269534 -11.17696 -11.560142 -11.894734
## SC(n) -9.855688 -10.58575 -10.791572 -10.948802
## FPE(n) 0.000026 0.00001 0.000006 0.000004
library(stargazer)
eq <- [Link]$varresult
# stargazer(eq, type="latex", [Link]=FALSE)
Table 2:
Dependent variable:
(1) (2) (3)
gap_gdp.l1 2.426∗∗∗ 37.951 −3.878
(0.107) (26.745) (3.559)
p.l1 −0.0005 1.091∗∗∗ 0.080∗∗∗
(0.0005) (0.124) (0.017)
...
Observations 68 68 68
R2 0.965 0.815 0.908
Adjusted R2 0.957 0.775 0.888
Residual Std. Error (df = 55) 0.005 1.369 0.182
F Statistic (df = 12; 55) 126.336∗∗∗ 20.190∗∗∗ 45.402∗∗∗
Note: ∗ p<0.1; ∗∗ p<0.05; ∗∗∗ p<0.01
(In − A1 Lp ) Yt = A0 + ut
−1 −1
Yt = (In − A1 Lp ) A0 + (In − A1 Lp ) ut
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object [Link]
## Chi-squared = 87.222, df = 72, p-value = 0.1069
##
## ARCH (multivariate)
##
## data: Residuals of VAR object [Link]
## Chi-squared = 336, df = 432, p-value = 0.9998
# plot(forecasts)
forecasts$fcst$p
0 20 40 60 80
Forecast of series p
10
5
0
0 20 40 60 80
Forecast of series i
3.0
2.0
1.0
0 20 40 60 80
Section 4
Modelo estructural
Modelo estructural
Yt = B −1 Γ0 + B −1 Γ1 Yt−1 + B −1 εt
Yt = A0 + A1 Yt−p + ut
′ ′
; A0 = B −1 Γ0 , A1 = B −1 Γ1 y ut = B −1 εt .
Siendo Yt = y1,t , y2,t
Modelo estructural
yt = (B −1 Γ0 ) + (B −1 Γ1 )yt−1 + B −1 ϵt
Modelo estructural
1 −b 11 yt b b b13 yt−1 ε
= 10 + 12 + yt (3)
−b 21 1 zt b20 b22 b23 zt−1 εzt
VAR estructural
Premultiplicamos por B −1 ,
yt b b b13 yt−1 ε
= B −1 10 + B −1 12 + B −1 yt
zt b20 b22 b23 zt−1 εzt
siendo:
1 −b 11
B= (4)
−b 21 1
−1 1 1 b11
B = (5)
1 − b11 b21 b21 1
a b
La inversa de una matriz M = , tal que MM −1 = I, es:
c d
h i
M −1 = |M|1
adj(A′ )
−1
h
1
i a c
M = ad−cd adj
b d
h i d −b
M −1 = ad−cd
1
−c a
Observe que necesitamos |M| = ̸ 0 y recuerde que el adjunto de una matriz es
una matriz de los determinantes que obtenemos al eliminar de la matriz
original la fila y columna expresada en la posición determinada.
yt = (B −1 Γ0 ) + (B −1 Γ1 )yt−1 + B −1 ϵt (6)
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).
yt = (B −1 Γ0 ) + (B −1 Γ1 )yt−1 + B −1 ϵt (7)
Ahora, los choques estructurales se definen por (ϵt = But . Donde B es una
matriz cuadrada, triangular inferior con (k 2 − k)/2.
2
σy σzy
donde: εt = But ∼ iid(0, BΣu B ′ ); Σ = .
σyz σz2
Estimación recursiva
Descomposición de Cholesky
σy2
2
σzy a 0 a b a ab
Σ= = =
σyz σz2 b c 0 c ba b2 + c 2
a: σy2 = a2 ; a = σy
σ
b: σyz = ab = σy2 b; b = σyzy
σyz
c: σz2 = b 2 + c 2 ; c = σz − σy
##
## Estimated B Matrix (unique decomposition of the covariance matrix):
## [,1] [,2] [,3]
## gap_gdp 0.005482301 0.00000000 0.0000000
## p -0.207022569 1.35282018 0.0000000
## i 0.012953629 0.03217047 0.1788011
Section 5
Análisis estructural
Yt = A0 + A1 Yt−1 + ut
...
n−1
X
Yt = Ik + A1 + A21 + ... + An−1 Ai1 ut−i + An1 Yt−n
1 A 0 +
i=0
∞
X
Yt = u + Ai1 ut−i
i=0
[Link]$B
[Link]$Lambda
k <- ncol(data_svarS)
restMat <- matrix(rep(NA, k*k), ncol = k)
restMat[[Link](restMat)] <- 0
restMat
Impulso respuesta
ifr_lag <- 24
[Link] <- irf([Link], impulse = "i", response = "p",
[Link] = ifr_lag, boot = TRUE, , cumulative = FALSE)
0.5
0.0
ifr
−0.5
−1.0
0 5 10 15 20 25
retardos
Section 6
Referencias
Referencias
Lange, A.; Dalheimer, B.; Herwartz, H.; Maxand, S.; Riebl, H. (2023). Data-Driven
Identification of SVAR Models. Package ‘svars’. R Cran.
Londoño, Wbaldo. (2005). Modelos de ecuaciones simultaneas.
Lutkepohl, H. (2005). New introduction to multiple time series analysis. Berlin:
Springer-Verlag.
Hamilton, J. D. (1994). Time series analysis. Princeton University Press, Princeton.
Novales, A. (2016). Modelos vectoriales autoregresivos (VAR). Universidad Complutense
de Madrid.
[Link]. Plotting Time Series Statistics with ggplot2 and ggfortify.
Stock, J. H., and M. W. Watson. 2015. Introduction to Econometrics, Third Update,
Global Edition. Pearson Education Limited.
Zivot, E. (2000). Notes on Structural VAR Modeling.