@@ -17,24 +17,24 @@ kernelspec:
17
17
</div>
18
18
```
19
19
20
- # {index}` 最优增长 IV:内生网格方法 <single: Optimal Growth IV: The Endogenous Grid Method> `
20
+ # {index}` 最优增长 IV:内生网格法 <single: Optimal Growth IV: The Endogenous Grid Method> `
21
21
22
22
``` {contents} 目录
23
23
:depth: 2
24
24
```
25
25
26
26
## 概述
27
27
28
- 之前 ,我们使用以下方法求解了随机最优增长模型:
28
+ 在之前 ,我们使用以下方法求解了随机最优增长模型:
29
29
30
30
1 . {doc}` 值函数迭代 <optgrowth_fast> `
31
31
1 . {doc}` 基于欧拉方程的时间迭代 <coleman_policy_iter> `
32
32
33
- 我们发现时间迭代在精确度和效率方面都明显更好 。
33
+ 我们发现时间迭代在准确性和效率方面都明显更好 。
34
34
35
- 在本讲座中,我们将研究时间迭代的一个巧妙变体 ,称为** 内生网格方法** (EGM)。
35
+ 在本讲中,我们将学习一种对时间迭代的巧妙变形 ,称为** 内生网格方法** (EGM)。
36
36
37
- EGM是由[ Chris Carroll] ( http://www.econ2.jhu.edu/people/ccarroll/ ) 发明的一种实现策略迭代的数值方法 。
37
+ EGM是由[ Chris Carroll] ( http://www.econ2.jhu.edu/people/ccarroll/ ) 发明的一种实现政策迭代的数值方法 。
38
38
39
39
原始参考文献是{cite}` Carroll2006 ` 。
40
40
@@ -48,13 +48,13 @@ from numba import jit
48
48
49
49
## 核心思想
50
50
51
- 让我们先回顾一下理论,然后看看如何进行数值计算 。
51
+ 让我们先回顾一下理论,然后看看数值计算如何配合 。
52
52
53
53
### 理论
54
54
55
55
采用{doc}` 时间迭代讲座 <coleman_policy_iter> ` 中设定的模型,遵循相同的术语和符号。
56
56
57
- 欧拉方程是
57
+ 欧拉方程为
58
58
59
59
``` {math}
60
60
:label: egm_euler
@@ -63,11 +63,11 @@ from numba import jit
63
63
= \beta \int (u'\circ \sigma^*)(f(y - \sigma^*(y)) z) f'(y - \sigma^*(y)) z \phi(dz)
64
64
```
65
65
66
- 如我们所见,Coleman-Reffett算子是一个非线性算子 $K$,其设计使得 $\sigma^* $ 是 $K$ 的不动点。
66
+ 如我们所见,Coleman-Reffett算子是一个非线性算子$K$,其设计使得$\sigma^* $是 $K$的不动点。
67
67
68
- 它以连续严格递增的消费策略 $\sigma \in \Sigma$ 作为参数。
68
+ 它以一个连续严格递增的消费策略 $\sigma \in \Sigma$作为参数。
69
69
70
- 它返回一个新函数 $K \sigma$,其中 $(K \sigma)(y)$ 是满足以下方程的 $c \in (0, \infty)$:
70
+ 它返回一个新函数$K \sigma$,其中$(K \sigma)(y)$是满足以下方程的$c \in (0, \infty)$:
71
71
72
72
``` {math}
73
73
:label: egm_coledef
@@ -78,39 +78,39 @@ u'(c)
78
78
79
79
### 外生网格
80
80
81
- 如{doc}` 时间迭代讲座 <coleman_policy_iter> ` 中所讨论的,要在计算机上实现该方法,我们需要数值近似 。
81
+ 如{doc}` 时间迭代讲座 <coleman_policy_iter> ` 中所讨论的,要在计算机上实现该方法,我们需要一个数值近似 。
82
82
83
- 具体来说,我们通过有限网格上的一组值来表示策略函数 。
83
+ 具体来说,我们用有限网格上的一组值来表示策略函数 。
84
84
85
- 在必要时,使用插值或其他方法从这种表示中重构函数本身 。
85
+ 在需要时,使用插值或其他方法从这种表示中重建函数本身 。
86
86
87
- {doc}` 之前 <coleman_policy_iter> ` ,为了获得更新后消费策略的有限表示,我们:
87
+ {doc}` 之前 <coleman_policy_iter> ` ,为了获得更新后消费策略的有限表示,我们
88
88
89
- * 固定一个收入点网格 $\{ y_i\} $
90
- * 使用{eq}` egm_coledef ` 和一个寻根程序计算对应于每个 $y_i$ 的消费值 $c_i$
89
+ * 固定了一个收入点网格 $\{ y_i\} $
90
+ * 使用{eq}` egm_coledef ` 和一个寻根程序计算对应每个 $y_i$的消费值$c_i$
91
91
92
- 每个 $c_i$ 被解释为函数 $K \sigma$ 在 $y_i$ 处的值。
92
+ 每个$c_i$被解释为函数$K \sigma$在 $y_i$处的值。
93
93
94
- 因此,有了点 $\{ y_i, c_i\} $,我们可以通过近似重构 $K \sigma$。
94
+ 因此,有了点$\{ y_i, c_i\} $后,我们可以通过近似重建 $K \sigma$。
95
95
96
96
然后继续迭代...
97
97
98
98
### 内生网格
99
99
100
- 上述方法需要一个寻根程序来找到对应于给定收入值 $y_i$ 的 $c_i$。
100
+ 上述方法需要一个寻根程序来找到对应给定收入值 $y_i$的 $c_i$。
101
101
102
- 寻根计算成本很高,因为它通常涉及大量的函数求值 。
102
+ 求根计算成本很高,因为它通常需要大量的函数求值 。
103
103
104
- 正如Carroll {cite}` Carroll2006 ` 指出的 ,如果 $y_i$ 是内生选择的,我们可以避免这一点 。
104
+ 正如Carroll {cite}` Carroll2006 ` 指出的那样 ,如果$y_i$是内生选择的,我们可以避免这种情况 。
105
105
106
- 唯一需要的假设是 $u'$ 在 $(0, \infty)$ 上可逆 。
106
+ 唯一需要的假设是$u'$在 $(0, \infty)$上是可逆的 。
107
107
108
- 令 $(u')^{-1}$ 为 $u'$ 的逆函数 。
108
+ 令$(u')^{-1}$为 $u'$的反函数 。
109
109
110
- 思路是这样的 :
110
+ 基本思路是 :
111
111
112
- * 首先,我们为资本( $k = y - c$) 固定一个* 外生* 网格 $\{ k_i\} $。
113
- * 然后通过以下方式获得 $c_i$:
112
+ * 首先,我们为资本( $k = y - c$) 固定一个* 外生* 网格$\{ k_i\} $。
113
+ * 然后我们通过以下方式获得 $c_i$
114
114
115
115
``` {math}
116
116
:label: egm_getc
@@ -122,37 +122,37 @@ c_i =
122
122
\right\}
123
123
```
124
124
125
- * 最后,对于每个 $c_i$, 我们设定 $y_i = c_i + k_i$。
125
+ * 最后,对于每个$c_i$我们设定$y_i = c_i + k_i$。
126
126
127
- 显然,以这种方式构造的每个 $(y_i, c_i)$ 对都满足{eq}` egm_coledef ` 。
127
+ 显然,以这种方式构造的每个$(y_i, c_i)$对都满足{eq}` egm_coledef ` 。
128
128
129
- 有了点 $\{ y_i, c_i\} $,我们可以像之前一样通过近似重构 $K \sigma$。
129
+ 有了这些点 $\{ y_i, c_i\} $,我们可以像之前一样通过近似重构$K \sigma$。
130
130
131
- EGM这个名称来源于网格 $\{ y_i\} $ 是** 内生** 确定的这一事实 。
131
+ EGM这个名称来源于网格$\{ y_i\} $是** 内生** 决定的这一事实 。
132
132
133
133
## 实现
134
134
135
- 如{doc}` 之前 <coleman_policy_iter> ` 一样 ,我们将从一个简单的设定开始,其中:
135
+ 如{doc}` 之前 <coleman_policy_iter> ` ,我们将从一个简单的设定开始,其中
136
136
137
137
* $u(c) = \ln c$,
138
- * 生产函数是Cobb-Douglas形式 ,且
139
- * 冲击是对数正态分布的 。
138
+ * 生产函数是柯布-道格拉斯形式 ,且
139
+ * 冲击是对数正态分布 。
140
140
141
- 这将允许我们与解析解进行比较
141
+ 这将使我们能够与解析解进行比较
142
142
143
143
``` {code-cell} python3
144
144
:load: _static/lecture_specific/optgrowth/cd_analytical.py
145
145
```
146
146
147
- 我们重用` OptimalGrowthModel ` 类
147
+ 我们重用 ` OptimalGrowthModel ` 类
148
148
149
149
``` {code-cell} python3
150
150
:load: _static/lecture_specific/optgrowth_fast/ogm.py
151
151
```
152
152
153
153
### 算子
154
154
155
- 这里是使用上述EGM实现的 $K$ 算子 。
155
+ 以下是使用EGM实现 $K$的代码,如上所述 。
156
156
157
157
``` {code-cell} python3
158
158
@jit
@@ -162,7 +162,7 @@ def K(σ_array, og):
162
162
163
163
"""
164
164
165
- # 简化名称
165
+ # 简化命名
166
166
f, β = og.f, og.β
167
167
f_prime, u_prime = og.f_prime, og.u_prime
168
168
u_prime_inv = og.u_prime_inv
@@ -185,7 +185,7 @@ def K(σ_array, og):
185
185
return c
186
186
```
187
187
188
- 注意这里没有任何寻根算法 。
188
+ 注意这里没有任何求根算法 。
189
189
190
190
### 测试
191
191
@@ -202,31 +202,31 @@ grid = og.grid
202
202
:load: _static/lecture_specific/coleman_policy_iter/solve_time_iter.py
203
203
```
204
204
205
- 让我们调用它 :
205
+ 让我们运行它 :
206
206
207
207
``` {code-cell} python3
208
208
σ_init = np.copy(grid)
209
209
σ = solve_model_time_iter(og, σ_init)
210
210
```
211
211
212
- 这是结果策略与真实策略的对比图 :
212
+ 以下是结果策略与真实策略的比较 :
213
213
214
214
``` {code-cell} python3
215
215
y = grid + σ # y_i = k_i + c_i
216
216
217
217
fig, ax = plt.subplots()
218
218
219
219
ax.plot(y, σ, lw=2,
220
- alpha=0.8, label='近似策略函数 ')
220
+ alpha=0.8, label='approximate policy function ')
221
221
222
222
ax.plot(y, σ_star(y, og.α, og.β), 'k--',
223
- lw=2, alpha=0.8, label='真实策略函数 ')
223
+ lw=2, alpha=0.8, label='true policy function ')
224
224
225
225
ax.legend()
226
226
plt.show()
227
227
```
228
228
229
- 两个策略之间的最大绝对偏差是:
229
+ 两个策略之间的最大绝对偏差是
230
230
231
231
``` {code-cell} python3
232
232
np.max(np.abs(σ - σ_star(y, og.α, og.β)))
@@ -239,10 +239,8 @@ np.max(np.abs(σ - σ_star(y, og.α, og.β)))
239
239
σ = solve_model_time_iter(og, σ_init, verbose=False)
240
240
```
241
241
242
- 相对于已经被证明非常高效的时间迭代,EGM在不影响精确度的情况下进一步缩短了运行时间。
243
-
244
- 这是因为这个算法没有使用寻根算法。
245
-
246
- 我们现在掌握了一个可以快速求解最优增长模型的工具。
242
+ 相对于时间迭代,EGM在没有任何数值求根步骤的情况下,仍然能够显著减少计算时间,同时保持高精度。
247
243
244
+ 这是因为没有数值求根步骤。
248
245
246
+ 我们现在可以非常快速地求解给定参数的随机最优增长模型。
0 commit comments