Solow 模型 matlab 模拟代码

“一旦你开始思考(经济如何增长)这个问题,就无法再思考其他问题了。"
——罗伯特•卢卡斯(Robert E. Lucas)
Solow 模型的思想
1987 年诺贝尔经济学奖获得者罗伯特·默顿·索洛(Robert Merton Solow)于 2023 年 12 月 21 日去世,享年 99 岁。本博客的写作契机是为表达纪念1。
虽然索洛模型的假设比较严格2,如今已经让位给后面的模型,但他开创了新古典“经济增长”的分析范式,其结论产生的“全要素生产力”(索洛余值)成为了当代经济体最重要的评价指标(之一)。
其思想框架是,
- 将经济增长(产出)的贡献分解为几个基本要素:劳动、资本、技术进步、人口增长……
- 经济增长的过程就是要素变化的过程,我们可以尝试刻画要素增长的动态过程。
- 要素的动态变化存在收敛,从没有收敛走向收敛的要素时间变化图,就是一个经济体的平衡增长路径。
$$\dot{k}=f(k)$$
例如上面这个式子,简单来说,就是刻画人均资本增长率($\dot{k}$)和人均资本存量(${k}$)的关系。
收敛意味着人均资本增长到一定水平后,增长率很难继续增加,反而趋近于 0。表现在式子中就是: $△k=0=\dot{k}=f(k)$。
就像马尔萨斯人口陷阱,人均收入变高,人们富裕了,更容易生育,人口增多,人均收入就下降;人均收入下降,人们变穷了,会减少生育,人口变少,人均收入又上升。这个拉拉扯扯,让人均收入趋于稳定的过程,就是人均收入和人均收入变化率互相牵制的过程。
Solow 模型在这之上进行了更多的分解。
- 起点低,进步速度可能更快;起点高,进步速度可能更慢。
- Solow 模型想解释的是“低收入国家的发展速度早期大于高收入国家”这个现象。例如二战以后,战后的亚洲国家迎来了发展的黄金时期。战后大家偏好储蓄,这也启发 solow 假设储蓄率外生。
- Solow 模型的收敛性后面也启发了学者讨论高收入国家和发展中国家的经济水平是否会趋于一致。可参考另外一篇博文《 收敛:从“算式的极限”到“增长的极限”》
这里主要是介绍其 matlab 绘图代码,就不具体展开数理证明了。 更具体的索洛模型解释可以参考:
Matlab 收敛图
代码绘图分为四个部分:
1、设置参数:原始人均资本、折旧率、储蓄率、技术进步率、全要素增长率、人口增长率、时间期数、资本投入弹性。
|
|
2、设置函数: $$f(k)=Ak^\alpha$$ $$\dot{k_t}=sf(k_t)-(n+g+d)k_t$$
|
|
3、收敛条件:
自然就是 $\dot{k_t}=sf(k_t)-(n+g+d)k_t=0$。所以下面代码的逻辑是比较 sy(k1,1)
和 nd(k1,1)
。不相等时,则根据大于小于符号增加或减少人均资本 $k$。
对于经济学来说,R 语言和 matlab 都快被 python 打败了。R 语言还有的优势是顶刊的统计学家会优先开发 R 语言包。
Matlab 和 stata 一样,目前尚占据主流是因为大部分论文代码给的文件是 .m
和 .do
。随着模型越来越复杂,python 在优化代码,调整算法进行计算方面具有更大优势。我在网上看到不少做宏观模型的新研究者开始从 matlab 转向 python 来优化计算过程。
|
|
4、绘图代码
举例子:
|
|
完整代码如下
|
|
Matlab 相图:不同初始资本
比较两个经济体,其他参数都相同,只有初始人均资本 $k_1$ 不同(收敛方向不同)。
在给定的参数中, solow 模型的人均资本会收敛于 149.8 的水平。因此一个国家的处初始人均资本高于这个值,就会下降;低于这个值,就会上升。
|
|
Matlab 冲击图:不同储蓄率
当代宏观的 DSGE 核心图是展示要素受到冲击后的变化图。
Solow 模型假设储蓄率是外生的,下面这个代码是假设初始储蓄率是 0.4。在初始人均资本为 6 的情况下,后面储蓄率被调整为了 0.5。
最后计算的分别是人均资本、人均产出、人均产出增长率(产出取对数然后一阶差分 $\log y_t-\log y_{t-1}\approx\frac{y_t-y_{t-1}}{y_{t-1}}$)、人均消费。
|
|