VAR Estructural (SVAR) en Rstudio

Los Modelos VAR estructural(SVAR) son una variación de los VAR Reducidos. Se puede usar un modelo SVAR para identificar choques y rastrearlos mediante la imposición de restricciones en las matrices A y B. Dependiendo se imponemos restricciones en las matriz A o B llamaremos al modelo SVAR-A o SVAR –B.

En este tutorial veremos como aplicar este tipo de modelos econométricos en Rstudio

CÓDIGO R DEL VIDEO

#SVAR: A-model



#install.packages("quantmod")
library(quantmod)
#install.packages("tseries")
library(tseries)
#install.packages("fImport")
library(fImport)

#♠Paquetes necesarios

install.packages("dse")
library ( dse) 
install.packages("vars")
library ( vars ) 


#PASOS A SEGUIR


#1. Establecer el lag polinomial A(L)

#2. Fijamos la  matriz identidad

#3 creamos un modelo VAR 2 con ARMA y los datos anteriores

#4 simulanos "x" valores con el modelo


#5 SACAMOS LAS SERIES GENERADAS Y HACEMOS EL MODELO CON A INCOGNITA

#6 ## Estimacion modelo SVAR-A  






#1. Establecer el lag polinomial A(L)

Apoly <- array (c(1.0 , -0.5, 0.3 , 0.8 , 
                   0.2 , 0.1 , -0.7, -0.2, 
                   0.7 , 1, 0.5 , -0.3) , 
                 c (3 , 2, 2) )

Apoly

#2.Fijamos la  matriz identidad

B <- diag(2)
B


#3 creamos un modelo VAR 2 con ARMA y los datos anteriores

svarA <- ARMA(A = Apoly , B = B)
svarA

#4 simulanos "x" valores con el modelo

svarsim <- simulate ( svarA , sampleT = 500, 
                      rng = list ( seed = c(123456) ) )
svarsim


##5. OBTENEMOS LA SERIES GENERADAS

svardat <- matrix ( svarsim$output , nrow = 500 , ncol = 2) 
colnames(svardat) <- c("y1","y2")

# GRAFICO DE LAS SIMULACIONES 

plot.ts(svardat)



## Estimación VAR CON LOS DATOS SIMULADOS para comprobación

varest <- VAR(svardat , p = 2 , type = "none")

?VAR


# Fijamos la matriz A para el modelo

Amat <- diag(2) 

Amat [ 2 , 1] <- NA 
Amat [ 1 , 2] <- NA


##6 Estimacion modelo SVAR-A  por minimización directa de max verosimi

args(SVAR)

svar.A <- SVAR( varest , estmethod = "direct" ,
                  Amat = Amat ,hessian = TRUE)


svar.A

#direct = minimización directa del log maximaverosimilitud negativo
#scorting= algoritmo propuesto por Amisano y Giannini(1997)

summary(svar.A)



# MODELO B

Apoly <- array (c(1.0 , -0.5, 0.3 , 0, 0.2 , 0.1 , 0, -0.2,
                  0.7 , 1, 0.5 , -0.3),
                c (3 , 2, 2))
Apoly


## fijamos la covarianza matriz identidad

B <- diag(2)

B[2,1]<- -0.8



#creamos un modelo VAR 2

svarB <- ARMA(A = Apoly , B = B)
svarB

## Simulaciones

svarsim <- simulate ( svarB , sampleT = 500,
                        rng = list ( seed = c(123456) ) ) 


svarsim


svardat <- matrix ( svarsim$output , nrow = 500 , ncol = 2) 
colnames(svardat) <- c("y1","y2")

plot.ts(svardat)


#EStimación s-VAR coon datos simulados

varest <- VAR(svardat , p = 2 ,type="none") 
varest


# Estimación de SVAR B  por algoritmo scoring

Bmat <- diag (2)
Bmat [ 2 , 1] <- NA

svar.B <- SVAR(varest, estmethod = "scoring" , 
                 Bmat =Bmat , max.iter = 200)
svar.B

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio