From a6462811376fa93ea82dc541ae4e826035d46ee8 Mon Sep 17 00:00:00 2001 From: adjemian <adjemian@ac1d8469-bf42-47a9-8791-bf33cf982152> Date: Tue, 2 Sep 2008 15:52:55 +0000 Subject: [PATCH] If var_list_ is empty the user is asked to confirm that he wants to obtain posterior statistics for all the endogenous variables of the model. The user can then choose between: [1] var_list_ is the set of all the endogenous variables, [2] var_list_ is the set of all observed variables, [3] Stop Dynare and edit the mod file (to add a list of variables after the estimation command). git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@2020 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/check_list_of_variables.m | 141 +++++++++++++++++++++++++++++++ matlab/dynare_estimation.m | 13 ++- 2 files changed, 150 insertions(+), 4 deletions(-) create mode 100644 matlab/check_list_of_variables.m diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m new file mode 100644 index 0000000000..a2ca4e98d0 --- /dev/null +++ b/matlab/check_list_of_variables.m @@ -0,0 +1,141 @@ +function varlist = check_list_of_variables(options_, M_, varlist) +% This function defines, if necessary, the list of endogenous variables +% for which the posterior statistics have to be computed. +% +% +% INPUTS +% +% options_ [structure] Dynare structure. +% M_ [structure] Dynare structure (related to model definition). +% varlist [string] Array of strings with name of the endogenous variables. +% +% OUTPUTS +% varlist [string] +% +% SPECIAL REQUIREMENTS + +% Copyright (C) 2003-2008 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/>. + + if isempty(varlist) + disp(' ') + disp(['You did not declared endogenous variables after the estimation command.']) + info = 0; + cas = []; + if options_.bayesian_irf + cas = 'Posterior IRFs'; + info=1; + end + if options_.moments_varendo + if isempty(cas) + cas = 'Posterior moments'; + else + cas = [ cas , ', posterior moments']; + end + info=1; + end + if options_.smoother + if isempty(cas) + cas = 'Posterior smoothed variables'; + else + cas = [ cas , ', posterior smoothed variables']; + end + info=1; + end + if options_.smoother + if isempty(cas) + cas = 'Posterior smoothed variables'; + else + cas = [ cas , ', posterior smoothed variables']; + end + info=1; + end + if ~isempty(options_.filter_step_ahead) + if isempty(cas) + cas = 'Posterior k-step ahead filtered variables'; + else + cas = [ cas , ', posterior k-step ahead filtered variables']; + end + info=1; + end + if options_.forecast + if isempty(cas) + cas = 'Posterior forecasts'; + else + cas = [ cas , ' and posterior forecats']; + end + info=1; + end + string = [ cas , ' will be computed for the ' num2str(M_.endo_nbr) ' endogenous variables']; + string = [ string ' of your model, this can be very long....']; + format_text( string, 10) + if info + choice = []; + while isempty(choice) + disp(' ') + disp(' ') + disp('Choose one of the following options:') + disp(' ') + disp(' [1] Consider all the endogenous variables.') + disp(' [2] Consider all the observed endogenous variables.') + disp(' [3] Stop Dynare and change the mod file.') + disp(' ') + choice = input('options [default is 1] = '); + if isempty(choice) + choice=1; + end + if choice==1 + varlist = M_.endo_names; + elseif choice==2 + varlist = options_.varobs; + elseif choice==3 + varlist = NaN; + else + disp('') + disp('YOU HAVE TO ANSWER 1, 2 or 3!') + disp('') + end + end + end + if isnan(varlist) + edit([M_.fname '.mod']) + end + disp('') + end + + + + function format_text(remain, max_number_of_words_per_line) + index = 0; + line_of_text = []; + while ~isempty(remain) + [token, remain] = strtok(remain); + index = index+1; + if isempty(line_of_text) + line_of_text = token; + else + line_of_text = [line_of_text , ' ' , token]; + end + if index==max_number_of_words_per_line + disp(line_of_text) + index = 0; + line_of_text = []; + end + end + if index<max_number_of_words_per_line + disp(line_of_text) + end \ No newline at end of file diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 24e20e1e92..b6b638aefc 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -11,7 +11,7 @@ function dynare_estimation(var_list_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2007 Dynare Team +% Copyright (C) 2003-2008 Dynare Team % % This file is part of Dynare. % @@ -28,10 +28,15 @@ function dynare_estimation(var_list_) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -global M_ options_ oo_ estim_params_ -global bayestopt_ +global M_ options_ oo_ estim_params_ bayestopt_ + +var_list_ = check_list_of_variables(options_, M_, var_list_) +if isempty(var_list_) + return +else + options_.varlist = var_list_; +end -options_.varlist = var_list_; options_.lgyidx2varobs = zeros(size(M_.endo_names,1),1); for i = 1:size(M_.endo_names,1) tmp = strmatch(deblank(M_.endo_names(i,:)),options_.varobs,'exact'); -- GitLab