0001 function x0=dynare_sensitivity()
0002
0003
0004 global M_ options_ oo_ bayestopt_
0005
0006 fname_ = M_.fname;
0007 lgy_ = M_.endo_names;
0008 x0=[];
0009
0010 options_ = set_default_option(options_,'opt_gsa',1);
0011 options_gsa_ = options_.opt_gsa;
0012
0013
0014 options_gsa_ = set_default_option(options_gsa_,'stab',1);
0015 options_gsa_ = set_default_option(options_gsa_,'redform',0);
0016 options_gsa_ = set_default_option(options_gsa_,'pprior',1);
0017 options_gsa_ = set_default_option(options_gsa_,'ppost',0);
0018 options_gsa_ = set_default_option(options_gsa_,'ilptau',1);
0019 options_gsa_ = set_default_option(options_gsa_,'Nsam',2048);
0020 options_gsa_ = set_default_option(options_gsa_,'load_stab',0);
0021 options_gsa_ = set_default_option(options_gsa_,'alpha2_stab',0.3);
0022 options_gsa_ = set_default_option(options_gsa_,'ksstat',0.1);
0023 options_gsa_ = set_default_option(options_gsa_,'load_mh',0);
0024
0025 OutputDirectoryName = CheckPath('GSA');
0026
0027
0028 if options_gsa_.stab & ~options_gsa_.load_mh,
0029 x0 = stab_map_(options_gsa_.Nsam, options_gsa_.load_stab, options_gsa_.ksstat, options_gsa_.alpha2_stab, ...
0030 options_gsa_.redform, options_gsa_.pprior, options_gsa_.ilptau, OutputDirectoryName);
0031 end
0032
0033
0034
0035 options_gsa_ = set_default_option(options_gsa_,'load_redform',0);
0036 options_gsa_ = set_default_option(options_gsa_,'logtrans_redform',0);
0037 options_gsa_ = set_default_option(options_gsa_,'threshold_redform',[]);
0038 options_gsa_ = set_default_option(options_gsa_,'ksstat_redform',0.1);
0039 options_gsa_ = set_default_option(options_gsa_,'alpha2_redform',0.3);
0040 options_gsa_ = set_default_option(options_gsa_,'namendo',[]);
0041 options_gsa_ = set_default_option(options_gsa_,'namlagendo',[]);
0042 options_gsa_ = set_default_option(options_gsa_,'namexo',[]);
0043
0044 if options_gsa_.redform & ~isempty(options_gsa_.namendo) & ~options_gsa_.load_mh,
0045 redform_map(options_gsa_.namendo, options_gsa_.namlagendo, options_gsa_.namexo, ...
0046 options_gsa_.load_redform, options_gsa_.pprior, options_gsa_.logtrans_redform, ...
0047 options_gsa_.threshold_redform, options_gsa_.ksstat_redform, ...
0048 options_gsa_.alpha2_redform, OutputDirectoryName);
0049 end
0050
0051
0052 options_gsa_ = set_default_option(options_gsa_,'rmse',0);
0053 options_gsa_ = set_default_option(options_gsa_,'var_rmse',options_.varobs);
0054 options_gsa_ = set_default_option(options_gsa_,'load_rmse',0);
0055 options_gsa_ = set_default_option(options_gsa_,'pfilt_rmse',0.1);
0056 options_gsa_ = set_default_option(options_gsa_,'istart_rmse',1);
0057 options_gsa_ = set_default_option(options_gsa_,'alpha_rmse',0.002);
0058 options_gsa_ = set_default_option(options_gsa_,'alpha2_rmse',0.5);
0059 options_.opt_gsa = options_gsa_;
0060 if options_gsa_.rmse,
0061 if options_gsa_.pprior
0062 a=load([OutputDirectoryName,'\',fname_,'_prior']);
0063 else
0064 a=load([OutputDirectoryName,'\',fname_,'_mc']);
0065 end
0066 if ~isfield(a,'stock_filter'),
0067 dynare_MC([],OutputDirectoryName);
0068 options_gsa_.load_rmse=0;
0069 end
0070 filt_mc_(options_gsa_.var_rmse, options_gsa_.load_rmse, options_gsa_.pfilt_rmse, ...
0071 options_gsa_.alpha_rmse, options_gsa_.alpha2_rmse, OutputDirectoryName, ...
0072 options_gsa_.istart_rmse);
0073 end
0074
0075
0076 options_gsa_ = set_default_option(options_gsa_,'glue',0);
0077 if options_gsa_.glue,
0078 dr_ = oo_.dr;
0079 if options_gsa_.ppost
0080 load([OutputDirectoryName,'\',fname_,'_post']);
0081 DirectoryName = CheckPath('metropolis');
0082 else
0083 if options_gsa_.pprior
0084 load([OutputDirectoryName,'\',fname_,'_prior']);
0085 else
0086 load([OutputDirectoryName,'\',fname_,'_mc']);
0087 end
0088 end
0089 nruns=size(x,1);
0090 gend = options_.nobs;
0091 rawdata = read_variables(options_.datafile,options_.varobs,[],options_.xls_sheet,options_.xls_range);
0092 rawdata = rawdata(options_.first_obs:options_.first_obs+gend-1,:);
0093 if options_.loglinear == 1
0094 rawdata = log(rawdata);
0095 end
0096 if options_.prefilter == 1
0097 data = transpose(rawdata-ones(gend,1)*bayestopt_.mean_varobs);
0098 else
0099 data = transpose(rawdata);
0100 end
0101
0102 Obs.data = data;
0103 Obs.time = [1:gend];
0104 Obs.num = gend;
0105 for j=1:size(options_.varobs,1)
0106 Obs.name{j} = deblank(options_.varobs(j,:));
0107 vj=deblank(options_.varobs(j,:));
0108
0109 jxj = strmatch(vj,lgy_(dr_.order_var,:),'exact');
0110 js = strmatch(vj,lgy_,'exact');
0111 if ~options_gsa_.ppost
0112 y0=zeros(gend+1,nruns);
0113 nb = size(stock_filter,3);
0114 y0 = squeeze(stock_filter(:,jxj,:)) + ...
0115 kron(stock_ys(js,:),ones(size(stock_filter,1),1));
0116 Out(j).data = y0';
0117 Out(j).time = [1:size(y0,1)];
0118 else
0119 Out(j).data = jxj;
0120 Out(j).time = [pwd,'\',DirectoryName];
0121 end
0122 Out(j).name = vj;
0123 Out(j).ini = 'yes';
0124 Lik(j).name = ['rmse_',vj];
0125 Lik(j).ini = 'yes';
0126 Lik(j).isam = 1;
0127 Lik(j).data = rmse_MC(:,j)';
0128
0129 if ~options_gsa_.ppost
0130 y0 = squeeze(stock_smooth(:,jxj,:)) + ...
0131 kron(stock_ys(js,:),ones(size(stock_smooth,1),1));
0132 Out1(j).name = vj;
0133 Out1(j).ini = 'yes';
0134 Out1(j).time = [1:size(y0,1)];
0135 Out1(j).data = y0';
0136 else
0137 Out1=Out;
0138 end
0139 ismoo(j)=jxj;
0140
0141 end
0142 jsmoo = size(options_.varobs,1);
0143 for j=1:M_.endo_nbr,
0144 if ~ismember(j,ismoo),
0145 jsmoo=jsmoo+1;
0146 vj=deblank(M_.endo_names(dr_.order_var(j),:));
0147 if ~options_gsa_.ppost
0148 y0 = squeeze(stock_smooth(:,j,:)) + ...
0149 kron(stock_ys(j,:),ones(size(stock_smooth,1),1));
0150 Out1(jsmoo).time = [1:size(y0,1)];
0151 Out1(jsmoo).data = y0';
0152 else
0153 Out1(jsmoo).data = j;
0154 Out1(jsmoo).time = [pwd,'\',DirectoryName];
0155 end
0156 Out1(jsmoo).name = vj;
0157 Out1(jsmoo).ini = 'yes';
0158 end
0159 end
0160 tit(M_.exo_names_orig_ord,:) = M_.exo_names;
0161 for j=1:M_.exo_nbr,
0162 Exo(j).name = deblank(tit(j,:));
0163 end
0164 if ~options_gsa_.ppost
0165 Lik(size(options_.varobs,1)+1).name = 'logpo';
0166 Lik(size(options_.varobs,1)+1).ini = 'yes';
0167 Lik(size(options_.varobs,1)+1).isam = 1;
0168 Lik(size(options_.varobs,1)+1).data = -logpo2;
0169 end
0170 Sam.name = bayestopt_.name;
0171 Sam.dim = [size(x) 0];
0172 Sam.data = [x];
0173
0174 Rem.id = 'Original';
0175 Rem.ind= [1:size(x,1)];
0176
0177 if options_gsa_.ppost
0178 Info.dynare=M_.fname;
0179 Out=Out1;
0180 save([OutputDirectoryName,'\',fname_,'_post_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info', 'Exo')
0181
0182
0183 else
0184 if options_gsa_.pprior
0185 save([OutputDirectoryName,'\',fname_,'_prior_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem')
0186 Out=Out1;
0187 save([OutputDirectoryName,'\',fname_,'_prior_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem')
0188 else
0189 save([OutputDirectoryName,'\',fname_,'_mc_glue'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem')
0190 Out=Out1;
0191 save([OutputDirectoryName,'\',fname_,'_mc_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem')
0192 end
0193 end
0194
0195 end