weird impulse response

Questions and discussions on Vector Autoregressions
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

weird impulse response

Unread post by indrani_5 »

I am working on BQ factorization for a bivariate model. The number of lags used in the VAR is 2 as suggested by the lag selection procedure. I am getting weird impulses responses. Can anyone explain why? The rats file and data are attached.
Attachments
thailand_data.xls
data
(29.5 KiB) Downloaded 690 times
turkey.RPF
rats file
(2.69 KiB) Downloaded 856 times
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

You're overdoing the number of IRF steps given the amount of data (40 observations) you have. If you cut it off at 16, everything looks reasonable. You can also switch to CENTER=MEDIAN, which substantially reduces the effect of a few wild draws.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

Thanks. But I did not choose the number of steps or the option of center. Where can I change them please?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

On the two procedure calls: @BQDODRAWS sets the number of steps and @MCGRAPHIRF determines what gets graphed.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

I am looking at the accumulated impulse responses to two shocks. However, although the impulse shapes look reasonable, what perplexes me is the vertical axis. The numbers look quite unnatural. Can anyone explain why or I am just overreacting.
Attachments
bosnia.xls
(29.5 KiB) Downloaded 670 times
turkey.RPF
(2.75 KiB) Downloaded 851 times
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

By default, @BQDODRAWS accumulates the first series (the first series is supposed to be differences of an I(1) series, that's how you get the long-run zero restriction). From the description of @BQDODRAWS:

@BQDODRAWS generates a set of Monte Carlo draws for a 2-variable Blanchard-Quah structural VAR. This identifies the second shock as having no long-run effect on the first variable (which should be put into the VAR in differenced form). In the original BQ paper, this second shock would be the "demand" shock, while the unconstrained first shock is "supply".

The options are the same as for @MCVARDoDraws, except that the default for the ACCUMULATE option is ||1||; the responses of the first variable are undifferenced.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

Even if the responses of first variable is undifferenced, the response of a logged variable cannot be in 100's
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

Update your MCGRAPHIRF procedure. (Help-Update Procedures menu item). The ACCUMULATE option was fixed a while back (not that you want to do it with this model anyway).
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

I realise that BQDoDraws also have a accum option which is set at ||1||. Do I the need to check the accum option in mcgraphirf and set it at ||1|| too?

Also if I want to report standardized responses (impulse responses of each variable divided by SE for that variable's residual), how do I achieve it?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

indrani_5 wrote:I realise that BQDoDraws also have a accum option which is set at ||1||. Do I the need to check the accum option in mcgraphirf and set it at ||1||?
No. That would accumulate the accumulated responses.
indrani_5 wrote: Also if I want to report standardized responses (impulse responses of each variable divided by SE for that variable's residual), how do I achieve it?
Use @MCPROCESSIRF rather than @MCGRAPHIRF and rescale the outputs before graphing.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

Is this the right way to write the mcprocessirf command?

@MCProcessIRF(model=bqmodel,center=median,percentile=||.16,.84||,lower=lower1,upper=upper,irf=irf1)
This is not producing any output though.
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

That's the whole point. @MCGRAPHIRF does the graphs if you want standard graphs. You want to do something non-standard (and rescaling to standard errors is non-standard) so @MCPROCESSIRF does the work of calculating the percentiles for the impulse response draws, the upper and lower bounds and you have to adjust them (by rescaling) and graph them the way you want. IRF's are linear, so it doesn't matter whether you scale then compute percentiles or compute percentiles then scale.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

No my question is how do i get the output from mcprocessirf so that I can scale them accordingly or are you suggesting I make changes in the source code?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: weird impulse response

Unread post by TomDoan »

You already have the "output"---it's in (as you've written it) lower1, upper and irf1 (upper=upper rather than upper1 may be a typo). IRF1(i,j) is the (center) response of series i to shock j. LOWER1(i,j) and UPPER(i,j) are the same for the lower and upper bounds. Apparently, you want to rescale IRF1(i,j) by something that's specific to variable i. That seems like a bad idea since it breaks the linear relationship between the shock and the responses. But if that's what you want, that's what you need to do---make sure you multiply (divide) all elements of IRF(i,j), LOWER(i,j) and UPPER(i,j) for a given i, j combination by the same number.
indrani_5
Posts: 50
Joined: Tue Apr 12, 2016 10:09 pm

Re: weird impulse response

Unread post by indrani_5 »

But when I typed

print irf1(1,2)

it did not produce anything in the output window. How can i create an output table so that I can see it and work on it further (rescaling)
Post Reply