From e3ac15458abe18b03dd879a65542a62f57658ab8 Mon Sep 17 00:00:00 2001
From: Marco Ratto <marco.ratto@jrc.ec.europa.eu>
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
--
GitLab