From e3ac15458abe18b03dd879a65542a62f57658ab8 Mon Sep 17 00:00:00 2001 From: Marco Ratto Date: Tue, 18 Nov 2014 11:34:49 +0100 Subject: [PATCH] Properly deal with dseries in identification. This fixes #781 --- matlab/dynare_identification.m | 16 ---------------- matlab/identification_analysis.m | 9 ++++----- matlab/utilities/dataset/makedataset.m | 3 ++- 3 files changed, 6 insertions(+), 22 deletions(-) diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m index 9a883e9d2..33f2c151e 100644 --- a/matlab/dynare_identification.m +++ b/matlab/dynare_identification.m @@ -130,22 +130,6 @@ options_.plot_priors = 0; options_.smoother=1; [dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_,bayestopt_]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_); options_ident.analytic_derivation_mode = options_.analytic_derivation_mode; -if isempty(dataset_), - dataset_.info.ntobs = periods; - dataset_.info.nvobs = length(options_.varobs); - dataset_.info.varobs = options_.varobs; - dataset_.rawdata = []; - dataset_.missing.state = 0; - for jdata=1:periods, - temp1{jdata}=[1:dataset_.info.nvobs]'; - end - dataset_.missing.aindex = temp1; - dataset_.missing.vindex = []; - dataset_.missing.number_of_observations = []; - dataset_.missing.no_more_missing_observations = 1; - dataset_.descriptive.mean = []; - dataset_.data = []; -end if prior_exist if any(bayestopt_.pshape > 0) diff --git a/matlab/identification_analysis.m b/matlab/identification_analysis.m index ce39b30cc..070698838 100644 --- a/matlab/identification_analysis.m +++ b/matlab/identification_analysis.m @@ -134,18 +134,17 @@ if info(1)==0, options_.noprint = 1; options_.order = 1; options_.SpectralDensity.trigger = 0; - options_.periods = dataset_.nobs+100; + options_.periods = periods+100; if options_.kalman_algo > 2, options_.kalman_algo = 1; end analytic_derivation = options_.analytic_derivation; options_.analytic_derivation = -2; info = stoch_simul(char(options_.varobs)); - dataset_ = dseries(oo_.endo_simul(options_.varobs_id,100+1:end),dataset_.dates(1),dataset_.names,dataset_.tex); - %data_info.data=oo_.endo_simul(options_.varobs_id,100+1:end); - % datax=data; + dataset_ = dseries(oo_.endo_simul(options_.varobs_id,100+1:end)',dates('1Q1'), options_.varobs); derivatives_info.no_DLIK=1; - [fval,DLIK,AHess,cost_flag,ys,trend_coeff,info,M_,options_,bayestopt_,oo_] = dsge_likelihood(params',dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_,derivatives_info); + bounds = prior_bounds(bayestopt_,options_); + [fval,DLIK,AHess,cost_flag,ys,trend_coeff,info,M_,options_,bayestopt_,oo_] = dsge_likelihood(params',dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,bounds,oo_,derivatives_info); % fval = DsgeLikelihood(xparam1,data_info,options_,M_,estim_params_,bayestopt_,oo_); options_.analytic_derivation = analytic_derivation; AHess=-AHess; diff --git a/matlab/utilities/dataset/makedataset.m b/matlab/utilities/dataset/makedataset.m index f1ca78fde..86f40df10 100644 --- a/matlab/utilities/dataset/makedataset.m +++ b/matlab/utilities/dataset/makedataset.m @@ -36,7 +36,8 @@ end if isempty(DynareOptions.datafile) && isempty(DynareOptions.dataset.file) && isempty(DynareOptions.dataset.series) if gsa_flag DynareDataset = dseries(); - DatasetInfo = []; + DatasetInfo = struct('missing', struct('state', 0, 'aindex', [], 'vindex', [], 'number_of_observations', NaN, 'no_more_missing_observations', NaN), ... + 'descriptive', struct('mean', [], 'covariance', [], 'correlation', [], 'autocovariance', [])); newdatainterface=0; return else