From 40e5c61ec7bd00be6eb451e65e0e05f6e21f1e4f Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Mon, 18 Mar 2013 23:46:15 +0100
Subject: [PATCH] Restrict endogenous prior to stationary models and allow for
measurement error
---
matlab/dsge_likelihood.m | 8 ++++++--
matlab/endogenous_prior.m | 5 ++---
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/matlab/dsge_likelihood.m b/matlab/dsge_likelihood.m
index 23bfdcbd2..694c1655e 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 b9b7f54ab..c2930abad 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);
--
GitLab