@@ -34,17 +34,17 @@ tags: [hide-output]
3434
3535## 概述
3636
37- 本讲将创建保罗·萨缪尔森著名的乘数加速模型的非随机和随机版本 {cite}` Samuelson1939 ` 。
37+ 本讲将介绍保罗·萨缪尔森著名的乘数加速模型,包括其非随机和随机两个版本 {cite}` Samuelson1939 ` 。
3838
39- 在此过程中,我们将扩展[ 面向对象编程第二讲] ( https://python-programming.quantecon.org/python_oop.html ) 中的索洛模型类示例。
39+ 在此过程中,我们将扩展[ 面向对象编程第二讲] ( https://python-programming.quantecon.org/python_oop.html#example-the-solow-growth-model ) 中的索洛模型类示例。
4040
41- 我们的目标是 :
41+ 本讲的主要目标包括 :
4242
43- * 提供面向对象编程和类的更详细示例
44- * 回顾一个著名模型
45- * 回顾线性差分方程,包括确定性和随机性两种
43+ * 通过萨缪尔森模型深入学习面向对象编程和类的使用
44+ * 深入理解这个经典的经济学模型
45+ * 复习线性差分方程的相关知识,包括非随机和随机两种情况
4646
47- 让我们从一些标准导入开始 :
47+ 让我们从一些标准的导入开始 :
4848
4949``` {code-cell} ipython
5050import matplotlib.pyplot as plt
@@ -57,7 +57,7 @@ plt.rcParams["figure.figsize"] = (11, 5) #设置默认图形大小
5757import numpy as np
5858```
5959
60- 我们还将使用以下内容来完成下面描述的各种任务 :
60+ 我们还将使用以下Python库 :
6161
6262``` {code-cell} ipython
6363from quantecon import LinearStateSpace
@@ -70,27 +70,27 @@ from cmath import sqrt
7070
7171### 萨缪尔森模型
7272
73- 萨缪尔森使用 * 二阶线性差分方程* 来表示一个基于三个组成部分的国民产出模型:
73+ 萨缪尔森(Samuelson)使用 * 二阶线性差分方程* 来表示一个基于三个组成部分的国民产出模型:
7474
7575- * 国民产出恒等式* ,表明国民产出或国民收入是消费、投资和政府购买的总和。
76- - 凯恩斯式 * 消费函数* ,表明t时期的消费等于一个常数乘以t-1时期的国民产出 。
77- - 投资* 加速器* ,表明t时期的投资等于一个称为 * 加速系数* 的常数乘以t-1时期和t-2时期产出之差 。
76+ - 凯恩斯式的 * 消费函数* ,表明$t$时期的消费等于一个常数乘以$t-1$时期的国民产出 。
77+ - 投资* 加速器* ,表明$t$时期的投资等于一个称为 * 加速系数* 的常数乘以$t-1$时期和$t-2$时期产出之差 。
7878
79- 消费加投资加政府购买构成了 * 总需求* ,这自然而然对应相等数量的 * 总供给* 。
79+ 消费、投资和政府购买的总和构成了 * 总需求* ,根据供需平衡,这必然对应了相同数量的 * 总供给* 。
8080
8181(关于线性差分方程的内容请参见[ 这里] ( https://baike.baidu.com/item/%E5%B8%B8%E7%B3%BB%E6%95%B0%E7%BA%BF%E6%80%A7%E9%80%92%E6%8E%A8%E6%95%B0%E5%88%97/8017610 ) 或{cite}` Sargent1987 ` 的第九章。)
8282
83- Samuelson使用该模型分析了边际消费倾向和加速系数的特定值如何在一定概率上导致国民产出出现暂时性的 * 商业周期* 。
83+ 萨缪尔森使用该模型分析了边际消费倾向和加速系数的特定值如何在一定概率上导致国民产出出现暂时性的 * 商业周期* 。
8484
85- 可能的动态特性包括 :
85+ 可能的动态特性包括以下几种 :
8686
87- * 平稳收敛到一个固定的产出水平
87+ * 动态平稳收敛到一个固定的产出水平
8888* 最终收敛到固定产出水平的衰减商业周期
8989* 既不衰减也不发散的持续性商业周期
9090
9191后面我们将介绍一个扩展模型,在国民收入恒等式右侧加入一个随机冲击项,代表总需求的随机波动。
9292
93- 这一修改使国民产出受到二阶* 随机线性差分方程* 的支配 ,在适当的参数值下,会产生反复出现的不规则商业周期。
93+ 这一修改使国民产出受到二阶* 随机线性差分方程* 的影响 ,在适当的参数值下,会产生反复出现的不规则商业周期。
9494
9595(关于随机线性差分方程的内容,请参见{cite}` Sargent1987 ` 的第XI章。)
9696
@@ -105,8 +105,8 @@ Samuelson使用该模型分析了边际消费倾向和加速系数的特定值
105105* $\{ I_t\} $ 是投资率的序列,是另一个关键内生变量。
106106* $\{ Y_t\} $ 是国民收入水平的序列,也是一个内生变量。
107107
108- - $a $ 是凯恩斯消费函数 $C_t = \alpha Y_ {t-1} + \gamma$ 中的边际消费倾向。
109- - $b $ 是"投资加速器"$I_t = \beta (Y_ {t-1} - Y_ {t-2})$ 中的"加速系数"。
108+ - $\alpha $ 是凯恩斯消费函数 $C_t = \alpha Y_ {t-1} + \gamma$ 中的边际消费倾向。
109+ - $\beta $ 是"投资加速器" $I_t = \beta (Y_ {t-1} - Y_ {t-2})$ 中的"加速系数"。
110110- $\{ \epsilon_ {t}\} $ 是一个独立同分布的标准正态随机变量序列。
111111- $\sigma \geq 0$ 是一个"波动性"参数 --- 当设定 $\sigma = 0$ 时,
112112 我们将得到最初要研究的非随机情况。
@@ -116,15 +116,15 @@ Samuelson使用该模型分析了边际消费倾向和加速系数的特定值
116116``` {math}
117117:label: consumption
118118
119- C_t = α Y_{t-1} + \gamma
119+ C_t = \alpha Y_{t-1} + \gamma
120120```
121121
122122和投资加速器
123123
124124``` {math}
125125:label: accelerator
126126
127- I_t = β (Y_{t-1} - Y_{t-2})
127+ I_t = \beta (Y_{t-1} - Y_{t-2})
128128```
129129
130130以及国民收入恒等式
@@ -135,7 +135,7 @@ I_t = β (Y_{t-1} - Y_{t-2})
135135Y_t = C_t + I_t + G_t
136136```
137137
138- - 参数 $a $ 是人们的收入* 边际消费倾向*
138+ - 参数 $\alpha $ 是人们的收入* 边际消费倾向*
139139 - 方程 {eq}` consumption ` 表明人们会消费每增加一美元收入中的 $\alpha \in (0,1)$ 部分。
140140- 参数 $\beta > 0$ 是投资加速系数 - 方程
141141 {eq}` accelerator ` 表明当收入增加时人们会投资实物资本,当收入减少时会减少投资。
169169
170170我们通常会设置参数$(\alpha,\beta)$,使得从任意一对初始条件$(\bar Y_ {-1}, \bar Y_ {-2})$开始,国民收入$Y_t$在$t$变大时会收敛到一个常数值。
171171
172- 我们感兴趣的是:
172+ 也就是说, 我们感兴趣的是:
173173
174174- $Y_t$在收敛到其** 稳态** 水平过程中的暂时波动
175- - 其收敛到稳态水平的 ** 速率**
175+ - 及其收敛到稳态水平的 ** 速率**
176176
177- 到目前为止所描述的确定性版本的模型——意味着没有随机冲击影响总需求——只有暂时的波动 。
177+ 到目前为止我们讨论的是模型的非随机版本,即没有随机冲击影响总需求的情况。在这种情况下,模型只会产生暂时的波动 。
178178
179- 我们可以通过在总需求中加入随机冲击,将模型转换为具有持续不规则波动的模型 。
179+ 为了使模型更贴近现实,我们可以在总需求中引入随机冲击,这样就能产生持续的、不规则的经济波动 。
180180
181181### 模型的随机版本
182182
183183我们通过在方程{eq}` second_order ` 的右侧加入一个** 冲击** 或** 扰动** 的随机过程$\{ \sigma \epsilon_t \} $,创建模型的** 随机** 版本,
184184
185- 导致 ** 二阶标量线性随机差分方程** :
185+ 由此得出 ** 二阶标量线性随机差分方程** :
186186
187187``` {math}
188188:label: second_stochastic
269269
270270其中 $c_1$ 和 $c_2$ 是取决于两个初始条件和 $\rho_1, \rho_2$ 的常数。
271271
272- 当根为复数时,进行以下计算是有用的 。
272+ 当根为复数时,以下的计算将非常有用 。
273273
274- 注意到
274+ 注意
275275
276276$$
277277\begin{aligned}
308308
309309(请画一个余弦函数来辅助自己理解)
310310
311- ** 注释:** 遵循{cite}` Samuelson1939 ` ,我们要选择模型的参数$a, b $,使得特征多项式的(可能是复数的)根$\lambda_1, \lambda_2$的绝对值都严格小于1:
311+ ** 注释:** 遵循{cite}` Samuelson1939 ` ,我们要选择模型的参数$\alpha, \beta $,使得特征多项式的(可能是复数的)根$\lambda_1, \lambda_2$的绝对值都严格小于1:
312312
313313$$
314314| \lambda_j | < 1 \quad \quad \text{对于 } j = 1, 2
322322
323323该函数需要我们输入$Y_ {-1}, Y_ {-2}$的初始条件。
324324
325- 该函数会检查$a, b $的设置是否使得$\lambda_1, \lambda_2$的绝对值(也称为"模")小于1。
325+ 该函数会检查$\alpha, \beta $的设置是否使得$\lambda_1, \lambda_2$的绝对值(也称为"模")小于1。
326326
327327该函数还会告诉我们根是否为复数,如果是复数,则会返回它们的实部和虚部。
328328
332332
333333我们编写函数的方式允许我们输入几种简单形式的$\{ G_t\} $路径,例如:
334334
335- * 在某个时间点G的一次性跳跃
336- * 在某个时间点发生的G的永久性跳跃
335+ * 在某个时间点$G$的一次性跳跃
336+ * 在某个时间点发生的$G$的永久性跳跃
337337
338338我们继续将萨缪尔森的乘数-加速器模型作为实验工具,用来构建一个简单的面向对象编程示例。
339339
@@ -573,15 +573,15 @@ def f(r, ϕ):
573573 并创建特征多项式的 ρ1 和 ρ2,其中
574574 r exp(j ϕ) 和 r exp(- j ϕ) 是复根。
575575
576- 返回验证这些根的乘数系数 a 和加速器系数 b 。
576+ 返回验证这些根的乘数系数 α 和加速器系数 β 。
577577 """
578578 g1 = cmath.rect(r, ϕ) # 生成两个复根
579579 g2 = cmath.rect(r, -ϕ)
580580 ρ1 = g1 + g2 # 隐含的 ρ1, ρ2
581581 ρ2 = -g1 * g2
582- b = -ρ2 # 反向推导验证这些的 a 和 b
583- a = ρ1 - b
584- return ρ1, ρ2, a, b
582+ β = -ρ2 # 反向推导验证这些的 α 和 β
583+ α = ρ1 - β
584+ return ρ1, ρ2, α, β
585585
586586## 现在让我们在示例中使用这个函数
587587## 这里是示例参数
@@ -592,9 +592,9 @@ period = 10 # 时间单位中的周期长度
592592
593593## 应用函数
594594
595- ρ1, ρ2, a, b = f(r, ϕ)
595+ ρ1, ρ2, α, β = f(r, ϕ)
596596
597- print(f"a, b = {a }, {b }")
597+ print(f"α, β = {α }, {β }")
598598print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
599599```
600600
@@ -609,7 +609,7 @@ print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
609609
610610### 使用Numpy求根
611611
612- 我们将使用numpy来计算特征多项式的根
612+ 我们将使用 ` numpy ` 来计算特征多项式的根
613613
614614``` {code-cell} ipython3
615615r1, r2 = np.roots([1, -ρ1, -ρ2])
@@ -621,7 +621,7 @@ print(f"r, ϕ = {r}, {ϕ}")
621621print(f"p1, p2 = {p1}, {p2}")
622622# print(f"g1, g2 = {g1}, {g2}")
623623
624- print(f"a, b = {a }, {b }")
624+ print(f"α, β = {α }, {β }")
625625print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
626626```
627627
@@ -686,15 +686,15 @@ period = 10 # 时间单位中的循环长度
686686
687687## 应用反向推导函数f
688688
689- ρ1, ρ2, a, b = f(r, ϕ)
689+ ρ1, ρ2, α, β = f(r, ϕ)
690690
691691# 去掉虚部,使其成为y_nonstochastic的有效输入
692- a = a .real
693- b = b .real
692+ α = α .real
693+ β = β .real
694694
695- print(f"a, b = {a }, {b }")
695+ print(f"α, β = {α }, {β }")
696696
697- ytemp = y_nonstochastic(α=a , β=b , y_0=20, y_1=30)
697+ ytemp = y_nonstochastic(α=α , β=β , y_0=20, y_1=30)
698698plot_y(ytemp)
699699```
700700
@@ -713,10 +713,10 @@ sympy.solve(z**2 - r1*z - r2, z)
713713```
714714
715715``` {code-cell} ipython3
716- a = Symbol("α")
717- b = Symbol("β")
718- r1 = a + b
719- r2 = -b
716+ α = Symbol("α")
717+ β = Symbol("β")
718+ r1 = α + β
719+ r2 = -β
720720
721721sympy.solve(z**2 - r1*z - r2, z)
722722```
@@ -1053,9 +1053,13 @@ class Samuelson():
10531053 ax.grid()
10541054
10551055 # 在图中添加参数值
1056- paramstr = f'$\\alpha={self.α:.2f}$ \n $\\beta={self.β:.2f}$ \n \
1057- $\\gamma={self.γ:.2f}$ \n $\\sigma={self.σ:.2f}$ \n \
1058- $\\rho_1={self.ρ1:.2f}$ \n $\\rho_2={self.ρ2:.2f}$'
1056+ paramstr = f'''
1057+ $\\alpha={self.α:.2f}$
1058+ $\\beta={self.β:.2f}$
1059+ $\\gamma={self.γ:.2f}$
1060+ $\\sigma={self.σ:.2f}$
1061+ $\\rho_1={self.ρ1:.2f}$
1062+ $\\rho_2={self.ρ2:.2f}$'''
10591063 props = dict(fc='white', pad=10, alpha=0.5)
10601064 ax.text(0.87, 0.05, paramstr, transform=ax.transAxes,
10611065 fontsize=12, bbox=props, va='bottom')
@@ -1344,7 +1348,7 @@ pure_multiplier.plot_irf(100)
13441348
13451349## 总结
13461350
1347- 在本讲中,我们编写了函数和类来表示萨缪尔森(1939)乘数 -加速器模型的非随机和随机版本,该模型在{cite}` Samuelson1939 ` 中有所描述。
1351+ 在本讲中,我们编写了函数和类来表示萨缪尔森乘数 -加速器模型的非随机和随机版本,该模型在{cite}` Samuelson1939 ` 中有所描述。
13481352
13491353我们看到不同的参数值会导致不同的输出路径,这些路径可能是平稳的、发散的或振荡的。
13501354
0 commit comments