Home > . > dynare_sensitivity.m

dynare_sensitivity

PURPOSE ^

copyright Marco Ratto 2006

SYNOPSIS ^

function x0=dynare_sensitivity()

DESCRIPTION ^

 copyright Marco Ratto 2006

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function x0=dynare_sensitivity()
0002 % copyright Marco Ratto 2006
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 % map stability
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 % reduced form
0034 % redform_map(namendo, namlagendo, namexo, icomp, pprior, ilog, threshold)
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 % RMSE mapping
0051 % function [rmse_MC, ixx] = filt_mc_(vvarvecm, loadSA, pfilt, alpha, alpha2)
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     %save([fname_,'_post_glue_smooth'], 'Out', 'Sam', 'Lik', 'Obs', 'Rem','Info')
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

Generated on Fri 16-Jun-2006 09:09:06 by m2html © 2003