I compared two ways of constructing a Minnesota Prior, which are similar and therefore should yield the same results.
The first one is done by the @BVARBuildPriorMN procedure. The code is:
Code: Select all
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)
*** VAR Setup and Storage Matrices
compute lags=2 ;*Number of lags
compute nstep=40 ;*Number of response steps
compute nburn=500 ;*Number of burn-in draws
compute ndraws=2500 ;*Number of keeper draws
compute tight=.1
compute other=.5
system(model=varmodel)
variables loggdp loginv logc ftb3
lags 1 to lags
det constant
end(system)
estimate(ols,sigma) ;*initial set of estimations
impulse(model=varmodel,steps=nstep,results=impulses)
@BVARBuildPriorMN(model=varmodel,tight=tight,other=other,decay=1) HBPRIORS HPRIORS
@BVARFinishPrior hbpriors hpriors bprior hprior
Code: Select all
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)
*** VAR Setup and Storage Matrices
compute lags=2 ;*Number of lags
compute nstep=40 ;*Number of response steps
compute nburn=500 ;*Number of burn-in draws
compute ndraws=2500 ;*Number of keeper draws
compute tight=.1
compute other=.5
system(model=varmodel)
variables loggdp loginv logc ftb3
lags 1 to lags
det constant
end(system)
estimate(ols,sigma) ;*initial set of estimations
impulse(model=varmodel,steps=nstep,results=impulses)
compute ncoef=lags*nvar+1 ;* Number of coefficients per equation
dec rect minnmean(ncoef,nvar) minnprec(ncoef,nvar)
do i=1,nvar
do j=1,nvar
do l=1,lags
compute minnmean((j-1)*lags+l,i)=(i==j.and.l==1)
compute minnprec((j-1)*lags+l,i)=(olssee(j)/olssee(i))*%if(i==j,l^(-1)/tight,l^(-1)/(other*tight))
end do l
end do j
compute minnmean(ncoef,i)=0.0,minnprec(ncoef,i)=0.0
end do i
display minnmean
display minnprec
ewise minnprec(i,j)=minnprec(i,j)^2
compute hprior=%diag(%vec(minnprec))
compute bprior=minnmean
display hprior
Thank you in advance
Jules