@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