宏观经济学

第九章:宏观经济学浏览器交互实验

使用可点击运行的 Python 与 R 单元理解财政乘数、Taylor 规则、债务动态、Solow 增长和局部投影。

第九章:宏观经济学浏览器交互实验

本章把前八章中的五个核心机制变成可以修改、运行和解释的计算实验。每个实验都提供 Python 与 R 两种实现;两段代码使用相同参数和随机种子,结果应在舍入误差范围内一致。

代码的作用是把模型假设变得可见。它不能替代制度背景、真实数据清理或因果识别。每次运行后都要回答三件事:

  1. 哪个参数是模型设定,哪个量是数据或模拟结果?
  2. 参数变化通过哪条方程改变结果?
  3. 若换成真实宏观数据,哪些识别与测量问题会出现?

学习成果

完成本章后,你应能够:

  • 计算开放经济中的财政乘数并做参数敏感性分析;
  • 用 Taylor 型规则区分通胀、产出缺口和中性利率的贡献;
  • 递推债务率并解释利率—增长差与初级余额的作用;
  • 模拟 Solow 模型的过渡动态和条件收敛;
  • 用局部投影回归估计一个外生冲击的动态响应;
  • 比较 Python 与 R 输出,检查实现是否忠实于同一经济模型。
点击单元右上角的“运行”按钮。首次运行会在浏览器中加载 Pyodide 或 webR;之后可以显示代码,修改参数,再次运行。所有计算都在本地浏览器完成。

实验一:财政乘数不是一个固定常数

模型

考虑带比例税和进口的凯恩斯交叉:

Y=C+I+G+XM,C=C0+c1(YT),T=tY,M=mY.\begin{aligned} Y &= C+I+G+X-M,\\ C &= C_0+c_1(Y-T),\\ T &= tY,\qquad M=mY. \end{aligned}

把外生支出合并后,政府支出乘数为:

YG=11c1(1t)+m.\frac{\partial Y}{\partial G} =\frac{1}{1-c_1(1-t)+m}.

边际消费倾向越高,收入反馈越强;税率和进口倾向越高,支出漏出越大。下面比较不同参数组合。

Py

Python:财政乘数敏感性

Idle
R

R:财政乘数敏感性

Idle

结果解释

若把 c1c_1 从 0.60 提高到 0.80,乘数上升,并不意味着现实政策必然产生同样变化。模型没有显式包含供给瓶颈、利率反应、债务风险、预期和政策执行时滞。研究生扩展应进一步问:参数是校准值还是估计值?乘数是否随衰退、零利率下限或汇率制度而变化?

修改任务

  • 把进口倾向改为 0 和 0.35,比较封闭经济与高度开放经济。
  • 把税率从 0.20 改为 0.40,解释自动稳定器为何降低短期波动。
  • 令政府支出增加 100 亿元,计算不同参数下的产出变化区间。

实验二:Taylor 型规则如何组织政策信息

模型

一个教学用政策规则可以写为:

it=rt+πt+ϕπ(πtπ)+ϕyy~t,i_t=r_t^*+\pi_t +\phi_\pi(\pi_t-\pi^*) +\phi_y\tilde y_t,

其中 rtr_t^* 是中性实际利率,π\pi^* 是通胀目标,y~t\tilde y_t 是产出缺口。规则是政策讨论的基准,不是中央银行的机械承诺。

Py

Python:政策利率分解

Idle
R

R:政策利率分解

Idle

结果解释

规则利率上升可以来自当前通胀上升,也可以来自通胀偏离目标或正产出缺口。解释真实政策时还要考虑中性利率不可观测、金融稳定、汇率、预测而非当前通胀,以及政策传导时滞。

修改任务

  • ϕπ\phi_\pi 改为 0.8,判断规则是否满足“通胀上升时实际利率也上升”的 Taylor 原则。
  • 把产出缺口全部设为 0,分离通胀项的贡献。
  • 设计一次供给冲击:通胀上升而产出缺口下降,解释政策权衡。

实验三:债务可持续性是一条路径

模型

btb_t 为期初政府债务占 GDP 比例,sts_t 为初级盈余占 GDP 比例(盈余取正),则离散时间债务动态近似为:

bt+1=1+rt1+gtbtst.b_{t+1} =\frac{1+r_t}{1+g_t}b_t-s_t.

r>gr>g 时,既有债务的机械负担上升;但最终路径仍取决于初始债务、初级余额、增长、利率和冲击持续时间。

Py

Python:债务率情景分析

Idle
R

R:债务率情景分析

Idle

结果解释

不要把某个债务率阈值当作普遍安全线。债务币种、期限、投资者结构、中央银行制度、税收能力、潜在增长和支出质量都会影响风险。代码只展示会计动态;正式可持续性分析还要加入随机冲击、期限结构、或有负债和政策反应函数。

实验四:Solow 模型的过渡动态

模型

在不显式加入人口与技术增长的教学版本中:

kt+1=sAktα+(1δ)kt.k_{t+1}=sAk_t^\alpha+(1-\delta)k_t.

稳态满足 sAkα=δksAk^{*\alpha}=\delta k^*,即:

k=(sAδ)1/(1α).k^*=\left(\frac{sA}{\delta}\right)^{1/(1-\alpha)}.
Py

Python:资本深化与条件收敛

Idle
R

R:资本深化与条件收敛

Idle

结果解释

具有相同结构参数的经济体会向同一稳态靠近,这叫条件收敛。提高储蓄率提高稳态产出水平,但在外生技术进步模型中不会永久提高人均产出的长期增长率。跨国比较还要处理技术、制度、人力资本、人口和测量差异。

实验五:用局部投影估计冲击响应

识别与估计

局部投影在每个预测期 hh 分别估计:

yt+h=αh+βhshockt+γhyt1+ut+h.y_{t+h} =\alpha_h+\beta_h shock_t+\gamma_h y_{t-1}+u_{t+h}.

βh\beta_h 描述结果变量在第 hh 期对冲击的响应。只有当 shocktshock_t 在给定控制后可视为外生时,它才有因果解释。下面的冲击由随机数生成,因此外生性在模拟中成立。

Py

Python:局部投影冲击响应

Idle
R

R:局部投影冲击响应

Idle

研究生审计

这个 R 示例使用普通标准误,Python 示例使用 HC1;真实局部投影中的残差跨期重叠,通常需要 HAC、Bootstrap 或其他适合时间依赖的推断。还应说明冲击来自叙事识别、高频意外、符号限制、外部工具还是递归排序。图形本身不能证明冲击外生。

综合作业

从五个实验中选择一个,提交一份 800—1200 字分析:

  1. 写出模型、参数和结果变量;
  2. 复现基准代码并保存输出;
  3. 修改至少两个参数,解释变化方向;
  4. 指出模型省略的三个现实机制;
  5. 说明若使用真实数据,需要什么数据、识别和标准误;
  6. 比较 Python 与 R 结果,解释任何差异。

进一步阅读

  • Blanchard, Macroeconomics:短期波动、政策和开放经济基线;
  • Romer, Advanced Macroeconomics:增长、消费、政策与动态模型;
  • Jordà (2005), “Estimation and Inference of Impulse Responses by Local Projections”;
  • IMF, Fiscal Monitor 方法附录:债务动态与情景分析;
  • Taylor (1993), “Discretion versus Policy Rules in Practice”。

返回课程首页 · 进入宏观研究项目

Copyright © 2026