From 77fdd3bfda7dac6a7aafab824f4915efaa1de52f Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Fri, 13 Dec 2013 09:56:11 +0100 Subject: [PATCH] ms-sbvar: corrected bug with final_subperiod default value and clarified in the manual. --- doc/dynare.texi | 7 +++++-- matlab/ms-sbvar/check_datafile_years_assigned.m | 8 +++++--- matlab/ms-sbvar/ms_sbvar_setup.m | 6 +----- matlab/ms-sbvar/sbvar.m | 6 +----- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/doc/dynare.texi b/doc/dynare.texi index 8a30d916d..3f442ebed 100644 --- a/doc/dynare.texi +++ b/doc/dynare.texi @@ -6979,11 +6979,14 @@ The first period of data (@i{i.e.} for quarterly data, an integer in [@code{1,4}]). Default: @code{1} @item final_year = @var{INTEGER} -The last year of data. Default: Set to encompass entire dataset +The last year of data. Default: Set to encompass entire dataset. @item final_subperiod = @var{INTEGER} The final period of data (@i{i.e.} for monthly data, an integer in -[@code{1,12}]. Default: Set to encompass entire dataset +[@code{1,12}]. Default: When final_year is also missing, set to +encompass entire dataset; when final_year is indicated, set to the +maximum number of subperiods given the frequency (@i{i.e}. 4 for +quarterly data, 12 for monthly,...). @item datafile = @var{FILENAME} @xref{datafile}. diff --git a/matlab/ms-sbvar/check_datafile_years_assigned.m b/matlab/ms-sbvar/check_datafile_years_assigned.m index 98daa0685..7df9611dc 100644 --- a/matlab/ms-sbvar/check_datafile_years_assigned.m +++ b/matlab/ms-sbvar/check_datafile_years_assigned.m @@ -25,18 +25,20 @@ function [final_year,final_subperiod]=check_datafile_years_assigned(options_) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -final_year = []; -final_subperiod = []; +final_year = options_.ms.final_year; +final_subperiod = options_.ms.final_subperiod; if isempty(options_.ms.initial_year) error('Must set initial_year option'); end -if isempty(options_.ms.final_year) +if isempty(final_year) n = size(options_.data,1); freq = options_.ms.freq; final_subperiod = mod(options_.ms.initial_subperiod+n-2,freq)+1; final_year = options_.ms.initial_year + floor((n-1)/freq); +elseif isempty(final_subperiod) + final_subperiod = options_.ms.freq; end if isempty(options_.datafile) diff --git a/matlab/ms-sbvar/ms_sbvar_setup.m b/matlab/ms-sbvar/ms_sbvar_setup.m index 00263fe33..2d6375a2c 100644 --- a/matlab/ms-sbvar/ms_sbvar_setup.m +++ b/matlab/ms-sbvar/ms_sbvar_setup.m @@ -30,11 +30,7 @@ function ms_sbvar_setup(options_) options_.data = read_variables(options_.datafile, ... options_.varobs, [], options_.xls_sheet, options_.xls_range); -[final_year,final_subperiod] = check_datafile_years_assigned(options_); -if ~isempty(final_year) - options_.ms.final_year = final_year; - options_.ms.final_subperiod = final_subperiod; -end +[options_.ms.final_year,options_.ms.final_subperiod] = check_datafile_years_assigned(options_); if options_.ms.upper_cholesky if options_.ms.lower_cholesky diff --git a/matlab/ms-sbvar/sbvar.m b/matlab/ms-sbvar/sbvar.m index 0a6864536..d92d7a678 100644 --- a/matlab/ms-sbvar/sbvar.m +++ b/matlab/ms-sbvar/sbvar.m @@ -34,11 +34,7 @@ function sbvar(M, options) clean_sbvar_files(); options.data = read_variables(options.datafile,options.varobs,[],options.xls_sheet,options.xls_range); -[final_year,final_subperiod] = check_datafile_years_assigned(options); -if ~isempty(final_year) - options.ms.final_year = final_year; - options.ms.final_subperiod = final_subperiod; -end +[options.ms.final_year,options.ms.final_subperiod] = check_datafile_years_assigned(options); if options.forecast == 0 options.forecast = 4;