Page 1 of 1

Specific shock: Impulse Response Functions

Posted: Mon Dec 20, 2010 7:46 pm
by mj_sydney
Hi,
Say for instance I have a near-VAR estimated using Seemingly Unrelated Regressions, I group the 11 equations into a system called VAR11 and then I use a non-recursive factorisation of the covariance matrix.

The problem I have is that I want to get a specific shock of 0.25 to the interest rate variable. I am aware that I can simply take ALL the system variable responses and rescale them to make the first period std deviation shock of the interest rate into the size that i want it. for instance if i get a 0.50 interest rate standard deviation shock. dividing ALL system variable responses by 2 will rescale the shock and the system variable impulse responses. This is possible since it's a liner combination.

However, I want to be able to do this in RATS. So I tried changing the shock vector using the "impulse" instruction. but the output i get shows that ALL the first period responses change. Am I using it correctly? My understanding from the manual was that changing the shock vector would result in a specific shock to ONE variable?


impulse(model=var11,shock=||0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0||,results=responses,factor=fsvar,steps=20,windom="IRFs")

I get the following:

Entry LUSGDP LCOMP LC LINVST LG LEX LIM INFLYTM LM1 INT LRTWI
1 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.2500000 0.0000000
2 0 0 -0.0009482 0.0006517 -0.0004229 -0.0003984 0.0037476 0.0141736 -0.0002462 0.1751326 0.0062548

as you can see all the first period responses have changed! I want ONLY the INT (cashrate) shock to be 0.25 and others to react the usual way it would for a standard deviation shock of INT (0.287) which is:

Responses to Shock in INT
Entry LUSGDP LCOMP LC LINVST LG LEX LIM INFLYTM LM1 INT LRTWI
1 0.0000000 0.00000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0025720 0.2871684 0.0189749
2 0.0000000 0.00000000 -0.0004174 0.0006019 -0.0001925 0.0017265 0.0092522 -0.0166038 -0.0012682 0.2658186 0.0220225


Also, i tried to specify the coloumn which is shocked and that command does not seem to work. I get ALL shocks and ALL responses, where as I ONLY want the output to give me the INT Shock's impulse response. So I tried "column=10" and it still gives me ALL the output.

Any help would be most appreciated.

cheers

Mj

Re: Specific shock: Impulse Response Functions

Posted: Thu Dec 23, 2010 9:21 am
by moderator
The SHOCK option specifies the actual shock to each equation, so it is behaving exactly as expected.

If you instead want shocks to an orthogonalized innovation, but want to change the scales of one or more shocks, you would do that by modifying the factor matrix. For example, if you want to use a Cholesky factorization (the default behavior), you would need to use the %DECOMP() function to compute the Cholesky factorization, then modify it as desired (usually by scaling an entire column), and then use the FACTOR option on IMPULSE to use your modified Cholesky decomposition as the FACTOR matrix.

As for the output, IMPULSE is always going to give you the responses of all equations in the model. If you don't care about some of the responses, just ignore them--that is, only print out, graph, or do computations with the particular response(s) of interest.

Again, the default behavior when using the MODEL option is to use a Cholesky factorization, and compute all responses for shocks to each of the equations. The RESULTS option will give you a RECTANGULAR array of SERIES containing all the shock/response combinations.


If you use INPUT, SHOCKS, PATHS, or MATRIX to supply your own shocks, you will only get one set of responses, since you are only providing one set of shocks.

Regards,
Tom Maycock

Re: Specific shock: Impulse Response Functions

Posted: Thu Nov 17, 2011 8:24 am
by emdlf
Hi Tom,
I need a feedback on this topic. I need to get a specific shock of 0.25 to the interest rate variable, but the "shock" option of the IMPULSE function doesn't work for me because it gives simultaneous shocks to each variable. I need to get the specific shock and left free the others.
I'm using these options:
impulse(noprint,model=varmodel,decomp=AAsims,results=impulses) nvar nstep
How can I get it?

Thanks in advance.

Re: Specific shock: Impulse Response Functions

Posted: Thu Nov 17, 2011 1:16 pm
by TomDoan
emdlf wrote:Hi Tom,
I need a feedback on this topic. I need to get a specific shock of 0.25 to the interest rate variable, but the "shock" option of the IMPULSE function doesn't work for me because it gives simultaneous shocks to each variable. I need to get the specific shock and left free the others.
I'm using these options:
impulse(noprint,model=varmodel,decomp=AAsims,results=impulses) nvar nstep
How can I get it?

Thanks in advance.
I'm not sure what you mean by "left free the others". IMPULSE with the SHOCKS option is doing one set of responses to one specific set of shocks. Do you want a standard Cholesky factor shock, but scaled to make the own response of interest rates equal to .25? You would do that with

compute myshock=.25*%xcol(aasims,position of r in the VAR)/aasims(position of r in the VAR,position of r in the VAR)

then

impulse(noprint,model=varmodel,shock=myshock,...)

Re: Specific shock: Impulse Response Functions

Posted: Thu Nov 17, 2011 2:52 pm
by emdlf
Thanks for your answer.
I´m not using Cholesky decomposition but Sims'. Does it work the same or should I specify again "decomp=AAsims" option?

Re: Specific shock: Impulse Response Functions

Posted: Fri Nov 18, 2011 11:33 am
by TomDoan
It would be the same. You take the factor and rescale the shock of interest to have the impact that you want.