Merge pull request #1017 from JohannesPfeifer/gsa_fix

Fix bugs in gsa with morris and posterior sampling
time-shift
Houtan Bastani 2015-09-09 11:44:49 +02:00
commit 268384572b
4 changed files with 75 additions and 6 deletions

View File

@ -150,14 +150,12 @@ if ~loadSA,
if options_.opt_gsa.ppost || (options_.opt_gsa.ppost==0 && options_.opt_gsa.lik_only==0)
skipline()
disp('Computing RMSE''s...')
fobs = options_.first_obs;
nobs=options_.nobs;
for i=1:size(vvarvecm,1),
vj=deblank(vvarvecm(i,:));
jxj(i) = strmatch(vj,lgy_(dr_.order_var,:),'exact');
js(i) = strmatch(vj,lgy_,'exact');
yss(i,:,:)=repmat(sto_ys(:,js(i))',[nobs,1]);
yss(i,:,:)=repmat(sto_ys(:,js(i))',[gend,1]);
end
if exist('xparam1','var')
[alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK] = DsgeSmoother(xparam1,gend,Y,data_index,missing_value);
@ -171,7 +169,7 @@ if ~loadSA,
for j=1:length(filfilt),
load([DirectoryName filesep M_.fname '_filter_step_ahead',num2str(j),'.mat']);
nb = size(stock,4);
y0(:,:,nbb+1:nbb+nb)=y0(:,:,nbb+1:nbb+nb)+squeeze(stock(1,js,1:nobs,:));
y0(:,:,nbb+1:nbb+nb)=y0(:,:,nbb+1:nbb+nb)+squeeze(stock(1,js,1:gend,:));
nbb=nbb+nb;
clear stock;
end
@ -180,7 +178,7 @@ if ~loadSA,
for j=1:length(filupdate),
load([DirectoryName filesep M_.fname '_update',num2str(j),'.mat']);
nb = size(stock,3);
yobs(:,:,nbb+1:nbb+nb)=yobs(:,:,nbb+1:nbb+nb)+squeeze(stock(js,1:nobs,:));
yobs(:,:,nbb+1:nbb+nb)=yobs(:,:,nbb+1:nbb+nb)+squeeze(stock(js,1:gend,:));
nbb=nbb+nb;
clear stock;
end
@ -208,7 +206,13 @@ if ~loadSA,
disp('... done!')
if options_.opt_gsa.ppost
save([OutDir,filesep,fnamtmp,'.mat'], 'x', 'logpo2', 'likelihood', 'rmse_MC', 'rmse_mode','rmse_pmean', 'r2_MC', 'r2_mode','r2_pmean')
save([OutDir,filesep,fnamtmp,'.mat'], 'x', 'logpo2', 'likelihood', 'rmse_MC', 'r2_MC')
if exist('xparam1_mean','var')
save([OutDir,filesep,fnamtmp, '.mat'], 'rmse_pmean', 'r2_pmean','-append')
end
if exist('xparam1','var')
save([OutDir,filesep,fnamtmp,'.mat'], 'rmse_mode', 'r2_mode','-append')
end
else
if options_.opt_gsa.lik_only
save([OutDir,filesep,fnamtmp, '.mat'], 'x', 'logpo2','likelihood', '-append')

View File

@ -9,6 +9,7 @@ MODFILES = \
gsa/ls2003.mod \
gsa/ls2003a.mod \
gsa/cod_ML_morris/cod_ML_morris.mod \
gsa/morris/nk_est.mod \
ramst.mod \
ramst_a.mod \
ramst_static_tag.mod \
@ -405,6 +406,7 @@ EXTRA_DIST = \
expectations/expectation_ss_old_steadystate.m \
steady_state/walsh1_old_ss_steadystate.m \
data/test.xls \
gsa/morris/nk_est_data.m \
analytic_derivatives/fsdat_simul.m \
fs2000/fsdat_simul.m \
k_order_perturbation/run_fs2000kplusplus.m \

View File

@ -0,0 +1,61 @@
//conducts posterior sampling with morris=1 and morris=2 and rmse
var y l w pi r A dy pic;
varexo eps_A eps_P;
parameters PSI ETA BETA ALPHA KAPPA PI RHO;
PSI = 1;
ETA = 2;
BETA = 0.95;
KAPPA = 0.5;
ALPHA = 0.99;
PI = 1.005;
RHO = 0.9;
model;
y = exp(A)*l; //production function
w/y = PSI * l^ETA;//labor supply
BETA*1/y(+1)*r/pi(+1)=1/y;//saving
log(pi) = ALPHA*log(pi(-1))+(1-ALPHA) * log(pi(+1)) + KAPPA*log(w/exp(A))+eps_P;//inflation
log(r*BETA/PI) = 1.5*log(pi/PI);
A = RHO*A(-1)+eps_A;
//observable variables
dy = log(y)-log(y(-1));
pic= log(pi)-log(PI);
end;
steady_state_model;
A = eps_A;
w = exp(A);
pi = PI;
l = (1/PSI)^(1/(1+ETA));
y = exp(A)*l;
r = PI/BETA;
end;
shocks;
var eps_A;
stderr 0.01;
var eps_P;
stderr 0.01;
end;
steady;
check;
varobs dy pic;
estimated_params;
ETA,3.7,0.00000001,10,GAMMA_PDF,5,1;
KAPPA,0.3,0.00000001,0.99999999999,beta_PDF,0.5,0.1;
stderr eps_A,0.02,0.000000000001,100,INV_GAMMA2_PDF,0.2,inf;
stderr eps_P,0.03,0.000000000001,100,INV_GAMMA2_PDF,0.2,inf;
end;
estimation(order=1,prior_trunc=0,plot_priors =0, datafile=nk_est_data,conf_sig =.95,smoother,moments_varendo,filtered_vars,mode_check,mode_compute=4,mh_replic=5000,mh_jscale=1.5,mh_nblocks=1,bayesian_irf) y pi l dy pic;
dynare_sensitivity (pprior=0,ppost=1,datafile=nk_est_data,rmse=1, nsam = 2000, lik_only = 0, morris = 2,var_rmse=(dy pic)) ;
dynare_sensitivity (pprior=0,ppost=1,datafile=nk_est_data,rmse=1, nsam = 2000, lik_only = 0, morris = 1,var_rmse=(dy pic)) ;

View File

@ -0,0 +1,2 @@
dy=[-0.0164149606036333;-0.00444371301272480;-0.0207795284866737;0.0215820786048762;-0.0312134320780645;-0.00512948534530982;-0.00816441138903740;-0.00920043474284587;-0.00444588962592387;0.00990037151297068;-0.000302205963798416;0.0109144391005480;0.0206507032511272;-0.0255857842135019;0.0299198619790592;0.0142546980534387;0.00859492177250059;-0.0303314095678154;0.00899356446332817;-0.00604285895266747;0.0314719484936994;0.00774369700013479;-0.00392718531930176;0.0241656580707182;0.0194253385156230;0.0141073525966933;-0.0151806414891996;0.000550251173616845;0.0208456942892510;0.00560322075594884;0.00853240749768242;0.0164247183007063;-0.0368678800477706;-0.0185742571903465;-0.0173299635271128;0.000103201182005248;0.00328678857263721;0.0194237364814262;-0.0121878074879048;0.00324521362781441;0.0165910450130083;0.0118896697975725;-0.00616860319246618;-0.0291333058623287;0.00172296531042425;0.00171010632823477;-0.0154041449407641;-0.0148257487058540];
pic=[-0.00435379489058567;-0.00435180828101745;-0.00817200970941144;-0.00842731261556473;-0.00951737126246006;-0.00886695915875320;-0.00604500733828971;-0.00540405598174093;0.00102138053045196;-0.00722842198263155;-0.00536250628245237;0.0143162753757018;0.00155729167142129;0.00794856841256976;0.00238632941368923;-0.00462579231860141;-0.00181553037594265;-0.00296814609653130;-0.00202489064931017;-0.00392682471012871;-0.00315893888873626;-0.00148200892054426;-0.00361797343071696;0.00393560470670129;0.00391822514942049;0.00709945122442479;0.0192754219330497;0.00950736196030246;0.0175065926305598;0.00444328018119639;-0.00497676719276699;-0.0163242287845185;-0.0131904917611750;-0.00513290322220038;-0.00282079685563725;0.00319215754813894;0.00238719485546936;0.00189456749063194;0.00208023344838363;0.0150119063295650;0.00613925617677741;0.00835197635546318;0.00687792801237943;-0.000973779982694851;-0.00165376676530256;-0.000219020842051647;-0.00244790436135745;0.000238009254825620];