请教如何在dynare中做历史方差分解

请教如何在dynare中做历史方差分解,第1张

历史方差分解应该是在参数推定里面可以遇到的吧,发给你一个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 = 099;
gamma = 1;
omega = 08;
phi_pi = 05;
phi_y = 05;
rho_A = 09;
rho_v = 09;
model(linear);
# kappa = (1-omega)(1-omegabeta)(gamma+1)/omega;
ppi = betappi(+1)+kappax;
x = x(+1)-(ii-ppi(+1))+(rho_A-1)a;
ii = (phi_pi+1)ppi + phi_yx + v;
a = rho_Aa(-1) + e;
v = rho_vv(-1) + u;
ppiact = ppi + errppi;
end;
shocks;
var e; stderr 05;
var u; stderr 05;
var errppi; stderr 05;
end;
steady;
check;
estimated_params;
gamma, gamma_pdf, 1, 05;
omega, beta_pdf, 08, 01;
phi_pi, gamma_pdf, 05, 025;
phi_y, gamma_pdf, 05, 025;
rho_A, beta_pdf, 08, 005;
rho_v, beta_pdf, 08, 01;
stderr e, inv_gamma_pdf, 05, 05;
stderr u, inv_gamma_pdf, 05, 05;
stderr errppi, inv_gamma_pdf, 05, 05;
end;
varobs x ppiact ii;
estimation(datafile=dset, mh_replic=125000, mh_drop = 025, mh_nblocks=2, mh_jscale=07, mode_compute = 4);
shock_decomposition;
util_csvwrite('histdecomp_xcsv',reshape(oo_shock_decomposition(1,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'x'});
util_csvwrite('histdecomp_picsv',reshape(oo_shock_decomposition(2,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'pi'});
util_csvwrite('histdecomp_icsv',reshape(oo_shock_decomposition(4,:,:),5,76)' ,{'e', 'u', 'errppi', 'init', 'i'});
util_csvwrite('histdecomp_piactcsv',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),'_blck1mat'))
chain1 = [chain1; x2];
load(strcat('/NK_Linear_EST/metropolis/NK_Linear_EST_mh',num2str(i),'_blck2mat'))
chain2 = [chain2; x2];
end
varnames = {'gamma', 'omega', 'phi_pi', 'phi_y', 'rho_A', 'rho_v', 'stderr_e', 'stderr_u', 'stderr_errppi'};
util_csvwrite('chain1csv',chain1, varnames);
util_csvwrite('chain2csv',chain2, varnames);

主要有三个问题: 1、“for j=1:5” 的循环没有对应的 end; 2、文件主体是脚本,但在后面面出现了function定义; 3、里面的赋值语句“x10=x1(tf+1,1); x30=x1(tf+1,3); ”,x1没有定义。 更正建议: 1、在 function 前面一行加个 end; 2、函数 equ

主要有三个问题: 1、“for j=1:5” 的循环没有对应的 end; 2、文件主体是脚本,但在后面面出现了function定义; 3、里面的赋值语句“x10=x1(tf+1,1); x30=x1(tf+1,3); ”,x1没有定义。 更正建议: 1、在 function 前面一行加个 end; 2、函数 equ


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12619147.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存