-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsvarex.R
executable file
·52 lines (40 loc) · 1.28 KB
/
svarex.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
library(urca)
library(vars)
library(mFilter)
library(tseries)
library(TSstudio)
library(forecast)
library(tidyverse)
macro <- read.csv("~/Documents/Rprojects/svardataex.csv")
head(macro)
y <- ts(macro$output_gap, start = c(1970,1,1), frequency = 4)
pi <- ts(macro$core_cpi, start = c(1970,1,1), frequency = 4)
r <- ts(macro$fed_funds_rate, start = c(1970,1,1), frequency = 4)
plot(y, main = "Output Gap", xlab = "Time", ylab = "Output Gap")
plot(pi, main = "Inflation Rate", xlab = "Time", ylab = "CPI")
plot(r, main = "Federal Funds Rate", xlab = "Time", ylab = "FFR")
amat <- diag(3)
amat
amat[2,1] <- NA
amat[3,1] <- NA
amat[3,2] <- NA
amat
svar1 <- cbind(y, pi, r)
colnames(svar1) <- c('OutputGap', 'CPI', 'FFR')
head(svar1)
lagselect <- VARselect(svar1, lag.max = 8, type = "both")
lagselect$selection
varmodel1 <- VAR(svar1, p = 5, season = NULL, exog = NULL, type = "const")
varmodel1
svarmodel1 <- SVAR(varmodel1, Amat = amat, Bmat = NULL, hessian = TRUE,
estmethod = c("scoring", "direct"))
svarmodel1
svarog <- irf(svarmodel1, impulse = "OutputGap", response = "OutputGap")
svarog
plot(svarog)
svarinf <- irf(svarmodel1, impulse = "OutputGap", response = "CPI")
svarinf
plot(svarinf)
svarffr <- irf(svarmodel1, impulse = "CPI", response = "FFR")
svarffr
plot(svarffr)