楼主: rastila
67330 187

[经济学模型] DSGE模型讨论之七——最简单的DSGE模型的Dynare模拟和MLE,Bayesian估计   [推广有奖]

51
rastila 在职认证  发表于 2012-4-16 20:37:41
zxlmailbox 发表于 2012-4-16 18:38
楼主,一直都在看你的帖子,觉得你在学术上有自己独特的见解,想请教你一个问题关于模型方面的,是否有多重 ...
感谢对我的关注。多重均衡首先是个数学问题,因为差分方程组的解只有三类:无穷多解,单一解,无解。但无法出现两个解或者是三个解的情况。

但你问的问题很好,让你能够深入探索下去。

52
zhangxiaozhang 发表于 2012-4-24 22:02:46
kankan

53
Lizmc 发表于 2012-4-25 03:51:58
我也來看看吧

54
rastila 在职认证  发表于 2012-4-28 05:29:53
mj2012 发表于 2012-4-7 21:58
谢谢老师,对比了一下文件,出错在这里:
stoch_simul(periods=900,order=1,irf=40,drop=400,nograph) y x ...
你把calibrate的初值设定为
beta=0.3;
rho=0.9;
然后用
stoch_simul(periods=900,order=1, irf=40,drop=400,aim_solver) y x;
看在你电脑上能跑出结果不,上次结果是矩阵维度塌下来了。一般都是因为transition equation除了问题,需要重新calibrate。

最后你同时估计两个参数
varobs y x;
estimated_params;
rho, normal_pdf, 0.7, 0.2;
beta, normal_pdf, 0.7, 0.2;
end;

end;

55
mj2012 发表于 2012-4-28 06:15:38
rastila 发表于 2012-4-28 05:29
你把calibrate的初值设定为
beta=0.3;
rho=0.9;
还是那样的错误。

56
rastila 在职认证  发表于 2012-4-28 13:21:34
mj2012 发表于 2012-4-28 06:15
还是那样的错误。
我把整个程序复制在这里,这个在我不同的电脑上已经检验过了,是正常的
var x y;
varexo e u;

parameters rho beta;
beta=0.3;
rho=0.9;
model(linear);
y=beta*y(+1)+x+u;
x=rho*x(-1)+e;
end;

shocks;
var e; stderr 0.1;
var u; stderr 0.1;
end;


stoch_simul(periods=900, order=1,irf=40,aim_solver) y x;

save Simul_data y x;

varobs y x;
estimated_params;
rho, normal_pdf, 0.7, 0.2;
beta, normal_pdf, 0.7, 0.2;
end;


estimation(datafile=Simul_data,mh_replic=200,mh_nblocks=2,  order=1) y x;








57
rastila 在职认证  发表于 2012-4-28 13:41:34
mj2012 发表于 2012-4-28 06:15
还是那样的错误。
部分图形结果如下,分别是prior-posterior, smoothed shocks, historical and smoothed variables
LRE_pri_po.jpg
smoothed shocks.jpg
his_and_smoothed var.jpg

58
mj2012 发表于 2012-4-28 16:01:27
rastila 发表于 2012-4-28 13:21
我把整个程序复制在这里,这个在我不同的电脑上已经检验过了,是正常的
var x y;
varexo e u;
您提供的这个程序是正确的,把您的程序和我的比较了一下,通过逐步试验,错误原因在这里:
estimation(datafile=Simul_data,prefilter=1,mh_replic=200,mode_compute=1,mh_nblocks=2,  order=1) y x;

看了一下手册,
13. mode compute=INTEGER: speci es the optimizer for the mode computation.
0: the mode isn't computed. mode le must be speci ed
1: uses Matlab fmincon (see the Reference Manual to set options for this command).
2: uses Lester Ingber's Adaptive Simulated Annealing.
3: uses Matlab fminunc.
4 (default): uses Chris Sim's csminwel.

在不用aimsover时,mode compute=1或2都不行,但用3和4可以,这个函数应该是用来求似然函数最大值的吧?
而在用aimsolver时,model computer=1、2和3都不行,但4可以。
请问:从metroplis-hasting算法来看,是不是只要模型存在稳态就应该能估计出一个值来?


59
rastila 在职认证  发表于 2012-4-28 19:20:28
mj2012 发表于 2012-4-28 16:01
您提供的这个程序是正确的,把您的程序和我的比较了一下,通过逐步试验,错误原因在这里:
estimation(d ...
不一定。能不能估计出来值这是个非常复杂的事情。

这完全联系到我们如何parameterisation的问题,参数设置表面上看起来是影响BK条件,这是个非常肤浅的认识,实际上影响远比这个深,参数的变化会影响Kalman filter的循环型。一旦在循环过程作发现Hessian matrix或者是covariance matrix非常接近singularity,会破坏掉系统的平衡。后面和他们相乘后的矩阵得到的矩阵也会呈现singularity。然后算法会自动停在某个非mode的点上,同时整个程序就会停下来。

你如果有注意的话,mode_compute=6是“抗震”能力非常强的算法,不像其他算法那样脆弱。如果其他算法弄不出来的情况,我们往往会用6,但是仍然很少有人用。就是因为这是个暴力算法跟真正的optimization routine构造完全不同,非常没有效率,我试过一个18个方程的DSGE,8个shocks,2000 periods,8条马尔科夫链,分别长度为20万,估计12个参数。我笔记本电脑用了11多小时才跑完。



60
waveland 发表于 2012-5-1 07:17:16
请问楼主是用什么软件做的估计和模拟啊?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-27 01:10