但是,让dynare去完成相应的计算,也并不意味着可以不用理解后面的原理。尤其是BK条件。我相信这是大家最烦看到的错误信息。更多地理解例如贝叶斯计量的内容,会提高运用dynare的能力。
对于初次使用dynare的同学,建议用简单的RBC模型去验证就可以了。对于我个人来说,编写程序的最基础的内容是要确保自己的模型推导无误。目前,我没有试过非线性化的模型编程。理由是它需要额外地编写稳态模型。这个尚未尝试过,因此不做评价。(有此经验的同学可跟进补充或发新帖。)
Jordi Gali的书是大家经常用来练手的,可惜他老人家的线性化方法有点“与众不同”。不熟悉的同学推荐看看Carl Warsh的第二章附录。他的方法是目前比较常用的。(需要说明的是,两者之间没有对与错。只是处理的方法稍有不同。)他的网站上有.mod文件,编程之后,大家可以去比照一下。多说一句,Carl的第二章MIU非常有意思。正文里都是用Bellman方程,而到了后面附录全部的推导都是用拉格朗日函数方法。看看初学的同学是否能够适应过来这两种方法。
编程的另一个重要方面,就是要认真地比照自己的模型。看看是否有typos。尤其是timing,例如对于变量k,kbar,b等,即资本投入,资本存量和债券投资等。建议最好隔一段时间去检查一下。有的时候不符合BK条件,就是因为你的timing出了问题。
我个人觉得参数校准,如果你不是用特别另类的模型,一般都是找得到标准参数值的,例如beta=0.98-0.99等。当然,你要是自己以后做研究,可能会遇到非标准参数,那就需要自己通过计量方法去获取了。
小小经验提示下,你在编程的时候,在模型方程输入完成的end;之后,一定要加入resid(1);这个命令。这是用来检查你的每个方程的residuals是否为零。当然,学过编程的同学都知道,这不是严格意义上的零,而是在dynare允许的误差之内的“零”。如果,你放到Matlab,即使一样的方程和参数,会告诉你与dynare不用的residuals。有的时候,因为参数不对,会造成无解。如果没有这个命令,你可能一下子想不到哪里会出问题。
此外,如果你用“check”命令,发现你的eigenvalue的模有1出现了,你就要特别注意了。你的参数或者模型绝对有问题。单位根不是很受欢迎。
先说这么多吧,经验是靠积累的。大家一起来分享吧。帮助别人的时候,也是帮助自己哈。



雷达卡




京公网安备 11010802022788号







