@@ -34,17 +34,17 @@ tags: [hide-output]
34
34
35
35
## 概述
36
36
37
- 本讲将创建保罗·萨缪尔森著名的乘数加速模型的非随机和随机版本 {cite}` Samuelson1939 ` 。
37
+ 本讲将介绍保罗·萨缪尔森著名的乘数加速模型,包括其非随机和随机两个版本 {cite}` Samuelson1939 ` 。
38
38
39
- 在此过程中,我们将扩展[ 面向对象编程第二讲] ( https://python-programming.quantecon.org/python_oop.html ) 中的索洛模型类示例。
39
+ 在此过程中,我们将扩展[ 面向对象编程第二讲] ( https://python-programming.quantecon.org/python_oop.html#example-the-solow-growth-model ) 中的索洛模型类示例。
40
40
41
- 我们的目标是 :
41
+ 本讲的主要目标包括 :
42
42
43
- * 提供面向对象编程和类的更详细示例
44
- * 回顾一个著名模型
45
- * 回顾线性差分方程,包括确定性和随机性两种
43
+ * 通过萨缪尔森模型深入学习面向对象编程和类的使用
44
+ * 深入理解这个经典的经济学模型
45
+ * 复习线性差分方程的相关知识,包括非随机和随机两种情况
46
46
47
- 让我们从一些标准导入开始 :
47
+ 让我们从一些标准的导入开始 :
48
48
49
49
``` {code-cell} ipython
50
50
import matplotlib.pyplot as plt
@@ -57,7 +57,7 @@ plt.rcParams["figure.figsize"] = (11, 5) #设置默认图形大小
57
57
import numpy as np
58
58
```
59
59
60
- 我们还将使用以下内容来完成下面描述的各种任务 :
60
+ 我们还将使用以下Python库 :
61
61
62
62
``` {code-cell} ipython
63
63
from quantecon import LinearStateSpace
@@ -70,27 +70,27 @@ from cmath import sqrt
70
70
71
71
### 萨缪尔森模型
72
72
73
- 萨缪尔森使用 * 二阶线性差分方程* 来表示一个基于三个组成部分的国民产出模型:
73
+ 萨缪尔森(Samuelson)使用 * 二阶线性差分方程* 来表示一个基于三个组成部分的国民产出模型:
74
74
75
75
- * 国民产出恒等式* ,表明国民产出或国民收入是消费、投资和政府购买的总和。
76
- - 凯恩斯式 * 消费函数* ,表明t时期的消费等于一个常数乘以t-1时期的国民产出 。
77
- - 投资* 加速器* ,表明t时期的投资等于一个称为 * 加速系数* 的常数乘以t-1时期和t-2时期产出之差 。
76
+ - 凯恩斯式的 * 消费函数* ,表明$t$时期的消费等于一个常数乘以$t-1$时期的国民产出 。
77
+ - 投资* 加速器* ,表明$t$时期的投资等于一个称为 * 加速系数* 的常数乘以$t-1$时期和$t-2$时期产出之差 。
78
78
79
- 消费加投资加政府购买构成了 * 总需求* ,这自然而然对应相等数量的 * 总供给* 。
79
+ 消费、投资和政府购买的总和构成了 * 总需求* ,根据供需平衡,这必然对应了相同数量的 * 总供给* 。
80
80
81
81
(关于线性差分方程的内容请参见[ 这里] ( 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 ` 的第九章。)
82
82
83
- Samuelson使用该模型分析了边际消费倾向和加速系数的特定值如何在一定概率上导致国民产出出现暂时性的 * 商业周期* 。
83
+ 萨缪尔森使用该模型分析了边际消费倾向和加速系数的特定值如何在一定概率上导致国民产出出现暂时性的 * 商业周期* 。
84
84
85
- 可能的动态特性包括 :
85
+ 可能的动态特性包括以下几种 :
86
86
87
- * 平稳收敛到一个固定的产出水平
87
+ * 动态平稳收敛到一个固定的产出水平
88
88
* 最终收敛到固定产出水平的衰减商业周期
89
89
* 既不衰减也不发散的持续性商业周期
90
90
91
91
后面我们将介绍一个扩展模型,在国民收入恒等式右侧加入一个随机冲击项,代表总需求的随机波动。
92
92
93
- 这一修改使国民产出受到二阶* 随机线性差分方程* 的支配 ,在适当的参数值下,会产生反复出现的不规则商业周期。
93
+ 这一修改使国民产出受到二阶* 随机线性差分方程* 的影响 ,在适当的参数值下,会产生反复出现的不规则商业周期。
94
94
95
95
(关于随机线性差分方程的内容,请参见{cite}` Sargent1987 ` 的第XI章。)
96
96
@@ -105,8 +105,8 @@ Samuelson使用该模型分析了边际消费倾向和加速系数的特定值
105
105
* $\{ I_t\} $ 是投资率的序列,是另一个关键内生变量。
106
106
* $\{ Y_t\} $ 是国民收入水平的序列,也是一个内生变量。
107
107
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})$ 中的"加速系数"。
110
110
- $\{ \epsilon_ {t}\} $ 是一个独立同分布的标准正态随机变量序列。
111
111
- $\sigma \geq 0$ 是一个"波动性"参数 --- 当设定 $\sigma = 0$ 时,
112
112
我们将得到最初要研究的非随机情况。
@@ -116,15 +116,15 @@ Samuelson使用该模型分析了边际消费倾向和加速系数的特定值
116
116
``` {math}
117
117
:label: consumption
118
118
119
- C_t = α Y_{t-1} + \gamma
119
+ C_t = \alpha Y_{t-1} + \gamma
120
120
```
121
121
122
122
和投资加速器
123
123
124
124
``` {math}
125
125
:label: accelerator
126
126
127
- I_t = β (Y_{t-1} - Y_{t-2})
127
+ I_t = \beta (Y_{t-1} - Y_{t-2})
128
128
```
129
129
130
130
以及国民收入恒等式
@@ -135,7 +135,7 @@ I_t = β (Y_{t-1} - Y_{t-2})
135
135
Y_t = C_t + I_t + G_t
136
136
```
137
137
138
- - 参数 $a $ 是人们的收入* 边际消费倾向*
138
+ - 参数 $\alpha $ 是人们的收入* 边际消费倾向*
139
139
- 方程 {eq}` consumption ` 表明人们会消费每增加一美元收入中的 $\alpha \in (0,1)$ 部分。
140
140
- 参数 $\beta > 0$ 是投资加速系数 - 方程
141
141
{eq}` accelerator ` 表明当收入增加时人们会投资实物资本,当收入减少时会减少投资。
169
169
170
170
我们通常会设置参数$(\alpha,\beta)$,使得从任意一对初始条件$(\bar Y_ {-1}, \bar Y_ {-2})$开始,国民收入$Y_t$在$t$变大时会收敛到一个常数值。
171
171
172
- 我们感兴趣的是:
172
+ 也就是说, 我们感兴趣的是:
173
173
174
174
- $Y_t$在收敛到其** 稳态** 水平过程中的暂时波动
175
- - 其收敛到稳态水平的 ** 速率**
175
+ - 及其收敛到稳态水平的 ** 速率**
176
176
177
- 到目前为止所描述的确定性版本的模型——意味着没有随机冲击影响总需求——只有暂时的波动 。
177
+ 到目前为止我们讨论的是模型的非随机版本,即没有随机冲击影响总需求的情况。在这种情况下,模型只会产生暂时的波动 。
178
178
179
- 我们可以通过在总需求中加入随机冲击,将模型转换为具有持续不规则波动的模型 。
179
+ 为了使模型更贴近现实,我们可以在总需求中引入随机冲击,这样就能产生持续的、不规则的经济波动 。
180
180
181
181
### 模型的随机版本
182
182
183
183
我们通过在方程{eq}` second_order ` 的右侧加入一个** 冲击** 或** 扰动** 的随机过程$\{ \sigma \epsilon_t \} $,创建模型的** 随机** 版本,
184
184
185
- 导致 ** 二阶标量线性随机差分方程** :
185
+ 由此得出 ** 二阶标量线性随机差分方程** :
186
186
187
187
``` {math}
188
188
:label: second_stochastic
269
269
270
270
其中 $c_1$ 和 $c_2$ 是取决于两个初始条件和 $\rho_1, \rho_2$ 的常数。
271
271
272
- 当根为复数时,进行以下计算是有用的 。
272
+ 当根为复数时,以下的计算将非常有用 。
273
273
274
- 注意到
274
+ 注意
275
275
276
276
$$
277
277
\begin{aligned}
308
308
309
309
(请画一个余弦函数来辅助自己理解)
310
310
311
- ** 注释:** 遵循{cite}` Samuelson1939 ` ,我们要选择模型的参数$a, b $,使得特征多项式的(可能是复数的)根$\lambda_1, \lambda_2$的绝对值都严格小于1:
311
+ ** 注释:** 遵循{cite}` Samuelson1939 ` ,我们要选择模型的参数$\alpha, \beta $,使得特征多项式的(可能是复数的)根$\lambda_1, \lambda_2$的绝对值都严格小于1:
312
312
313
313
$$
314
314
| \lambda_j | < 1 \quad \quad \text{对于 } j = 1, 2
322
322
323
323
该函数需要我们输入$Y_ {-1}, Y_ {-2}$的初始条件。
324
324
325
- 该函数会检查$a, b $的设置是否使得$\lambda_1, \lambda_2$的绝对值(也称为"模")小于1。
325
+ 该函数会检查$\alpha, \beta $的设置是否使得$\lambda_1, \lambda_2$的绝对值(也称为"模")小于1。
326
326
327
327
该函数还会告诉我们根是否为复数,如果是复数,则会返回它们的实部和虚部。
328
328
332
332
333
333
我们编写函数的方式允许我们输入几种简单形式的$\{ G_t\} $路径,例如:
334
334
335
- * 在某个时间点G的一次性跳跃
336
- * 在某个时间点发生的G的永久性跳跃
335
+ * 在某个时间点$G$的一次性跳跃
336
+ * 在某个时间点发生的$G$的永久性跳跃
337
337
338
338
我们继续将萨缪尔森的乘数-加速器模型作为实验工具,用来构建一个简单的面向对象编程示例。
339
339
@@ -573,15 +573,15 @@ def f(r, ϕ):
573
573
并创建特征多项式的 ρ1 和 ρ2,其中
574
574
r exp(j ϕ) 和 r exp(- j ϕ) 是复根。
575
575
576
- 返回验证这些根的乘数系数 a 和加速器系数 b 。
576
+ 返回验证这些根的乘数系数 α 和加速器系数 β 。
577
577
"""
578
578
g1 = cmath.rect(r, ϕ) # 生成两个复根
579
579
g2 = cmath.rect(r, -ϕ)
580
580
ρ1 = g1 + g2 # 隐含的 ρ1, ρ2
581
581
ρ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, α, β
585
585
586
586
## 现在让我们在示例中使用这个函数
587
587
## 这里是示例参数
@@ -592,9 +592,9 @@ period = 10 # 时间单位中的周期长度
592
592
593
593
## 应用函数
594
594
595
- ρ1, ρ2, a, b = f(r, ϕ)
595
+ ρ1, ρ2, α, β = f(r, ϕ)
596
596
597
- print(f"a, b = {a }, {b }")
597
+ print(f"α, β = {α }, {β }")
598
598
print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
599
599
```
600
600
@@ -609,7 +609,7 @@ print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
609
609
610
610
### 使用Numpy求根
611
611
612
- 我们将使用numpy来计算特征多项式的根
612
+ 我们将使用 ` numpy ` 来计算特征多项式的根
613
613
614
614
``` {code-cell} ipython3
615
615
r1, r2 = np.roots([1, -ρ1, -ρ2])
@@ -621,7 +621,7 @@ print(f"r, ϕ = {r}, {ϕ}")
621
621
print(f"p1, p2 = {p1}, {p2}")
622
622
# print(f"g1, g2 = {g1}, {g2}")
623
623
624
- print(f"a, b = {a }, {b }")
624
+ print(f"α, β = {α }, {β }")
625
625
print(f"ρ1, ρ2 = {ρ1}, {ρ2}")
626
626
```
627
627
@@ -686,15 +686,15 @@ period = 10 # 时间单位中的循环长度
686
686
687
687
## 应用反向推导函数f
688
688
689
- ρ1, ρ2, a, b = f(r, ϕ)
689
+ ρ1, ρ2, α, β = f(r, ϕ)
690
690
691
691
# 去掉虚部,使其成为y_nonstochastic的有效输入
692
- a = a .real
693
- b = b .real
692
+ α = α .real
693
+ β = β .real
694
694
695
- print(f"a, b = {a }, {b }")
695
+ print(f"α, β = {α }, {β }")
696
696
697
- ytemp = y_nonstochastic(α=a , β=b , y_0=20, y_1=30)
697
+ ytemp = y_nonstochastic(α=α , β=β , y_0=20, y_1=30)
698
698
plot_y(ytemp)
699
699
```
700
700
@@ -713,10 +713,10 @@ sympy.solve(z**2 - r1*z - r2, z)
713
713
```
714
714
715
715
``` {code-cell} ipython3
716
- a = Symbol("α")
717
- b = Symbol("β")
718
- r1 = a + b
719
- r2 = -b
716
+ α = Symbol("α")
717
+ β = Symbol("β")
718
+ r1 = α + β
719
+ r2 = -β
720
720
721
721
sympy.solve(z**2 - r1*z - r2, z)
722
722
```
@@ -1053,9 +1053,13 @@ class Samuelson():
1053
1053
ax.grid()
1054
1054
1055
1055
# 在图中添加参数值
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}$'''
1059
1063
props = dict(fc='white', pad=10, alpha=0.5)
1060
1064
ax.text(0.87, 0.05, paramstr, transform=ax.transAxes,
1061
1065
fontsize=12, bbox=props, va='bottom')
@@ -1344,7 +1348,7 @@ pure_multiplier.plot_irf(100)
1344
1348
1345
1349
## 总结
1346
1350
1347
- 在本讲中,我们编写了函数和类来表示萨缪尔森(1939)乘数 -加速器模型的非随机和随机版本,该模型在{cite}` Samuelson1939 ` 中有所描述。
1351
+ 在本讲中,我们编写了函数和类来表示萨缪尔森乘数 -加速器模型的非随机和随机版本,该模型在{cite}` Samuelson1939 ` 中有所描述。
1348
1352
1349
1353
我们看到不同的参数值会导致不同的输出路径,这些路径可能是平稳的、发散的或振荡的。
1350
1354
0 commit comments