From 3d2e55274de2c05e7717188bd40c3fbebc816302 Mon Sep 17 00:00:00 2001 From: Marco Ratto Date: Mon, 7 Nov 2011 09:19:36 +0100 Subject: [PATCH] bug fix + inclusion of prior derivatives in analytic computations. --- matlab/DsgeLikelihood.m | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/matlab/DsgeLikelihood.m b/matlab/DsgeLikelihood.m index 3a7a61485..e2099fca1 100644 --- a/matlab/DsgeLikelihood.m +++ b/matlab/DsgeLikelihood.m @@ -442,7 +442,7 @@ if analytic_derivation full_Hess = 0; DLIK = []; AHess = []; - if nargin<7 || isempty(derivatives_info) + if nargin<8 || isempty(derivatives_info) [A,B,nou,nou,Model,DynareOptions,DynareResults] = dynare_resolve(Model,DynareOptions,DynareResults); if ~isempty(EstimatedParameters.var_exo) indexo=EstimatedParameters.var_exo(:,1); @@ -643,7 +643,19 @@ end % ------------------------------------------------------------------------------ % 5. Adds prior if necessary % ------------------------------------------------------------------------------ -lnprior = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4); +if analytic_derivation + if full_Hess, + [lnprior, dlnprior, d2lnprior] = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4); + AHess = Hess + d2lnprior; + else + [lnprior, dlnprior] = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4); + end + if no_DLIK==0 + DLIK = DLIK - dlnprior'; + end +else + lnprior = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4); +end fval = (likelihood-lnprior); % Update DynareOptions.kalman_algo.