Posteriormente, una vez seleccionada la serie que vamos a utilizar (var_data), usamos el paquete VARS para tres cuestiones puntuales:
1. VARselect identifica el orden del VAR, es decir, la cantidad a retardos utilizar en el VAR.
2. VAR es la función que nos permite estimar el VAR.
3. Irf nos permite obtener los datos asociados a la función impulso respuesta.
data <- EuStockMarkets %>%
data.frame() %>%
mutate(across(is.numeric, ~((./dplyr::lag(.)-1)*100))) %>%
na.omit()
# var
var_data <- data.frame(x=EuStockMarkets[,"DAX"],y=EuStockMarkets[,"FTSE"])
plag <- VARselect(var_data, lag.max = 8, type = "both")$selection[1]
p1ct <- VAR(var_data, p = plag)
irf1 <- irf(p1ct, impulse = "x", response = "y",
n.ahead = ifr_lag, boot = TRUE,
cumulative = F, ortho = TRUE, ci = 0.95)
plot(irf1)
Adicionalmente, podemos extraer los coeficientes y los límites
de confianzas calculados para obtener las IFR
estimadas en el paso anterior. Note que este se guarda en un marco de datos (data frame) que permitiría en lo adelante
graficar nuestra función atendiendo los criterios de estéticas que prefiramos y
usando ggplot2 del tidyverse.
data_ifr <- data.frame(lagifr=1:(ifr_lag+1), irf1$irf, irf1$Lower, irf1$Upper)
names(data_ifr) <- c("retardos","ifr","li","ls")
head(data_ifr)
retardos ifr li ls
1 1 20.63704 19.08058 22.93661
2 2 22.23282 19.40226 24.77678
3 3 22.47799 19.47766 25.11293
4 4 22.49421 19.39938 25.11469
5 5 22.47920 19.23570 25.06734
6 6 22.45973 19.07158 25.02734
Debajo se colocan tres ejemplos de ifr usando ggplot2. Note que en estos ejemplos se encuentra comentada la línea de intercepto en el 0. Esto para recortar el eje de las x que estamos usando, en sus ejemplos particulares pueden des comentar esta línea del comando borrando el símbolo de #.
#Opcion 2
ggplot(aes(x = retardos, y = ifr)) +
geom_line(size=1)+
geom_line(aes(x = retardos, y = li),linetype=4) +
geom_line(aes(x = retardos, y = ls),linetype=4)+
theme_minimal() +
#geom_hline(yintercept=0) +
theme(legend.position = "bottom",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank())
ggplot(aes(x = retardos, y = ifr)) +
geom_line(size=1, color="#21618C")+
geom_ribbon(aes(x = retardos, ymin = li, ymax = ls), col = 'grey',
fill = 'grey', alpha = 0.3, linetype=4) +
theme_minimal() +
#geom_hline(yintercept=0) +
theme(legend.position = "bottom",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank()) +
#scale_y_continuous(expand = c(0, 0), breaks = seq(min(data_ifr$li), max(data_ifr$ls, 2)))+
scale_x_continuous(expand = c(0, 0), breaks = seq(0, ifr_lag, 2))
data_ifr %>%
ggplot(aes(x = retardos, y = ifr, ymin = li, ymax = ls)) +
geom_line(size=1, color="#21618C")+
geom_ribbon(aes(x = retardos), col = 'grey',
fill = 'grey', alpha = 0.3, linetype=4) +
# geom_hline(yintercept = 0, color="red") +
geom_ribbon(fill="grey", alpha=0.2) +
theme_light() +
xlab("") +
theme(plot.title = element_text(size = 11, hjust=0.5),
axis.title.y = element_text(size=11))