diff --git a/matlab/dsge_likelihood.m b/matlab/dsge_likelihood.m index 23bfdcbd2b82a55b7ef66f0f4998e11a4b8608cf..694c1655e934c2262c6beedcff9eee3841dfba85 100644 --- a/matlab/dsge_likelihood.m +++ b/matlab/dsge_likelihood.m @@ -761,8 +761,12 @@ else lnprior = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4); end if DynareOptions.endogenous_prior==1 - [lnpriormom] = endogenous_prior(Y,Pstar,BayesInfo); - fval = (likelihood-lnprior-lnpriormom); + if DynareOptions.lik_init==2 || DynareOptions.lik_init==3 + error('Endogenous prior not supported with non-stationary models') + else + [lnpriormom] = endogenous_prior(Y,Pstar,BayesInfo,H); + fval = (likelihood-lnprior-lnpriormom); + end else fval = (likelihood-lnprior); end diff --git a/matlab/endogenous_prior.m b/matlab/endogenous_prior.m index b9b7f54aba61aa65c946837fc2bc0196bbbd5f8f..c2930abad8a9b82e316df4ce2c4e26483bb0c85f 100644 --- a/matlab/endogenous_prior.m +++ b/matlab/endogenous_prior.m @@ -1,4 +1,4 @@ -function [lnpriormom] = endogenous_prior(data,Pstar,BayesInfo) +function [lnpriormom] = endogenous_prior(data,Pstar,BayesInfo,H) % Computes the endogenous log prior addition to the initial prior % % INPUTS @@ -82,8 +82,7 @@ mf=BayesInfo.mf1; II=eye(size(Pstar,2)); Z=II(mf,:); % This is Ftheta, variance of model variables, given param vector theta: -Ftheta=diag(Z*Pstar(:,mf)); % +H; - +Ftheta=diag(Z*Pstar(:,mf)+H); % below commented out line is for Del Negro Schorfheide style priors: % lnpriormom=-.5*n*TT*log(2*pi)-.5*TT*log(det(sigma))-.5*TT*trace(inv(sigma)*(gamyy-2*phi'*gamxy+phi'*gamxx*phi)); lnpriormom=.5*n*log(Tsamp/(2*pi))-.5*log(det(Shat))-.5*Tsamp*(Fhat-Ftheta)'/Shat*(Fhat-Ftheta);