diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m index 83d79b3d8..c52e6e029 100644 --- a/matlab/dynare_sensitivity.m +++ b/matlab/dynare_sensitivity.m @@ -14,6 +14,7 @@ options_gsa_ = options_.opt_gsa; options_gsa_ = set_default_option(options_gsa_,'stab',1); options_gsa_ = set_default_option(options_gsa_,'redform',0); options_gsa_ = set_default_option(options_gsa_,'pprior',1); +options_gsa_ = set_default_option(options_gsa_,'ppost',0); options_gsa_ = set_default_option(options_gsa_,'ilptau',1); options_gsa_ = set_default_option(options_gsa_,'Nsam',2048); options_gsa_ = set_default_option(options_gsa_,'load_stab',0); @@ -65,10 +66,15 @@ end options_gsa_ = set_default_option(options_gsa_,'glue',0); if options_gsa_.glue, dr_ = oo_.dr; - if options_gsa_.pprior - load([fname_,'_prior']); + if options_gsa_.ppost + load([fname_,'_post']); + DirectoryName = CheckPath('metropolis'); else - load([fname_,'_mc']); + if options_gsa_.pprior + load([fname_,'_prior']); + else + load([fname_,'_mc']); + end end nruns=size(x,1); gend = options_.nobs; @@ -83,34 +89,74 @@ if options_gsa_.glue, data = transpose(rawdata); end - Obs.data = data; - Obs.time = [1:gend]; - Obs.num = gend; + Obs.data = data; + Obs.time = [1:gend]; + Obs.num = gend; for j=1:size(options_.varobs,1) Obs.name{j} = deblank(options_.varobs(j,:)); vj=deblank(options_.varobs(j,:)); jxj = strmatch(vj,lgy_(dr_.order_var,:),'exact'); js = strmatch(vj,lgy_,'exact'); - y0=zeros(gend+1,nruns); - nb = size(stock_filter,3); - y0 = squeeze(stock_filter(:,jxj,:)) + ... - kron(stock_ys(js,:),ones(size(stock_filter,1),1)); + if ~options_gsa_.ppost + y0=zeros(gend+1,nruns); + nb = size(stock_filter,3); + y0 = squeeze(stock_filter(:,jxj,:)) + ... + kron(stock_ys(js,:),ones(size(stock_filter,1),1)); + Out(j).data = y0'; + Out(j).time = [1:size(y0,1)]; + else + Out(j).data = jxj; + Out(j).time = [pwd,'\',DirectoryName]; + end Out(j).name = vj; Out(j).ini = 'yes'; - Out(j).time = [1:size(y0,1)]; - Out(j).data = y0'; Lik(j).name = ['rmse_',vj]; Lik(j).ini = 'yes'; Lik(j).isam = 1; Lik(j).data = rmse_MC(:,j)'; + + if ~options_gsa_.ppost + y0 = squeeze(stock_smooth(:,jxj,:)) + ... + kron(stock_ys(js,:),ones(size(stock_smooth,1),1)); + Out1(j).name = vj; + Out1(j).ini = 'yes'; + Out1(j).time = [1:size(y0,1)]; + Out1(j).data = y0'; + else + Out1=Out; + end + ismoo(j)=jxj; + + end + jsmoo = size(options_.varobs,1); + for j=1:M_.endo_nbr, + if ~ismember(j,ismoo), + jsmoo=jsmoo+1; + vj=deblank(M_.endo_names(dr_.order_var(j),:)); + if ~options_gsa_.ppost + y0 = squeeze(stock_smooth(:,j,:)) + ... + kron(stock_ys(j,:),ones(size(stock_smooth,1),1)); + Out1(jsmoo).time = [1:size(y0,1)]; + Out1(jsmoo).data = y0'; + else + Out1(jsmoo).data = j; + Out1(jsmoo).time = [pwd,'\',DirectoryName]; + end + Out1(jsmoo).name = vj; + Out1(jsmoo).ini = 'yes'; + end + end + tit(M_.exo_names_orig_ord,:) = M_.exo_names; + for j=1:M_.exo_nbr, + Exo(j).name = deblank(tit(j,:)); + end + if ~options_gsa_.ppost + Lik(size(options_.varobs,1)+1).name = 'logpo'; + Lik(size(options_.varobs,1)+1).ini = 'yes'; + Lik(size(options_.varobs,1)+1).isam = 1; + Lik(size(options_.varobs,1)+1).data = -logpo2; end - - Lik(size(options_.varobs,1)+1).name = 'logpo'; - Lik(size(options_.varobs,1)+1).ini = 'yes'; - Lik(size(options_.varobs,1)+1).isam = 1; - Lik(size(options_.varobs,1)+1).data = -logpo2; - Sam.name = bayestopt_.name; Sam.dim = [size(x) 0]; Sam.data = [x]; @@ -118,6 +164,22 @@ if options_gsa_.glue, Rem.id = 'Original'; Rem.ind= [1:size(x,1)]; - save([fname_,'_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem') + if options_gsa_.ppost + Info.dynare=M_.fname; + Out=Out1; + save([fname_,'_post_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info', 'Exo') + %save([fname_,'_post_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info') + + else + if options_gsa_.pprior + save([fname_,'_prior_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem') + Out=Out1; + save([fname_,'_prior_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem') + else + save([fname_,'_mc_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem') + Out=Out1; + save([fname_,'_mc_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem') + end + end end