From 83981125c933f87b4eeae7cebf8e1254a1f1c2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= Date: Tue, 24 Feb 2015 20:42:19 +0100 Subject: [PATCH] Added missing routine and fixed licence header. --- matlab/optimization/gmhmaxlik.m | 120 +++++++++++++++++++++++++++ matlab/optimization/gmhmaxlik_core.m | 2 +- 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 matlab/optimization/gmhmaxlik.m diff --git a/matlab/optimization/gmhmaxlik.m b/matlab/optimization/gmhmaxlik.m new file mode 100644 index 000000000..4501f845c --- /dev/null +++ b/matlab/optimization/gmhmaxlik.m @@ -0,0 +1,120 @@ +function [PostMode, HessianMatrix, Scale, ModeValue] = gmhmaxlik(fun, xinit, Hinit, iscale, bounds, priorstd, gmhmaxlikOptions, OptimizationOptions, varargin) + +% Copyright (C) 2006-2015 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +% Set default options + +if ~isempty(Hinit); + gmhmaxlikOptionsptions.varinit = 'previous'; +else + gmhmaxlikOptions.varinit = 'prior'; +end + +if ~isempty(OptimizationOptions) + DynareOptionslist = read_key_value_string(OptimizationOptions); + for i=1:rows(DynareOptionslist) + switch DynareOptionslist{i,1} + case 'NumberOfMh' + gmhmaxlikOptions.iterations = DynareOptionslist{i,2}; + case 'ncov-mh' + gmhmaxlikOptions.number = DynareOptionslist{i,2}; + case 'nscale' + gmhmaxlikOptions.nscale = DynareOptionslist{i,2}; + case 'nclimb' + gmhmaxlikOptions.nclimb = DynareOptionslist{i,2}; + case 'InitialCovarianceMatrix' + switch DynareOptionslist{i,2} + case 'previous' + if isempty(Hinit) + error('gmhmaxlik: No previous estimate of the Hessian matrix available! You cannot use the InitialCovarianceMatrix option!') + else + gmhmaxlikOptions.varinit = 'previous'; + end + case {'prior', 'identity'} + gmhmaxlikOptions.varinit = DynareOptionslist{i,2}; + otherwise + error('gmhmaxlik: Unknown value for option ''InitialCovarianceMatrix''!') + end + case 'AcceptanceRateTarget' + gmhmaxlikOptions.target = DynareOptionslist{i,2}; + if gmhmaxlikOptions.target>1 || gmhmaxlikOptions.target