Shock in exogenous variables in a SVAR

Questions and discussions on Vector Autoregressions

Shock in exogenous variables in a SVAR

Postby torresgc » Tue Aug 09, 2011 10:47 am

Hello. I could help. How I can generate shocks of 1% in the exogenous variables in a SVAR program?
Thanks for any help! (e-mail address: torresgc@bccr.fi.cr)
torresgc
 
Posts: 1
Joined: Mon Aug 08, 2011 5:38 pm

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Tue Aug 09, 2011 1:25 pm

torresgc wrote:Hello. I could help. How I can generate shocks of 1% in the exogenous variables in a SVAR program?
Thanks for any help! (e-mail address: torresgc@bccr.fi.cr)


This may be a bit more than you need (it does MC integration for the response), but it shows the general idea. You create a placeholder equation which has the exogenous variable as its dependent variable, and shock that using the SHOCKS option on IMPULSE. To get 1%, you would use the option
shocks=.01*%unitv(%nvar+1,%nvar+1)

Code: Select all
*
* Monte Carlo integration with shock to "exogenous" variable
*
compute lags=4            ;*Number of lags
compute nstep=16         ;*Number of response steps
compute ndraws=10000      ;*Number of keeper draws
*
open data haversample.rat
cal(q) 1959
data(format=rats) 1959:1 2006:4 ftb3 gdph ih cbhm
*
set loggdp = log(gdph)
set loginv = log(ih)
set logc   = log(cbhm)
*
* T-Bill rate is treated as exogenous
*
system(model=varmodel)
variables loggdp loginv logc
lags 1 to lags
det constant ftb3{1 to 4}
end(system)
*
* Define placeholder equation to allow shock to T-bills.
*
equation(empty) rateeq ftb3
*
******************************************************************
estimate
compute nshocks=1
compute nvar   =%nvar
compute fxx    =%decomp(%xx)
compute fwish  =%decomp(inv(%nobs*%sigma))
compute wishdof=%nobs-%nreg
compute betaols=%modelgetcoeffs(varmodel)
*
declare vect[rect] %%responses(ndraws)
declare rect[series] impulses(nvar,nvar)

infobox(action=define,progress,lower=1,upper=ndraws) "Monte Carlo Integration"
do draw=1,ndraws
   *
   * On the odd values for <<draw>>, a draw is made from the inverse Wishart
   * distribution for the covariance matrix. This assumes use of the
   * Jeffrey's prior |S|^-(n+1)/2 where n is the number of equations in
   * the VAR. The posterior for S with that prior is inverse Wishart with
   * T-p d.f. (p = number of explanatory variables per equation) and
   * covariance matrix inv(T(S-hat)).
   *
   * Given the draw for S, a draw is made for the coefficients by adding
   * the mean from the least squares estimate to a draw from a
   * multivariate Normal with  (factor of) covariance matrix as the
   * Kroneker product of the factor of the draw for S and a factor of
   * the X'X^-1 from OLS.
   *
   * On even draws, the S is kept at the previous value, and the
   * coefficient draw is reflected through the mean.
   *
   if %clock(draw,2)==1 {
      compute sigmad  =%ranwisharti(fwish,wishdof)
      compute fsigma  =%decomp(sigmad)
      compute betau   =%ranmvkron(fsigma,fxx)
      compute betadraw=betaols+betau
   }
   else
      compute betadraw=betaols-betau
   *
   * Push the draw for the coefficient back into the model.
   *
   compute %modelsetcoeffs(varmodel,betadraw)
   *
   * Shock the combination of the VAR + the placeholder equation with a
   * unit shock to the placeholder.
   *
   impulse(noprint,model=varmodel+rateeq,shocks=%unitv(%nvar+1,%nvar+1),$
     result=impulses,steps=nstep)
   *
   * Save the impulse responses
   *
   dim %%responses(draw)(nvar*nshocks,nstep)
   ewise %%responses(draw)(i,j)=ix=%vec(%xt(impulses,j)),ix(i)
   infobox(current=draw)
end do draw
infobox(action=remove)
*
@mcgraphirf(model=varmodel,shocklabels=||"To Interest Rate"||)
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Tue Jul 17, 2012 5:00 am

Hi Everyone. I need more help with this code please. Is there a way to modify the code so that the impulse response functions graph only the response to the exogenous shocks? Thanks. Oz
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Wed Jul 18, 2012 11:19 am

That's what this does. The only shock analyzed is to the variable treated as exogenous.
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Wed Jul 18, 2012 5:29 pm

