xu_junyi 发表于 2013-8-1 10:44
USER GUIDE没有介绍历史方差分解这一块啊,能加个好友吗?QQ:806020185
历史方差分解应该是在参数推定里面可以遇到的吧,发给你一个dynare的代码,运行过以后会自动生成一个excel的文档,打开以后把数据做成图表就是你说的历史方差分解吧?具体的我也在学,应为参数估计这一块我学的不好,不一定能帮到你
var x ppi a ii v ppiact;
varexo e u errppi;
parameters beta gamma omega phi_pi phi_y rho_A rho_v;
beta = 0.99;
gamma = 1;
omega = 0.8;
phi_pi = 0.5;
phi_y = 0.5;
rho_A = 0.9;
rho_v = 0.9;
model(linear);
# kappa = (1-omega)*(1-omega*beta)*(gamma+1)/omega;
ppi = beta*ppi(+1)+kappa*x;
x = x(+1)-(ii-ppi(+1))+(rho_A-1)*a;
ii = (phi_pi+1)*ppi + phi_y*x + v;
a = rho_A*a(-1) + e;
v = rho_v*v(-1) + u;
ppiact = ppi + errppi;
end;
shocks;
var e; stderr 0.5;
var u; stderr 0.5;
var errppi; stderr 0.5;
end;
steady;
check;
estimated_params;
gamma, gamma_pdf, 1, 0.5;
omega, beta_pdf, 0.8, 0.1;
phi_pi, gamma_pdf, 0.5, 0.25;
phi_y, gamma_pdf, 0.5, 0.25;
rho_A, beta_pdf, 0.8, 0.05;
rho_v, beta_pdf, 0.8, 0.1;
stderr e, inv_gamma_pdf, 0.5, 0.5;
stderr u, inv_gamma_pdf, 0.5, 0.5;
stderr errppi, inv_gamma_pdf, 0.5, 0.5;
end;
varobs x ppiact ii;
estimation(datafile=dset, mh_replic=125000, mh_drop = 0.25, mh_nblocks=2, mh_jscale=0.7, mode_compute = 4);
shock_decomposition;
util_csvwrite('histdecomp_x.csv',reshape(oo_.shock_decomposition(1,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'x'});
util_csvwrite('histdecomp_pi.csv',reshape(oo_.shock_decomposition(2,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'pi'});
util_csvwrite('histdecomp_i.csv',reshape(oo_.shock_decomposition(4,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'i'});
util_csvwrite('histdecomp_piact.csv',reshape(oo_.shock_decomposition(6,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'piact'});
chain1 = [];
chain2 = [];
for i = 1:11
load(strcat('./NK_Linear_EST/metropolis/NK_Linear_EST_mh',num2str(i),'_blck1.mat'))
chain1 = [chain1; x2];
load(strcat('./NK_Linear_EST/metropolis/NK_Linear_EST_mh',num2str(i),'_blck2.mat'))
chain2 = [chain2; x2];
end
varnames = {'gamma', 'omega', 'phi_pi', 'phi_y', 'rho_A', 'rho_v', 'stderr_e', 'stderr_u', 'stderr_errppi'};
util_csvwrite('chain1.csv',chain1, varnames);
util_csvwrite('chain2.csv',chain2, varnames);