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