How one SD shock can be converted into percentage shock

Questions and discussions on Vector Autoregressions
bhupal
Posts: 3
Joined: Mon Jan 05, 2009 2:18 pm

How one SD shock can be converted into percentage shock

Unread post by bhupal »

Hi,
I have computed impulse response functions from a SAVR model. The impulse responses are to one standard deviation shock to error terms. The variables: IIP, Oil price, CPI, exchange rate are in log levels. Interest rate are not in log. All variables are in level.

Ques 1: I give one SD shock to LogIIP. How can I compute one SD shock to LogIIP is equivalent to how much % change in logIIP? I mean how can I compute that one SD shock to log IIP is 1%/2%/5% shock to LogIIP?

Second, regarding the the reposes of rest of the variables. How the response of log CPI can be interpreted in percentage terms in response of one SD shock to logIIP. As of now I get impulse response of log CPI of 0.002 in the first 4 quarters in response to a one SD shock to logIIP. How can this impulse be interpreted in terms of percentage variation in Log CPI?

I would be highly grateful for clarifying on the above issues.

Best,
Bhupal
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

The impulse responses in a VAR are linear in the sizes of the shocks. The one SD shocks are used to put the whole set of responses into a proper context. But if you're mainly interested in a specific shock, you can re-scale it however you want.

Code: Select all

IMPULSE(MODEL=your model,SHOCKS=%UNITV(model size,shock variable),STEPS=number of steps,PRINT)
will do unit shocks to "shock variable". If the shock variable (X) and the response variable of interest (Y) are put into the VAR in logs, you would interpret a response of 1.5 as 1.5% in the original variable; that is, a 1% shock in X produces 1.5% response in Y. Note that these are responses in the original variables, not the logs. In your description, you seem to be confusing percentage change in X with percentage change in log X.
bhupal
Posts: 3
Joined: Mon Jan 05, 2009 2:18 pm

Re: How one SD shock can be converted into percentage shock

Unread post by bhupal »

Hi Tom,
Thanks so much for your reply.
I may sound foolish but Just to conrifm again. When both x and y are in log levels, One SD shock to x (variable shocked) and impulses of the variable of interest y would be interpreted as: 1% change in x causing how much % change in y.

Thanks in advance.
Bhupal
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

bhupal wrote:Hi Tom,
Thanks so much for your reply.
I may sound foolish but Just to conrifm again. When both x and y are in log levels, One SD shock to x (variable shocked) and impulses of the variable of interest y would be interpreted as: 1% change in x causing how much % change in y.

Thanks in advance.
Bhupal
No, because a one SD shock to x will almost always have a value different from a standardized 1 (or .01). If you use SD shocks, then you would have to rescale the responses as well to get the %change to %change interpretation. That is, if the SD is .04 and a response is .09, you can interpret that as a 1% shock in x producing a 2.25% (=.09/.04) response in y.
N. BEN CHEIKH
Posts: 3
Joined: Thu Jun 19, 2008 8:40 am

Re: How one SD shock can be converted into percentage shock

Unread post by N. BEN CHEIKH »

Hi,
Can you tell us how to use
****************************************************************************************************************
IMPULSE(MODEL=your model,SHOCKS=%UNITV(model size,shock variable),STEPS=number of steps,PRINT)
****************************************************************************************************************
in the montevar.src, in order to get SD shock converted into one percentage.
Thank you very much
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

Replace the IMPULSE instruction with

Code: Select all

   impulse(noprint,model=model,factor=%identity(nvar),results=impulses,steps=steps)
Everything else will be the same. (This will do unit shocks to all variables).
TWG
Posts: 10
Joined: Tue Jun 29, 2010 1:19 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TWG »

Tom, one question. If I use factor=%identity(nvar) inside a bootstrap o MH, I have the impression that the impulse response I get from the Cholesky, not the one that come from cvmodel, is it?. Is there other way to standardize all shocks to unit?.
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

factor=%identity(nvar) means unit shocks to each variable's one-step ahead forecast, without regard to the covariance matrix or any structural model. If you have any form of structural model (the Cholesky being a special case with a recursive structure), you typically can come up with rescaled shocks which have unit impacts on particular variables. If F is a factor of sigma, then the impact of shock j on variable i is F(i,j), so a shock with the same shape but scaled to make a unit impact on i is %xcol(F,j)/F(i,j). Since the scale of the response is part of the data evidence (through the observed sigma), it's not clear that that's a good idea, but if you think that the shape is what really matters, that's how you would go about standardizing the responses.
Shenelle
Posts: 6
Joined: Mon Jul 19, 2010 4:12 pm

