阻滞增长模型求解_华萌奖学金得主分享 | 求解DSGE:dynare新手入门

本文由华萌奖学金得主贾宁远分享,介绍了如何使用Dynare数值求解DSGE模型。文章详细讲解了模型设定、时间变量处理、 Dynare程序编写步骤,以及求解结果的解读。通过一个简单的阻滞增长模型,展示了如何分析消费、投资、利率等变量随生产率波动的变化。
摘要由CSDN通过智能技术生成

6ebc8eaf7d7f33c3e48503d8ec460ede.png

作者为第五届华萌海外深造奖学金得主,现于伦敦政治经济学院攻读博士学位

伦敦政治经济学院

贾宁远

Dynare是经济学中常用的用来数值求解DSGE模型的工具,本文分享来自Universityof Notre Dame的Eric Sims的dynare使用笔记。

  (一)模型设定

考虑一个简单的DSGE模型:socialplanner的目标函数如下,最大化消费者一生的期望总效用。

279a6cc0c35791daaed7539f1902a025.png

社会生产函数为C-D生产函数形式0f8865c2794d2fdbb21b12315a7758c9.png,并使用资本和劳动作为投入,简化起见假设消费者每期均投入单位劳动力,即6345b677464c4658eec0e3277dae1602.png. 其中310c11d3c1c1b03ccf22fed67d4c4b17.png为全要素生产率(TFP),服从AR(1)的随机过程。

  577664c7e774044bc8a00e6a9a14c3d4.png

最终消费品也同时可用于投资,即social planner每期进行生产后,可决定将其中一部分用于消费以获得当期效用,剩余的进行投资用于增加下一期的资本。资本每期将会有f4e8c24268502cb6e6c36a41f6138c66.png的折旧,每一单位资本将会有f078d9970e9a1670ba9684fd7d46c559.png单位资本可用于下一期的生产,因此有

2649ba73a36fef3cae185c3d03989a26.png

social planner将会选择每期的消费来使得社会资源满足上述资源约束,并且消费者效用最大化。数学求解可知,最优解满足以下条件:

5d56dcefc250909be37f0b66a4014014.png

除了每期消费和投资之外,我们也想要研究每期实际利率,工资和资产回报率的变化情况,根据厂商利润最大化条件,实际利率,工资和资产回报率满足以下条件

a74ccae400539941c62ccc75c708eeb4.png

在求解模型之前需要对参数进行设定,方便起见在此设9f87e3850adacd1492e99be0e399df65.png,生产率变化的标准差设为0.01. 实际使用中需要根据现实数据识别参数。给定这些设定,我们将要研究每期最优消费和投资决策,以及每期变量随着生产率波动的变化趋势。

(二)模型时间设定

在使用dynare进行模型求解前,需要注意每个变量的时间设定。与我们一般公式书写中不同,在dynare中,每期的已知变量(比如期初资本存量79cce31c6aaf5cce182c31520af4e1f0.png)的时间角标为t-1而非t。因此为了使我们公式和dynare的模型设定一致,我们重新书写所有最优条件如下:

3e73933c7e7bb6dae913d383f63ee237.png

与上文对比可知,我们在此只是将79cce31c6aaf5cce182c31520af4e1f0.png改为了583e1e5fb44506a91c710073ef0199b4.png.

(三)Dynare程序

在求解完最优条件和设定完参数之后,我们可以将这些信息告诉dynare,dynare将根据这些求解出每期相应的变量。

Dynare程序编写的第一步是声明模型中需要求解的变量。在上述方程组中,我们需要求解的变量有消费0c55881e5268aab63841a0552e2ca81c.png,资本79cce31c6aaf5cce182c31520af4e1f0.png,产出518f74e603685f9b6cd38c8d3fce1c71.png,投资0fc5fc70f501ce1a8b580887208e43f7.png,各种价格b35c4b57a0ecf30b9c37706efe0ab776.png.以及生产率47cb57df0dd75a8f5b1ffaba7e093bb8.png。程序的第一行以var开头来声明变量,后面接所有变量的字母如下,并以分号结尾:

a8fb8c3ab0cdf918d2f0f1e765106672.png

接下来需要声明外生变量,即这里对tfp的外生冲击eea4d6fba65a4600953be9f34f1f749c.png,以varexo开头,后接所有的外生变量:

3f2770102067c5a61c0ac2da817aa1af.png

接下来需要声明模型预先给定的参数,以parameters开头,后接所有参数:

562f0a1792a1dbcfe847783254c2752c.png

紧接着这条命令之后,需要对所有的参数进行赋值:

e78c60dcecacddcf85327757cc00498d.png

