0001 function x0=dynare_sensitivity(options_gsa)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 global M_ options_ oo_ bayestopt_ estim_params_
0025
0026 fname_ = M_.fname;
0027 if ~isfield(M_,'dname'),
0028 M_.dname = M_.fname;
0029 end
0030 lgy_ = M_.endo_names;
0031 x0=[];
0032
0033 options_gsa = set_default_option(options_gsa,'datafile',[]);
0034 if isfield(options_gsa,'nograph'),
0035 options_.nograph=options_gsa.nograph;
0036 end
0037 if isfield(options_gsa,'mode_file'),
0038 options_.mode_file=options_gsa.mode_file;
0039 end
0040
0041 options_.order = 1;
0042
0043 if ~isempty(options_gsa.datafile) || isempty(bayestopt_),
0044 options_.datafile = options_gsa.datafile;
0045 if isfield(options_gsa,'first_obs'),
0046 options_.first_obs=options_gsa.first_obs;
0047 end
0048 if isfield(options_gsa,'nobs'),
0049 options_.nobs=options_gsa.nobs;
0050 end
0051 if isfield(options_gsa,'presample'),
0052 options_.presample=options_gsa.presample;
0053 end
0054 if isfield(options_gsa,'prefilter'),
0055 options_.prefilter=options_gsa.prefilter;
0056 end
0057 if isfield(options_gsa,'loglinear'),
0058 options_.loglinear=options_gsa.loglinear;
0059 end
0060 options_.mode_compute = 0;
0061 options_.filtered_vars = 1;
0062 options_.plot_priors = 0;
0063
0064 [dataset_,xparam1, M_, options_, oo_, estim_params_,bayestopt_]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_);
0065
0066 else
0067 if isempty(options_.qz_criterium)
0068 options_.qz_criterium = 1+1e-6;
0069 end
0070 end
0071 [make,my,day,punk,M_,options_,oo_] = dynare_resolve(M_,options_,oo_);
0072
0073 options_gsa = set_default_option(options_gsa,'identification',0);
0074 if options_gsa.identification,
0075 options_gsa.redform=0;
0076 options_gsa = set_default_option(options_gsa,'morris',1);
0077 options_gsa = set_default_option(options_gsa,'trans_ident',0);
0078 options_gsa = set_default_option(options_gsa,'load_ident_files',0);
0079 options_gsa = set_default_option(options_gsa,'ar',1);
0080 options_gsa = set_default_option(options_gsa,'useautocorr',0);
0081 options_.ar = options_gsa.ar;
0082 if options_gsa.morris==2,
0083 if isfield(options_,'options_ident'),
0084 options_.options_ident.load_ident_files = options_gsa.load_ident_files;
0085 options_.options_ident.useautocorr = options_gsa.useautocorr;
0086 options_.options_ident.ar = options_gsa.ar;
0087 options_ident=options_.options_ident;
0088 else
0089 options_ident=[];
0090 options_ident = set_default_option(options_ident,'load_ident_files',options_gsa.load_ident_files);
0091 options_ident = set_default_option(options_ident,'useautocorr',options_gsa.useautocorr);
0092 options_ident = set_default_option(options_ident,'ar',options_gsa.ar);
0093 options_.options_ident = options_ident;
0094 end
0095 end
0096 end
0097
0098
0099 options_gsa = set_default_option(options_gsa,'stab',1);
0100 options_gsa = set_default_option(options_gsa,'redform',0);
0101 options_gsa = set_default_option(options_gsa,'pprior',1);
0102 options_gsa = set_default_option(options_gsa,'prior_range',1);
0103 options_gsa = set_default_option(options_gsa,'ppost',0);
0104 options_gsa = set_default_option(options_gsa,'neighborhood_width',0);
0105 options_gsa = set_default_option(options_gsa,'ilptau',1);
0106 options_gsa = set_default_option(options_gsa,'morris',0);
0107 options_gsa = set_default_option(options_gsa,'glue',0);
0108 options_gsa = set_default_option(options_gsa,'morris_nliv',6);
0109 options_gsa = set_default_option(options_gsa,'morris_ntra',20);
0110 options_gsa = set_default_option(options_gsa,'Nsam',2048);
0111 options_gsa = set_default_option(options_gsa,'load_redform',0);
0112 options_gsa = set_default_option(options_gsa,'load_rmse',0);
0113 options_gsa = set_default_option(options_gsa,'load_stab',0);
0114 options_gsa = set_default_option(options_gsa,'alpha2_stab',0.3);
0115 options_gsa = set_default_option(options_gsa,'ksstat',0.1);
0116 options_gsa = set_default_option(options_gsa,'pvalue_ks',0.001);
0117 options_gsa = set_default_option(options_gsa,'pvalue_corr',0.001);
0118
0119
0120 if options_gsa.redform,
0121 options_gsa.pprior=1;
0122 options_gsa.ppost=0;
0123 end
0124
0125 if options_gsa.morris==1 || options_gsa.morris==3,
0126 if ~options_gsa.identification,
0127 options_gsa.redform=1;
0128 end
0129 options_gsa.pprior=1;
0130 options_gsa.ppost=0;
0131
0132 options_gsa.glue=0;
0133 options_gsa.rmse=0;
0134 options_gsa.load_rmse=0;
0135 options_gsa.alpha2_stab=1;
0136 options_gsa.ksstat=1;
0137 if options_gsa.morris==3,
0138 options_gsa = set_default_option(options_gsa,'Nsam',256);
0139 OutputDirectoryName = CheckPath('gsa/identif',M_.dname);
0140 else
0141 OutputDirectoryName = CheckPath('gsa/screen',M_.dname);
0142 end
0143 else
0144 OutputDirectoryName = CheckPath('gsa',M_.dname);
0145 end
0146
0147 options_.opt_gsa = options_gsa;
0148
0149 if (options_gsa.load_stab || options_gsa.load_rmse || options_gsa.load_redform) ...
0150 && options_gsa.pprior,
0151 filetoload=[OutputDirectoryName '/' fname_ '_prior.mat'];
0152 if ~exist(filetoload),
0153 disp([filetoload,' not found!'])
0154 disp(['You asked to load a non existent analysis'])
0155
0156 return,
0157 else
0158 if isempty(strmatch('bkpprior',who('-file', filetoload),'exact')),
0159 disp('Warning! Missing prior info for saved sample')
0160 disp('The saved files are generated with previous version of GSA package')
0161 else
0162 load(filetoload,'bkpprior'),
0163 if any(bayestopt_.pshape~=bkpprior.pshape) || ...
0164 any(bayestopt_.p1~=bkpprior.p1) || ...
0165 any(bayestopt_.p2~=bkpprior.p2) || ...
0166 any(bayestopt_.p3(~isnan(bayestopt_.p3))~=bkpprior.p3(~isnan(bkpprior.p3))) || ...
0167 any(bayestopt_.p4(~isnan(bayestopt_.p4))~=bkpprior.p4(~isnan(bkpprior.p4))),
0168 disp('WARNING!')
0169 disp('The saved sample has different priors w.r.t. to current ones!!')
0170 disp('')
0171 disp('Press ENTER to continue')
0172 pause;
0173 end
0174 end
0175 end
0176 end
0177
0178 if options_gsa.stab && ~options_gsa.ppost,
0179 x0 = stab_map_(OutputDirectoryName);
0180 end
0181
0182
0183
0184 options_gsa = set_default_option(options_gsa,'logtrans_redform',0);
0185 options_gsa = set_default_option(options_gsa,'threshold_redform',[]);
0186 options_gsa = set_default_option(options_gsa,'ksstat_redform',0.1);
0187 options_gsa = set_default_option(options_gsa,'alpha2_redform',0.3);
0188 options_gsa = set_default_option(options_gsa,'namendo',[]);
0189 options_gsa = set_default_option(options_gsa,'namlagendo',[]);
0190 options_gsa = set_default_option(options_gsa,'namexo',[]);
0191
0192 options_.opt_gsa = options_gsa;
0193 if options_gsa.identification,
0194 map_ident_(OutputDirectoryName);
0195 end
0196
0197 if options_gsa.redform && ~isempty(options_gsa.namendo) ...
0198 && ~options_gsa.ppost,
0199 if strmatch(':',options_gsa.namendo,'exact'),
0200 options_gsa.namendo=M_.endo_names;
0201 end
0202 if strmatch(':',options_gsa.namexo,'exact'),
0203 options_gsa.namexo=M_.exo_names;
0204 end
0205 if strmatch(':',options_gsa.namlagendo,'exact'),
0206 options_gsa.namlagendo=M_.endo_names;
0207 end
0208 options_.opt_gsa = options_gsa;
0209 if options_gsa.morris==1,
0210 redform_screen(OutputDirectoryName);
0211 else
0212
0213 if ~(exist('gsa_sdp','file')==6 || exist('gsa_sdp','file')==2),
0214 disp('Download Mapping routines at:')
0215 disp('http://eemc.jrc.ec.europa.eu/softwareDYNARE-Dowload.htm')
0216 disp(' ' )
0217 error('Mapping routines missing!')
0218 end
0219
0220 redform_map(OutputDirectoryName);
0221 end
0222 end
0223
0224
0225 options_gsa = set_default_option(options_gsa,'rmse',0);
0226 options_gsa = set_default_option(options_gsa,'lik_only',0);
0227 options_gsa = set_default_option(options_gsa,'var_rmse',options_.varobs);
0228 options_gsa = set_default_option(options_gsa,'pfilt_rmse',0.1);
0229 options_gsa = set_default_option(options_gsa,'istart_rmse',options_.presample+1);
0230 options_gsa = set_default_option(options_gsa,'alpha_rmse',0.002);
0231 options_gsa = set_default_option(options_gsa,'alpha2_rmse',1);
0232 options_.opt_gsa = options_gsa;
0233 if options_gsa.rmse,
0234 if ~options_gsa.ppost
0235 if options_gsa.pprior
0236 a=whos('-file',[OutputDirectoryName,'/',fname_,'_prior'],'logpo2');
0237 else
0238 a=whos('-file',[OutputDirectoryName,'/',fname_,'_mc'],'logpo2');
0239 end
0240 if exist('OCTAVE_VERSION'),
0241 aflag=0;
0242 for ja=1:length(a),
0243 aflag=aflag+strcmp('logpo2',a(ja).name);
0244 end
0245 if aflag==0,
0246 a=[];
0247 else
0248 a=1;
0249 end
0250 end
0251 if isempty(a),
0252
0253 prior_posterior_statistics('gsa',dataset_);
0254 if options_.bayesian_irf
0255 PosteriorIRF('gsa');
0256 end
0257 options_gsa.load_rmse=0;
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272 end
0273 end
0274 clear a;
0275
0276 filt_mc_(OutputDirectoryName);
0277 end
0278
0279
0280 if options_gsa.glue,
0281 dr_ = oo_.dr;
0282 if options_gsa.ppost
0283 load([OutputDirectoryName,'/',fname_,'_post']);
0284 DirectoryName = CheckPath('metropolis',M_.dname);
0285 else
0286 if options_gsa.pprior
0287 load([OutputDirectoryName,'/',fname_,'_prior']);
0288 else
0289 load([OutputDirectoryName,'/',fname_,'_mc']);
0290 end
0291 end
0292 if ~exist('x'),
0293 disp(['No RMSE analysis is available for current options'])
0294 disp(['No GLUE file prepared'])
0295 return,
0296 end
0297 nruns=size(x,1);
0298 gend = options_.nobs;
0299 rawdata = read_variables(options_.datafile,options_.varobs,[],options_.xls_sheet,options_.xls_range);
0300 rawdata = rawdata(options_.first_obs:options_.first_obs+gend-1,:);
0301 if options_.loglinear == 1
0302 rawdata = log(rawdata);
0303 end
0304 if options_.prefilter == 1
0305
0306 data = transpose(rawdata-ones(gend,1)*mean(rawdata,1));
0307 else
0308 data = transpose(rawdata);
0309 end
0310
0311 Obs.data = data;
0312 Obs.time = [1:gend];
0313 Obs.num = gend;
0314 for j=1:size(options_.varobs,1)
0315 Obs.name{j} = deblank(options_.varobs(j,:));
0316 vj=deblank(options_.varobs(j,:));
0317
0318 jxj = strmatch(vj,lgy_(dr_.order_var,:),'exact');
0319 js = strmatch(vj,lgy_,'exact');
0320 if ~options_gsa.ppost
0321
0322
0323
0324
0325
0326
0327 Out(j).data = jxj;
0328 Out(j).time = [pwd,'/',OutputDirectoryName];
0329 else
0330 Out(j).data = jxj;
0331 Out(j).time = [pwd,'/',DirectoryName];
0332 end
0333 Out(j).name = vj;
0334 Out(j).ini = 'yes';
0335 Lik(j).name = ['rmse_',vj];
0336 Lik(j).ini = 'yes';
0337 Lik(j).isam = 1;
0338 Lik(j).data = rmse_MC(:,j)';
0339
0340 if ~options_gsa.ppost
0341
0342
0343
0344
0345
0346
0347 Out1=Out;
0348 else
0349 Out1=Out;
0350 end
0351 ismoo(j)=jxj;
0352
0353 end
0354 jsmoo = size(options_.varobs,1);
0355 for j=1:M_.endo_nbr,
0356 if ~ismember(j,ismoo),
0357 jsmoo=jsmoo+1;
0358 vj=deblank(M_.endo_names(dr_.order_var(j),:));
0359 if ~options_gsa.ppost
0360
0361
0362
0363
0364 Out1(jsmoo).data = j;
0365 Out1(jsmoo).time = [pwd,'/',OutputDirectoryName];
0366 else
0367 Out1(jsmoo).data = j;
0368 Out1(jsmoo).time = [pwd,'/',DirectoryName];
0369 end
0370 Out1(jsmoo).name = vj;
0371 Out1(jsmoo).ini = 'yes';
0372 end
0373 end
0374 tit(M_.exo_names_orig_ord,:) = M_.exo_names;
0375 for j=1:M_.exo_nbr,
0376 Exo(j).name = deblank(tit(j,:));
0377 end
0378 if ~options_gsa.ppost
0379 Lik(size(options_.varobs,1)+1).name = 'logpo';
0380 Lik(size(options_.varobs,1)+1).ini = 'yes';
0381 Lik(size(options_.varobs,1)+1).isam = 1;
0382 Lik(size(options_.varobs,1)+1).data = -logpo2;
0383 end
0384 Sam.name = bayestopt_.name;
0385 Sam.dim = [size(x) 0];
0386 Sam.data = [x];
0387
0388 Rem.id = 'Original';
0389 Rem.ind= [1:size(x,1)];
0390
0391 Info.dynare=M_.fname;
0392 Info.order_var=dr_.order_var;
0393 Out=Out1;
0394 if options_gsa.ppost
0395
0396
0397
0398 Info.TypeofSample='post';
0399 save([OutputDirectoryName,'/',fname_,'_glue_post.mat'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info', 'Exo')
0400
0401
0402 else
0403 if options_gsa.pprior
0404 Info.TypeofSample='prior';
0405 save([OutputDirectoryName,'/',fname_,'_glue_prior.mat'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info', 'Exo')
0406
0407
0408
0409 else
0410 Info.TypeofSample='mc';
0411 save([OutputDirectoryName,'/',fname_,'_glue_mc.mat'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info', 'Exo')
0412
0413
0414
0415 end
0416 end
0417
0418 end