Example of conditional forecasting in a VAR. From User's Guide, Section 7.7.2.

open data oecdsample.rat
calendar(q) 1981
data(format=rats) 1981:1 2006:4 can3mthpcp canexpgdpchs $canexpgdpds canm1s canusxsr usaexpgdpch * set logcangdp = log(canexpgdpchs) set logcandefl = log(canexpgdpds) set logcanm1 = log(canm1s) set logusagdp = log(usaexpgdpch) set logexrate = log(canusxsr) * system(model=canmodel) variables logcangdp logcandefl logcanm1 logexrate can3mthpcp logusagdp lags 1 to 4 det constant end(system) estimate * compute fstart=2007:1,fend=2009:4 * @condition(model=canmodel,steps=12,results=condfore) 2 # logusagdp 2007:4 logusagdp(2006:4)+.05 # logusagdp 2008:4 logusagdp(2006:4)+.10 forecast(model=canmodel,results=forecasts,from=fstart,to=fend) * do i=1,6 compute [label] l=%modellabel(canmodel,i) graph(header="Forecasts of "+l,window=l,$
key=below,klabels=||"Unconditional","Conditional"||) 2
# forecasts(i)
# condfore(i)
end do i
*
* This saves 1000 simulated values of Canadian Real GDP from the
* distribution constrained to 5% real growth of US Real GDP. It uses a
* series of vectors of dimension 1000; one for each time period during
* the forecast range.
*
compute ndraws=1000
dec series[vect] can
gset can fstart fend = %zeros(ndraws,1)
do draw=1,ndraws
@condition(simulate,model=canmodel,steps=12,results=simfore) 2
# logusagdp 2007:4 logusagdp(2006:4)+.05
# logusagdp 2008:4 logusagdp(2006:4)+.10
do t=fstart,fend
compute can(t)(draw)=simfore(1)(t)
end do t
end do draw
*
* Compute the 84th and 16th percentiles of the distribution
*
set upper fstart fend = %fractiles(can(t),||.84||)(1)
set lower fstart fend = %fractiles(can(t),||.16||)(1)
graph(header="Canadian Real GDP with High Growth of US GDP",key=below,$klabels=||"Unconditional","Conditional","84%ile","16%ile"||) 4 # forecasts(1) # condfore(1) # upper / 3 # lower / 3 * * Transform the GDP numbers into average (annualized) growth rates from fstart-1. * set fgrowth fstart fend = 400.0*(forecasts(1)-logcangdp(fstart-1))/(t-fstart+1) set cgrowth fstart fend = 400.0*(condfore(1)-logcangdp(fstart-1))/(t-fstart+1) set ugrowth fstart fend = 400.0*(upper-logcangdp(fstart-1))/(t-fstart+1) set lgrowth fstart fend = 400.0*(lower-logcangdp(fstart-1))/(t-fstart+1) graph(header="Canadian Real GDP Average Growth with High Growth of US GDP",key=below,$
klabels=||"Unconditional","Conditional","84%ile","16%ile"||) 4
# fgrowth
# cgrowth
# ugrowth / 3
# lgrowth / 3


Graphs

This generates graphs of the constrained and unconstrained forecasts for each of the six variables in the model. This shows one of those, along with a graph of average growth rates with simulation bounds.  