以上命令设定了模型所有变量和参数,接下来需要设定模型的最优条件:这部分以model开头,以end结尾,中间添加所有的模型条件。通常情况下我们会对模型对数化并研究各个变量对数化的变化而非其本身的变化,因此在声明模型时我们可以将变量写为exp(x)的形式来使dynare求解对数化后的变量值。由于每个变量均有时间角标,在dynare中对于时间t的变量,书写方式为该变量本身,即637627f8d83454a6a4c80b9a4352c3dd.png写为x。对于时间t-1的变量,需要加上”(-1)”,即128ff20d60459b139eb42722c77a00a9.png写为x(-1). 对于时间t+1的变量,需要加上”(+1)”,即128ff20d60459b139eb42722c77a00a9.png写为x(+1). 将上面所有最优条件写入dynare文件,该部分代码如下:

6b5e39c0e7c33178c1f309312bba6b9b.png

0dc0ca2180f33203146462771880e929.png

接下来需要告诉模型steady state或者其近似值,如果给定初始steady state过于离谱,dynare可能不会收敛并且报错。Dynare将会根据给定的steady state猜测值求解steady state。在给定steady state时,注意以上所有变量已经对数化,因此要给对数化之后的值。注:steady state的值为每个变量增长速率不在变化时的变量值。这部分代码以initval开头,end结尾,中间输入每个变量steady state的值或近似。

2da182a4cb3ecdc152132b3a76291d9d.png

给定模型steady state猜测值之后,需要对模型外生冲击变量的波动程度(方差),这部分以shock开头,end结尾,中间用var来声明方差:

5299c3e2d7ae9d560a4839d70fcd1dac.png

声明完冲击后,为了使dynare求解steady state,我们在下一行写上:

d669431f4f49006b333590b5f8b693bb.png

以上命令已经将模型所有设定声明结束,接下来只需要告诉dynare需要求解的方法和展示结果的方式即可,该命令为stoch_simul,该命令有很多参数,不做深入讨论,详见dynare手册关于该命令的参数解释。这里使用的命令为使用一阶近似,画出20期的脉冲响应图。

8c1772aab00ed7a1169a16af645ee814.png

我们将所有命令保存为”.mod”文件后,在matlab命令行界面转入保存.mod文件的文件夹,输入dynare 文件名即可使用dynare获得求解结果,如这里保存为 test.mod,matlab界面输入

c79e5a59060d22f7ede3e319464e7d11.png

(四)Dynare输出结果

在matlab结果界面,首先有steady state的每个变量数值

4a79b999bb71c5dcf6afd0fdcb64e63a.png

接下来时模型总结,即每种变量的个数,以及冲击变量的相关关系矩阵。dynare将内生变量分为state variable,jumper和static variable,dynare分类方法和正常分类不同,其完全按照变量在程序中的时间角标进行区分。变量以t-1时间出现则为state,变量以t+1出现则为jumper,变量只在t时间出现则为static,所以在dynare一个变量可以既是state又是jumper。三种变量加起来数量可能大于总变量数。如下图2+2+5>8

ce2b60b745c0bc859cfae06d3a80e366.png

483726bf2e247de0c53cb0572429deec.png

再往下时政策方程,constant一行表示每个变量的steady state数值,其余两行则反应每个变量与state variable的关系,即policy function

40cc8b88ccbc2a1d442d2243bbda97ae.png

另外,dynare会求解每个内生变量的均值方差自相关系数如下,以及他们之间的相关性矩阵

7837feecdefb2994677a3cc2996c6db0.png

3a3458fdd36a45edceb305e1a4450804.png

同时,dynare会绘制出每个变量的脉冲响应图如下:

e1c7040410ae59d9ea9ec8f945933782.png

17d79b9b64a9ff8c6a9e0a795b5bebc7.png

e2088d1f4461f207862b7a83844df867.pnge2088d1f4461f207862b7a83844df867.png

上海华萌教育发展基金会是由复旦大学华民教授倡议,并与他的学生们共同发起成立的一个以“资助学子、深造成才、报效中华、经世济民、回馈社会”为宗旨的非公募的公益性基金会。基金会主要提供海外深造奖学金来奖励和支持优秀大学生,赴海外大学深造攻读经济类专业博士学位,为国家培养经济学研究的明日之才。

b3371773090b28511201b332e8574f59.png

华民教授现为复旦大学世界经济研究所教授、博士生导师。兼任国家发改委“十三五”规划委员会专家委员、国家商务部经贸政策咨询委员会专家、国家工商总局市场监督专家委员会专家、国家教育部社会科学委员会委员、中国美国经济学会副会长、上海市民营企业研究会副会长等职,长期从事国际经济和世界经济的研究和教学工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值