Impulse Response Function - Negative Shocks on R

3

1

I have two questions on how to produce impulse responses using R

(1) Impulse responses to a negative shock in the independent variable (money supply)

(2) Impulse responses at 2 standard deviations

The code I used to generate the impulse responses to a positive shock at 1 standard deviation is the following:

m1 <- read.csv("m1.csv", header=T)

m1

varm1 <- VAR(m1, p=8, type="cons")

irfm1 <- irf(varm1, impulse="m1", response= c("gdp"), boot = FALSE)

plot(irfm1)

irfm1

hans periag

Posted 2016-03-31T02:27:58.373

Reputation: 33

Answers

3

Here is a simple example that should work:

library(vars)
data("Canada")
var.2c=VAR(Canada,p=2,type="const")
# 1 SD impulse reponse function
irf.rw.e=irf(var.2c,impulse="rw",response=c("e"))
# gamma is the number of standard deviations for the irf
gamma=-0.25
irf.rw.e_gamma = irf.rw.e
n=length(irf.rw.e_gamma$irf$rw)
for(i in 1:n){
    irf.rw.e_gamma$irf$rw[i]   = irf.rw.e_gamma$irf$rw[i]*gamma
    irf.rw.e_gamma$Lower$rw[i] = irf.rw.e_gamma$Lower$rw[i]*gamma
    irf.rw.e_gamma$Upper$rw[i] = irf.rw.e_gamma$Upper$rw[i]*gamma
} 
plot(irf.rw.e)
plot(irf.rw.e_gamma)

Source

BKay

Posted 2016-03-31T02:27:58.373

Reputation: 146

in the example above (original question) it is for a positive standard deviation shock. Any idea on how to code a negative 0.25% shock to the policy indicator? – Rollo99 – 2020-02-28T10:27:27.710

1I tweaked the code so that it could make an IRF for an arbitrary size and sign inpulse. The object irf.rw.e holds the basic 1 std dev positive irf, and irf.rw.e_gamma holds the irf for the a shock of gamma standard deviations. So if you want it to be -0.25, set gamma=-0.25. I also patched an issue where the confidence intervals may not be correct. This matches the confidence intervals to size of the shock (bigger shocks, bigger bounds). – BKay – 2020-02-28T11:44:17.710

thanks so much! Super super helpful, can't give you more points on the solution as I already gave you all on the previous one. Thanks a lot again – Rollo99 – 2020-02-28T11:45:45.820

do you know how to do the same but using externalinstrument? I can post a question. I have already posted one on stackoverflow here

– Rollo99 – 2020-03-12T12:33:24.083