TomDoan wrote:That's what this does. The only shock analyzed is to the variable treated as exogenous.


TomDan thanks. However, I notice that the IFR of LOGC do not correspond to the estimates of the coefficients of FTB(?) They appear to be fine for other variables.
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Wed Jul 18, 2012 9:15 pm

Look fine to me. LOGC is the only equation that has a negative coefficient on lag one of FTB3. Beyond lag one, it's very hard to tell what will happen just by eyeballing the coefficients.
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Fri Jul 20, 2012 3:02 pm

Tom, thanks. Will have another look again.
Oz
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Mon Jul 30, 2012 5:00 pm

More query please: if I read the data into rats into a panel format and I introduce country dummies as exogenous variables. Can that be treated as a panel SVAR? If not is there a way to estimate panel SVAR in the context of exogenous shocks?
Thanks
oz
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Wed Aug 01, 2012 12:58 pm

In your panel SVAR, what's heterogeneous and what's homogeneous? What you're describing would seem to have only the intercepts being heterogeneous, which is a rather strong assumption, generally only appropriate if you have a limited amount of data per country. And if you have that, then the small-sample bias in the fixed effects estimator could be quite severe.
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Mon Sep 03, 2012 8:50 am

TomDoan wrote:That's what this does. The only shock analyzed is to the variable treated as exogenous.


Hi Tom,
Sorry to bother again: If I am right the coefficients obtained are the mean response? is there away to also obtain the cumulative response (let's say after 3 period) and their confidence band?
Thanks
Oz
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Tue Sep 04, 2012 1:51 am

Use the ACCUMULATE instruction. See, for instance, what the BQDODRAWS procedure does.
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby Ozmando » Tue Sep 04, 2012 3:13 am

TomDoan wrote:Use the ACCUMULATE instruction. See, for instance, what the BQDODRAWS procedure does.


Thanks Tom for prompt reply and guidance.
best wishes,
Oz
Ozmando
 
Posts: 8
Joined: Sun Jul 15, 2012 4:04 pm

Re: Shock in exogenous variables in a SVAR

Postby wfirew » Thu Oct 25, 2012 6:30 am

I am estimating a vector error correction model (vecm) and a shock to the exogenous variable as described above does not work. Any suggestion?
Best,
wfirew
 
Posts: 6
Joined: Thu Jun 21, 2012 8:16 am

Re: Shock in exogenous variables in a SVAR

Postby TomDoan » Thu Oct 25, 2012 10:17 am

wfirew wrote:I am estimating a vector error correction model (vecm) and a shock to the exogenous variable as described above does not work. Any suggestion?
Best,


Why not?
TomDoan
 
Posts: 2720
Joined: Wed Nov 01, 2006 5:36 pm

Re: Shock in exogenous variables in a SVAR

Postby wfirew » Thu Oct 25, 2012 12:58 pm

It works fine for VAR. Then, I have modified the code as follow for vecm (leaving the MC part). When I run it, the programs freezes prompting me to close the program.
Code: Select all
*
* Monte Carlo integration with shock to "exogenous" variable
*
compute lags=4            ;*Number of lags
compute nstep=16         ;*Number of response steps

*
open data haversample.rat
cal(q) 1959
data(format=rats) 1959:1 2006:4 ftb3 gdph ih cbhm
*
set loggdp = log(gdph)
set loginv = log(ih)
set logc   = log(cbhm)
*
* T-Bill rate is treated as exogenous
*
setset dftb3  = ftb3 - ftb3{1}
equation(coeffs=||1.0,0.3,0.3,0.3||) ect1
# loggdp loginv logc ftb3

system(model=vecmmodel)
variables loggdp loginv logc
lags 1 to lags
ect ect1
det constant dftb3{0 to 3}
end(system)
*
* Define placeholder equation to allow shock to T-bills.
*
equation(empty) rateeq ftb3
*
******************************************************************
estimate

impulse(noprint,model=vecmmodel+rateeq,shocks=%unitv(%nvar+1,%nvar+1),$
     result=impulses,steps=nstep)

I have one more concern that is dftb3 is just another exogenous variable instead of the difference of ftb3. But I want the difference of ftb3 outside the co-integrating vector as an exogenous while ftb3 is in the cointegrating vector.
wfirew
 
Posts: 6
Joined: Thu Jun 21, 2012 8:16 am

Next

Return to VARs (Vector Autoregression Models)

Who is online

Users browsing this forum: Google [Bot] and 0 guests