Fixed behaviour of write_latex_prior_table command

time-shift
Stéphane Adjemian (Hermes) 2016-06-16 10:38:40 +02:00
parent b70fe62503
commit 64d01a806e
3 changed files with 68 additions and 8 deletions

View File

@ -10069,11 +10069,15 @@ following @LaTeX{} packages: @code{longtable, booktabs}
@deffn {MATLAB/Octave command} write_latex_prior_table ;
Writes descriptive statistics about the prior distribution to
a @LaTeX{} table in a file named @code{<<M_.fname>>_latex_priors_table.tex}. The command writes the prior
definitions currently stored. Thus, the command must be invoked after the @code{estimated_params} block. The command
returns an error if no prior densities are defined (ML estimation). Requires the following @LaTeX{}
packages: @code{longtable, booktabs}
Writes descriptive statistics about the prior distribution to a @LaTeX{} table
in a file named @code{<<M_.fname>>_latex_priors_table.tex}. The command writes
the prior definitions currently stored. Thus, this command must be invoked
after the @code{estimated_params} block. If priors are defined over the
measurement errors, the command must also be preceeded by the declaration of
the observed variables (with @code{varobs}). The command displays a warning if
no prior densities are defined (ML estimation) or if the declaration of the
observed variables is missing. Requires the following @LaTeX{} packages:
@code{longtable, booktabs}
@end deffn
@deffn {MATLAB/Octave command} collect_LaTeX_Files (@code{M_}) ;

44
matlab/isbayes.m Normal file
View File

@ -0,0 +1,44 @@
function l = isbayes(estim_params_)
% Returns true iff bayesian priors over parameters are defined.
% Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
l = false;
if ~isstruct(estim_params_)
return
end
if isempty(estim_params_)
return
end
ptypes = {'param_vals', 5; 'var_exo', 5 ; 'var_endo', 5; 'corrx', 6; 'corrn', 6};
for i=1:size(ptypes, 1)
if isfield(estim_params_, ptypes{i, 1})
tmp = estim_params_.(ptypes{i, 1});
if ~isempty(tmp)
if any(tmp(:,ptypes{i, 2})>0)
l = true;
return
end
end
end
end

View File

@ -30,12 +30,24 @@ function write_latex_prior_table
global M_ options_ bayestopt_ estim_params_
if ~any(bayestopt_.pshape > 0)
if ~isbayes(estim_params_)
fprintf('\nwrite_latex_prior_table:: No prior distributions detected. Skipping table creation.\n')
return
end
% get untruncated bounds
if (size(estim_params_.var_endo,1) || size(estim_params_.corrn,1))
% Prior over measurement errors are defined...
if ((isfield(options_,'varobs') && isempty(options_.varobs)) || ~isfield(options_,'varobs'))
% ... But the list of observed variabled is not yet defined.
fprintf(['\nwrite_latex_prior_table:: varobs should be declared before. Skipping table creation.\n'])
return
end
end
% Fill or update bayestopt_ structure
[xparam1, estim_params_, bayestopt_, lb, ub, M_] = set_prior(estim_params_, M_, options_);
% Get untruncated bounds
bounds = prior_bounds(bayestopt_, options_.prior_trunc);
lb=bounds.lb;
ub=bounds.ub;