Page 2 of 2

Re: AD-AS SVAR

Posted: Tue Mar 01, 2016 11:18 am
by abhishek
Thanks Tom
I will put one more long run restrictions. That makes 15 variable to the right hand side, which can be identified using 15 free parameters in the left hand side Var-covar matrix of residual. Where am I wrong? I would be grateful if you can elaborate it a bit.

Re: AD-AS SVAR

Posted: Tue Mar 01, 2016 11:48 am
by TomDoan
You have the count of restrictions vs parameters correct but the system is ill-determined. I explained why above. This is like the difference between "order" and "rank" conditions---you meet the order condition, but not the rank condition. Your last statement says, basically, that you have 15 equations in 15 unknowns, therefore there is a solution. No. There isn't.

Re: AD-AS SVAR

Posted: Tue Mar 01, 2016 12:18 pm
by abhishek
Thanks Tom. I got what are you saying. Please post if you remember any reference about how to check rank and order condition in this kind of setup.

Re: AD-AS SVAR

Posted: Tue Mar 01, 2016 12:28 pm
by TomDoan
Rubio-Ramirez, J.F., D.F. Waggoner, and T. Zha (2010). “Structural Vector Autoregressions: Theory of Identication and Algorithms for Inference,” Review of Economic Studies, Vol. 77, No. 2, pp. 665–696 is the standard reference on SVAR identification. I'm not sure whether their results would apply to what you're doing.

Re: AD-AS SVAR

Posted: Tue Mar 01, 2016 5:04 pm
by TomDoan
To make it a bit clearer why your model doesn't work, you can basically reduce it to two variables. If you have a fully populated parameter row for each loading, i.e.

x x
x x

standard methods put one restriction on one of the shocks (LR zero, SR zero or something else) and then the other shock is forced by orthogonalization. The Cover, etc. model puts one restriction on each (LR on one and a price impact restriction that nails down the other), and doesn't impose orthogonality. What you're trying to do is to put two constraints on one and (in effect) -1 constraints on the other. Needless to say, that doesn't work.

Re: AD-AS SVAR

Posted: Sat Apr 02, 2016 9:11 am
by abhishek
TomDoan wrote:@ShortAndLong with the NOESTIMATE option will code up a mapping from a set of underlying parameters to the "B" matrix that will give the required set of restrictions. The problem here is that there are other restrictions imposed on the "B" matrix that aren't just zero restrictions, and they won't have any simple form in the remapped parameter space. Instead, the best approach is to write a standard SVAR using the model's natural parameters and impose the long-run restriction using a PARMSET restriction.

The following is an example. The data set is from Lutkepohl's textbook, which I'm using simply because it's a 3 variable system, not because the particular model makes sense with it.

Code: Select all

open data e1.dat
calendar(q) 1960
data(format=prn,org=columns,skips=6) 1960:01 1982:04 invest income cons
graph(footer="Figure 3.1 West German data",$
  key=upleft,klabels=||"income","consumption","investment"||) 3
# income
# cons
# invest
*
set dinc = log(income/income{1})
set dcons = log(cons/cons{1})
set dinv  = log(invest/invest{1})
*
system(model=varmodel)
variables dinv dinc dcons
lags 1 2
det constant
end(system)
estimate * 1978:4
*
compute masums=inv(%varlagsums)
*
nonlin(parmset=svarparms) gamma alpha f31 f32
dec frml[rect] af bf lrf
frml af = ||1.0,0.0,0.0|$
            0.0,1.0,0.0|$
            f31,f32,1.0||
frml bf = ||1.0,0.0,0.0|$
           gamma/(1+alpha),1/(1+alpha),alpha/(1+alpha)|$
          -gamma/(1+alpha),-1/(1+alpha),1/(1+alpha)||
frml lrf = masums*bf(1)
nonlin(parmset=lrrest) lrf(1)(2,3)==0.0
compute f31=f32=0.0
compute alpha=-.3,gamma=.3
cvmodel(a=af,b=bf,parmset=svarparms+lrrest) %sigma
Hi Tom,
Can you explain how the correlation between structural shocks is coming in this calculation? I mean which term is bringing correlation between structural shocks. I couldn't figure out. Forgive my ignorance.

Re: AD-AS SVAR

Posted: Thu Oct 25, 2018 5:24 am
by MM72
Hi Tom,

I was wondering if you could help me with setting this model up for a bivariate VAR.

Would the following code do it, and can I then use the "factor" option in the cvmodel command to conduct innovation accounting (IRFs, FEVDs and historical decomps)?

Thanks in advance!


system(model=varmodel)
variables dly dlcpi
lags 1 4
det constant
end(system)
estimate * 2018:2
*
compute masums=inv(%varlagsums)
*
nonlin(parmset=svarparms) alpha f21
dec frml[rect] af bf lrf
frml af = ||1.0,0.0|$
f21,1.0||

frml bf = ||1/(1+alpha),alpha/(1+alpha)|$
-1/(1+alpha),1/(1+alpha)||

frml lrf = masums*bf(1)

nonlin(parmset=lrrest) lrf(1)(1,2)==0.0
compute f21=0.0
compute alpha=1.1
cvmodel(a=af,b=bf,factor=sfactor,parmset=svarparms+lrrest) %sigma

Re: AD-AS SVAR

Posted: Sun Oct 28, 2018 9:01 am
by TomDoan
That looks correct. However, the factor option produces two shocks that aren't the ones generated by the model (or at least the second one isn't) as the somewhat arbitrary Cholesky factor is used to convert them to orthogonality. Because the two shocks determined by the model are correlated, you can't do variance accounting with them. You *can* do impulse responses, but you need to reverse the effects of the A matrix to produce the original shocks generated by the model by compute a shock matrix of inv(af(1))*sfactor.