推文人 | 许文立 许坤
注:我们去年已经介绍过用Stata15来操作DSGE的宏观政策分析(参见Stata跑DSGE:DSGE建模与编程入门(番外篇)),而且陈强老师今年也强烈推荐过Stata15的重磅更新(参见重磅!Stata 15的新模块(六):DSGE模型,另一重磅更新为空间计量:Stata空间计量:从截面数据到空间面板)。但是,我们今天推送这篇文章的最直接原因在于,前些天某盈利公号也推送了Schenck(2017)的文章,但是连引用都没有,最遗憾的是翻译得较差,这对于国内的DSGE起步与推广会产生极大的负外部性。我们花了两年多时间在国内介绍、推广DSGE,初心是吸引广大的年轻学者和学生进入到宏观经济与政策分析领域,并尽我们所能带来“无偏”的DSGE理论与应用(当然,肯定也有很多错误,因此,我们尽可能详细的给出参考文献和出处,以便大家回查原文和原意)。但是,当我们看到某些急功近利的公号把“shock”翻译成了“激波”之后,感觉之前的工作被瞬间拉回了两年前。一个高大上的“冲击”瞬间变成了孩童手中的镭射激光枪——“biubiu~biubiu~”。好了,下面进入正题吧。
导读:动态随机一般均衡(DSGE)已经成为宏观经济与政策分析的中流砥柱。我们对于DSGE的介绍(技术性和非技术性)已经很多了(参见:【香樟推文0868】香樟话宏观经济前沿(由于种种原因,汇总的PDF版本并没有对外公布,如有兴趣,可以留言或发邮件索取。)、DSGE建模与编程汇总)。但是,DSGE仍然很难入门,其中很重要的原因在于Matlab、Dynare等编程较为复杂,或者国内大部分经济学者对于Matlab和Dynare都不熟悉,所以也无法指导学生进行相关研究。国内大部分老师和学生对Stata还是比较熟悉,因此,本文就向大家介绍一下DSGE用于宏观经济政策分析时,如何用Stata进行操作。
DSGE:宏观政策分析工具
David Schenck
1、什么是DSGE模型?
DSGE是动态随机一般均衡模型的缩写,该模型是用来建模多元时间序列。DSGE模型具有坚实的经济理论基础,即是说,模型经济中的个体和部门都是按照经济理论来进行决策,并相互产生影响。DSGE的优势就是明确建模了个体经济人的预期。
DSGE模型通常用于冲击(shock)和反事实(counterfactuals)分析。研究者可能会对模型经济施加一个不可预期的政策变化或者经济条件变化,并关注感兴趣的经济变量如何对这些变化作出响应(response)。例如,央行突然宣布降低利率,对GDP会产生什么影响?要稳增长、调结构,那么,是调整所得税更好,还是调整增值说更好,亦或者两种结合?等等
本文就是Schenck(2018)演示如何用Stata来估计DSGE模型的参数,如何产生脉冲响应(impulse response),如何比较两种不同政策机制下的脉冲响应。
2、估计模型参数
本文使用的是工业产出增长率和利率的月度数据 (注:DSGE模型参数有多种估计方法,stata使用的是极大似然估计法(ML),其他方法参见关于DSGE模型的几点回应) 。本文所使用的模型是三方程NK模型(详细的模型设定及推导过程,参见DSGE建模与编程入门(29):NK、程序及结果):企业生产产出(ip),央行设定利率(r)。在这个模型经济中,工业产出增长率依赖于未来预期利率和其他外生变量。利率依赖于当期产出增长率和其他隐变量。本文将影响产出的隐变量表示为e,影响利率的隐变量表示为m。
隐变量就是熟知的“状态变量”。对状态变量施加冲击,然后来考察冲击是如何影响整个模型经济系统的。将m的演化过程设定为AR(1)过程。为了给这个模型一些额外的动态,e的演化过程设定为AR(2)过程。完整模型为
DSGE模型中的公式(1)是产出方程,我们在stata里输入这个公式的时候,
首先,需要输入dsge;
然后,空格后,输入英文字符下的括号();
最后,将公式(1)输入到()中,输入形式为(ip={alpha}*E(F.r)+e)。
这个方程描述了工业产出增长是未来预期利率的函数。注意:所有的括号都用英文字符,E()期望算子,E(F.r)表示预期未来利率,F是前看forward,F.r则表示利率的前看变量。alpha是参数,因此,参数一定要用{ }。从上述参数估计结果可以看出,alpha的估计值为负,这意味着当预期到未来利率上升时,工业产出增长率会下降。
公式(2)时利率方程。在stata中输入该方程,即另起一行(r={beta}*ip+m)。仍然要注意方程外面要有小括号,参数要用{ }。Beta是政策参数,它表示政策制定者对产出变化的反应程度。我们看到beta的估计值为正。在繁荣时,政策制定者会提高利率,当经济衰退时,削减利率。但是,估计出的响应系数非常小。我们将ip的系数作为承诺政策规则,而将m表示成相机决策。
公式(3)时m的一阶自回归方程,它刻画了影响利率的相机决策机制。(3)在stata中为(F.m={rho}*m,state)。状态变量是前定变量,因此,时间传统就是状态方程根据状态变量的一期前看值来表示F.m。此外,状态方程带有state这个选项。误差项vt+1是默认的,因此,不用写。Rho的估计值为正意味着利率的持续性。
公式(4)是外生过程AR(2)。但是stata中输入了两行命令。因为为了在dsge命令中声明这个AR2过程,我们需要将其拆分为两个部分(参见尾注)。
3、冲击-脉冲响应
下面来看看经济对冲击的响应。首先,在stata中建立脉冲响应函数文件,并储存估计结果。
-
irf set命令创造一个文件——dsge_irf.irf来保存脉冲响应结果;
-
irf create estimated命令创造一系列的脉冲响应;
-
irf graph irf命令选择画出哪个冲击,哪个响应。下图仅仅画出了ip对e和m的响应图。
由上图可以看出,更加积极的利率政策会抑制产出对e的响应。政策制定者还可以选取另外一些beta值来执行政策实验,直到政策制定者找到一个何意的政策。
注:更多详细信息可以参见stata 手册。上述操作均在stata15中进行,我们没有找到、使用破解版stata15。版权所限,我们使用试用版,即到友万科技www.uone-tech.cn上申请StataV15试用。
数据来源:
尾注:
Specifying stateequations with long lags
See also [DSGE]intro 4c.
Notice thatstate variables are written in a state-space form in terms of theirone-period-ahead value. For an AR(1) process, this is easy. The equation
mt+1=ρmt+vt+1
becomes the following in Stata:
. dsge ... (F.m = {rho}*m, state) ...
But for an AR(2)process, the law of motion for the state variable is
et+1=θ1et+θ2et−1+ut+1
which we split into two equations:
(et+1et)=(θ11θ20)(etet−1)+(ut0)
These two equations become, in Stata,
. dsge ... (F.e = {theta1}*e + {theta2}*Le, state) (F.Le= e, state noshock) ...
where the noshock optionin the last equation specifies that it is exact.
See also [TS] sspace example 5, where asimilar trick is used.
许文立,安徽大学经济学院/安徽金融统计学会
许坤,中国人民大学财政与公共政策研究中心
参考文献:
-
David Schenck,2018,Dynamic stochastic general equilibriummodels for policy analysis,Stata blog.
-
David Schenck,2017,Estimating the parameters of DSGEmodels,Stata blog.
-
许文立等,DSGE建模与编程入门(2016-2018),宏观经济研学会
0
推荐