Re: How one SD shock can be converted into percentage shock

Unread post by Shenelle »

In the following code,
would impulse responses be interpreted as std deviations or percentages?

Code: Select all

* MONTESUR.RPF
* Uses Gibbs sampling to analyze the impulse response functions for a
* near-VAR.
*
compute lags=2			   ;*Number of lags
compute steps=20		   ;*Number of response steps
compute nburn =5000		;*Burn-in draws
compute ndraws=25000		;*Keeper draws
*

compute nvar=%modelsize(shocks)

@SURGibbsSetup shocks
sur(model=shocks)
compute ntotal=%nreg
compute bdraw=%beta
compute wishdof=%nobs

declare vect[rect] %%responses(ndraws)
*
infobox(action=define,progress,lower=-nburn,upper=ndraws) $
    "Gibbs Sampling"
do draw=-nburn,ndraws

 compute covmat=SURGibbsSigma(bdraw)

   *
   compute hdraw=%ranwishartf(%decomp(inv(covmat)),wishdof)

   @SURGibbsDataInfo hdraw hdata hbdata

  compute hpost=hdata
   compute vpost=inv(hpost)
   compute bpost=vpost*hbdata
   compute bdraw=bpost+%ranmvnormal(%decomp(vpost))
   infobox(current=draw)
   if draw<=0
      next

   compute %modelsetcoeffs(shocks,bdraw)
   impulse(noprint,model=shocks,factor=%decomp(hdraw),results=impulses,steps=steps)

 dim %%responses(draw)(nvar*nvar,steps)
   ewise %%responses(draw)(i,j)=ix=%vec(%xt(impulses,j)),ix(i)
end do draw
infobox(action=remove)
source mcgraphirf
@MCGraphIRF(model=shocks,center=median,page=one,percentile=||.05,.95||,HEADER="IMPULSE RESPONSES - SHARE PRICES INCLUDED")
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

The shocks are one SD Cholesky factor shocks. The responses are in the units of the dependent variables.
guillaume
Posts: 7
Joined: Wed Jun 17, 2009 9:21 am

Re: How one SD shock can be converted into percentage shock

Unread post by guillaume »

Hi
Is it possible to impulse directly a negative shock withe IMPULSE instruction. I would like to simulate an expansionnary monetary policy instead of a restrictive MP?
Thanks
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

guillaume wrote:Hi
Is it possible to impulse directly a negative shock withe IMPULSE instruction. I would like to simulate an expansionnary monetary policy instead of a restrictive MP?
Thanks
Of course. Either the SHOCKS option or the FACTOR option will take elements with any sign. After all, if FF'=sigma, then (-F)(-F)'=sigma as well, plus, you can flip signs of any combination of columns in a factor matrix and still have a factor.
ivory4
Posts: 144
Joined: Mon Aug 24, 2009 12:16 pm

Re: How one SD shock can be converted into percentage shock

Unread post by ivory4 »

real exchange rate should be kept in log levels or log difference?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: How one SD shock can be converted into percentage shock

Unread post by TomDoan »

ivory4 wrote:real exchange rate should be kept in log levels or log difference?
Usually log levels.
HypatiaCU
Posts: 12
Joined: Mon Nov 12, 2012 6:02 pm

Re: How one SD shock can be converted into percentage shock

Unread post by HypatiaCU »

Hi,

Can you tell us how to change one SD shock to 1% shock in a Cholesky IRF? For choleksy irf, I use
impulse(model=VAR1, result=impuless,decomp=%decomp(%sigma),steps=20)
. Then I will get one SD shock cholesky irf. Depending on the order of the VAR, a shock on the first variable will affect the other variables, while a shock on the last variable will only affect itself in the first period. However, I would like to get 1% shock irf. Following the previous instruction, if I add shocks=%unitv(3,3) or factor=%identity(nvar), the shock will only be one variable 1% shock with the other variables impulse response=0 at the first period (a shock on the first variable will only affect itself and not affect the other variables), which is not cholesky irf. How could I fix it?

Thanks,
Hypatia
Post Reply