Skip to content

Commit 8012bf3

Browse files
authored
Merge pull request #17 from QuantEcon/update-mccall_model.md
[mccall_model] Translation update
2 parents 7d72c68 + a56399a commit 8012bf3

File tree

5 files changed

+53
-62
lines changed

5 files changed

+53
-62
lines changed

lectures/career.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ kernelspec:
1818
</div>
1919
```
2020

21-
# 职业搜索 V:职业选择建模
21+
# 工作搜寻 V:职业选择建模
2222

2323
```{index} single: Modeling; Career Choice
2424
```

lectures/jv.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ kernelspec:
1818
</div>
1919
```
2020

21-
# {index}`在职搜索 VI:在职搜索 <single: Job Search VI: On-the-Job Search>`
21+
# {index}`工作搜寻 VI:在职搜索 <single: Job Search VI: On-the-Job Search>`
2222

2323
```{index} single: Models; On-the-Job Search
2424
```

lectures/mccall_fitted_vfi.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ kernelspec:
1717
</div>
1818
```
1919

20-
# 求职搜索 III: 拟合值函数迭代
20+
# 工作搜寻 III: 拟合值函数迭代
2121

2222
```{contents} 目录
2323
:depth: 2

lectures/mccall_model.md

+49-58
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ kernelspec:
2525
```
2626

2727
```{epigraph}
28-
"询问一个McCall工人就像与一个失业的朋友对话:
29-
'也许你的期望值定得太高了',或者'为什么你在找到新工作之前就辞掉了原来的工作?'这就是真正的社会科学:试图通过观察人们所处的情况、他们面临的选择来建模,以理解人类行为
30-
31-
"以及他们自己所认为的优缺点。" -- 罗伯特·卢卡斯(小)
28+
"询问一个McCall工人就像与一个失业的朋友对话:'也许你的期望值定得太高了',或者'为什么你在找到新工作之前就辞掉了原来的工作?'这就是真正的社会科学:试图通过观察人们所处的情况、他们面临的选择、以及他们自己所认为的优缺点来建模,以理解人类行为。" -- 小罗伯特·卢卡斯
3229
```
3330

3431
除了Anaconda中已有的内容外,本讲座还需要以下库:
@@ -46,15 +43,15 @@ McCall 搜索模型 {cite}`McCall1970` 帮助改变了经济学家思考劳动
4643

4744
为了阐明"非自愿"失业等概念,McCall 从以下因素建模了失业工人的决策问题:
4845

49-
* 当前和可能的未来工资
50-
* 不耐心程度
46+
* 当前工资和可能的未来工资
47+
* 耐心程度
5148
* 失业补助
5249

5350
为了解决这个决策问题,McCall 使用了动态规划。
5451

55-
在这里,我们将建立 McCall 的模型并使用动态规划来分析它。
52+
在本讲中,我们将建立 McCall 的模型并使用动态规划来分析它。
5653

57-
我们将看到,McCall 的模型不仅本身很有趣,而且也是学习动态规划的绝佳载体
54+
我们将看到,McCall 的模型不仅本身很有趣,而且是学习动态规划的绝佳载体
5855

5956
让我们从一些导入开始:
6057

@@ -65,7 +62,7 @@ FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
6562
mpl.font_manager.fontManager.addfont(FONTPATH)
6663
plt.rcParams['font.family'] = ['Source Han Serif SC']
6764
68-
plt.rcParams["figure.figsize"] = (11, 5) #set default figure size
65+
plt.rcParams["figure.figsize"] = (11, 5) #设置默认图片尺寸
6966
import numpy as np
7067
from numba import jit, float64
7168
from numba.experimental import jitclass
@@ -78,35 +75,35 @@ from quantecon.distributions import BetaBinomial
7875
```{index} single: Models; McCall
7976
```
8077

81-
一个失业者在每个时期都会收到工资为$w_t$的工作机会。
78+
一个失业者在每个时期都会收到一个工资为$w_t$的工作机会。
8279

8380
在本讲中,我们采用以下简单环境:
8481

8582
* 工资序列$\{w_t\}_{t \geq 0}$是独立同分布的,其中$q(w)$是在有限集合$\mathbb{W}$中观察到工资$w$的概率。
86-
* 代理人在$t$期开始时观察到$w_t$。
87-
* 代理人知道$\{w_t\}$是具有共同分布$q$的独立同分布序列,并可以利用这一点计算期望值。
83+
* 失业者在$t$期的开始观察到$w_t$。
84+
* 失业者知道$\{w_t\}$是具有共同分布$q$的独立同分布序列,并可以利用这一点计算期望值。
8885

8986
(在后续讲座中,我们将放宽这些假设。)
9087

91-
在时间$t$,我们的代理人有两个选择
88+
在时间$t$,失业者有两个选择
9289

93-
1. 接受工作机会并以固定工资$w_t$永久工作。
90+
1. 接受工作机会,并以固定工资$w_t$永久工作。
9491
1. 拒绝工作机会,获得失业补助$c$,并在下一期重新考虑。
9592

96-
代理人具有无限生命,目标是最大化预期的折现收益总和
93+
假设失业者具有无限长的生命,其目标是最大化折现收益总和的期望值
9794

9895
$$
9996
\mathbb{E} \sum_{t=0}^{\infty} \beta^t y_t
10097
$$
10198

10299
常数$\beta$位于$(0, 1)$之间,被称为**折现因子**
103100

104-
$\beta$ 越小,代理人对未来效用的折现程度相对于当前效用就越高
101+
$\beta$ 越小,未来效用的折现值越高
105102

106-
变量 $y_t$ 是收入,等于
103+
变量 $y_t$ 是收入,
107104

108-
* 就业时的工资 $w_t$
109-
* 失业时的失业补助金 $c$
105+
* 当就业时,它等于工资 $w_t$
106+
* 当失业时,它等于失业补助金 $c$
110107

111108

112109
### 权衡取舍
@@ -136,15 +133,15 @@ $\beta$ 越小,代理人对未来效用的折现程度相对于当前效用就
136133

137134
为此,让$v^*(w)$表示当工资为$w \in \mathbb{W}$时,一个失业工人在当前时期开始时的总生命周期*价值*
138135

139-
具体来说,该个体手头有工资offer $w$。
136+
具体来说,我们考虑这样一种情况:一个失业者现在面临一个工资为 $w$ 的工作机会
140137

141-
更准确地说,$v^*(w)$表示当处于这种情况下的个体在当前和未来所有时间点做出*最优*决策时,目标函数{eq}`objective`的价值。
138+
那么,$v^*(w)$表示的是该失业者在当前和未来所有时间点做出*最优*决策时,目标函数{eq}`objective`的价值。
142139

143140
当然,计算$v^*(w)$并不简单,因为我们还不知道哪些决策是最优的,哪些不是!
144141

145-
但是可以将$v^*$看作一个函数,它为每个可能的工资$s$分配在手头有该offer时可获得的最大生命周期价值
142+
但是可以将$v^*$看作一个函数,它为每个可能的工资$w$分配在持有该工作机会时可获得的最大终身价值
146143

147-
一个关键的观察是,这个函数$v^*$必须满足以下递归关系
144+
一个关键点是,这个函数$v^*$必须满足以下递归关系: 对于 $\mathbb{W}$ 中的每一个可能的 $w$,我们有
148145

149146
```{math}
150147
:label: odu_pv
@@ -156,33 +153,29 @@ v^*(w)
156153
\right\}
157154
```
158155

159-
对于 $\mathbb{W}$ 中的每一个可能的 $w$。
160-
161156
这个重要的方程是**贝尔曼方程**的一个版本,这个方程在经济动态学和其他涉及长期规划的领域中无处不在。
162157

163158
其背后的直观理解如下:
164159

165-
* max运算中的第一项是接受当前报价的终身收益,因为
160+
* max运算中的第一项是接受当前工作机会的终身收益,因为
166161

167162
$$
168163
\frac{w}{1 - \beta} = w + \beta w + \beta^2 w + \cdots
169164
$$
170165

171-
* max运算中的第二项是**延续价值**即拒绝当前报价并在随后所有时期做出最优行为的终身收益
166+
* max运算中的第二项是**延续值**即拒绝当前工作机会并在随后所有时期做出最优行为的终身收益。
172167

173-
如果我们优化并从这两个选项中选择最佳选项,我们就能获得当前报价 $w$ 下的最大终身价值。
168+
通过从这两个选项中选择最优的一个,我们就能得到在当前工资报价 $w$ 下的最大终身价值。
174169

175-
但这恰恰就是 {eq}`odu_pv` 左边的 $v^*(w)$。
170+
而这恰恰就是 {eq}`odu_pv` 左边的 $v^*(w)$。
176171

177172
### 最优策略
178173

179174
假设现在我们能够求解 {eq}`odu_pv` 得到未知函数 $v^*$。
180175

181-
一旦我们掌握了这个函数,我们就可以做出最优行为(即做出
176+
一旦我们掌握了这个函数,我们就可以做出最优行为(即在接受和拒绝之间做出正确选择)。
182177

183-
在右侧选择最大值(在接受和拒绝之间)。
184-
185-
我们只需要在{eq}`odu_pv`右侧选择最大值即可。
178+
我们只需要在{eq}`odu_pv`的右侧选择最大值即可。
186179

187180
最优行动最好被理解为一个**策略**,它通常是一个从状态到行动的映射。
188181

@@ -218,7 +211,7 @@ $$
218211

219212
这里的 $\bar w$(称为*保留工资*)是一个取决于 $\beta, c$ 和工资分布的常数。
220213

221-
代理应当当且仅当当前工资报价超过保留工资时接受
214+
失业者当且仅当当前工作机会的工资超过保留工资时接受该工作
222215

223216
根据{eq}`reswage`,如果我们能计算出价值函数,就能计算出这个保留工资。
224217

@@ -270,7 +263,7 @@ v'(i)
270263
v(j) q (j)
271264
\right\}
272265
\quad
273-
\text{for } i = 1, \ldots, n
266+
\text{对于 } i = 1, \ldots, n
274267
```
275268

276269
第3步:计算 $v$ 和 $v'$ 之间的差异度量,例如 $\max_i |v(i)- v'(i)|$。
@@ -279,13 +272,13 @@ v'(i)
279272

280273
第5步:返回 $v$。
281274

282-
对于较小的容差,返回的函数 $v$ 是值函数 $v^*$ 的近似值。
275+
对于较小的容差,返回的函数 $v$ 是价值函数 $v^*$ 的近似值。
283276

284277
下面的理论将详细说明这一点。
285278

286279
### 不动点理论
287280

288-
这些想法背后的数学原理是什么
281+
这个算法背后的数学原理是什么
289282

290283
首先,通过以下方式定义从 $\mathbb R^n$ 到自身的映射 $T$:
291284

@@ -308,19 +301,19 @@ v'(i)
308301

309302
* 这是从初始猜测 $v$ 开始,应用 $k$ 次 $T$ 的结果
310303

311-
可以证明,$T$ 在 $\mathbb R^n$ 上满足[巴拿赫不动点定理](https://en.wikipedia.org/wiki/Banach_fixed-point_theorem)的条件。
304+
可以证明,$T$ 在 $\mathbb R^n$ 上满足[巴拿赫不动点定理](https://baike.baidu.com/item/%E5%B7%B4%E6%8B%BF%E8%B5%AB%E4%B8%8D%E5%8A%A8%E7%82%B9%E5%AE%9A%E7%90%86/9492042)的条件。
312305

313-
其中一个推论是 $T$ 在 $\mathbb R^n$ 中有唯一的不动点。
306+
一个推论是 $T$ 在 $\mathbb R^n$ 中有唯一的不动点。
314307

315308
* 即存在唯一的向量 $\bar v$ 使得 $T \bar v = \bar v$。
316309

317-
此外,从 $T$ 的定义可以直接得出这个不动点就是 $v^*$。
310+
而且,从 $T$ 的定义可以直接得出这个不动点就是 $v^*$。
318311

319312
巴拿赫收缩映射定理的第二个推论是,无论 $v$ 取何值,序列 $\{ T^k v \}$ 都会收敛到不动点 $v^*$。
320313

321314
### 实现
322315

323-
对于状态过程的分布 $q$,我们的默认选择是[Beta-二项分布](https://en.wikipedia.org/wiki/Beta-binomial_distribution)
316+
对于状态过程的分布 $q$,我们的默认选择是[Beta-二项分布](https://docs.scipy.org.cn/doc/scipy/tutorial/stats/discrete_betabinom.html)
324317

325318
```{code-cell} ipython3
326319
n, a, b = 50, 200, 100 # 默认参数
@@ -347,7 +340,7 @@ plt.show()
347340

348341
我们将使用Numba来加速我们的代码。
349342

350-
* 特别参见[我们关于Numba的讲座](https://python-programming.quantecon.org/numba.html)中对`@jitclass`的讨论。
343+
* 参见[我们关于Numba的讲座](https://python-programming.quantecon.org/numba.html)中对`@jitclass`的讨论。
351344

352345
以下内容通过提供一些类型来帮助Numba
353346

@@ -360,9 +353,7 @@ mccall_data = [
360353
]
361354
```
362355

363-
这是一个用于存储数据并计算状态-动作对值的类,
364-
即计算贝尔曼方程 {eq}`odu_pv2p` 右侧最大括号中的值,
365-
基于当前状态和任意可行动作。
356+
这是一个用于存储数据并计算状态-行动对的值的类,即基于当前状态和任意可行的行动,计算贝尔曼方程 {eq}`odu_pv2p` 右侧最大值括号中的值。
366357

367358
类中包含了默认参数值。
368359

@@ -381,8 +372,8 @@ class McCallModel:
381372
"""
382373
# 简化名称
383374
c, β, w, q = self.c, self.β, self.w, self.q
384-
# 评估每个状态-动作对的值
385-
# 考虑动作 = 接受或拒绝当前报价
375+
# 评估每个状态-行动对的值
376+
# 考虑行动 = 接受或拒绝当前报价
386377
accept = w[i] / (1 - β)
387378
reject = c + β * np.sum(v * q)
388379
@@ -430,7 +421,7 @@ plot_value_function_seq(mcm, ax)
430421
plt.show()
431422
```
432423

433-
你可以看到收敛正在发生:连续的迭代值越来越接近。
424+
你可以看到收敛的发生:连续的迭代值越来越接近。
434425

435426
这里有一个更严谨的迭代计算极限的方法,它会持续计算直到连续迭代之间的测量偏差小于容差值。
436427

@@ -469,7 +460,7 @@ def compute_reservation_wage(mcm,
469460
return (1 - β) * (c + β * np.sum(v * q))
470461
```
471462

472-
下一行计算在默认参数下的保留工资
463+
现在我们计算在默认参数下的保留工资
473464

474465
```{code-cell} ipython3
475466
compute_reservation_wage(mcm)
@@ -522,7 +513,7 @@ plt.show()
522513

523514
但对于我们的McCall搜索模型来说,还有一个更简单的方法,可以避免计算价值函数。
524515

525-
让 $h$ 表示继续值
516+
让 $h$ 表示延续值
526517

527518
```{math}
528519
:label: j1
@@ -581,7 +572,7 @@ h'
581572

582573
我们可以再次使用巴拿赫不动点定理来证明这个过程总是收敛的。
583574

584-
这里的一个重大区别是,我们是在对一个标量 $h$ 进行迭代,而不是对一个 $n$ 维向量 $v(i), i = 1, \ldots, n$ 进行迭代。
575+
与之前的方法相比,这里有一个重要区别:我们现在是对单个标量 $h$ 进行迭代,而不是像之前那样对 $n$ 维向量 $v(i), i = 1, \ldots, n$ 进行迭代,这使得计算过程更加简单
585576

586577
以下是实现代码:
587578

@@ -614,7 +605,7 @@ def compute_reservation_wage_two(mcm,
614605
return (1 - β) * h
615606
```
616607

617-
你可以使用以下代码来解决下面的练习
608+
你可以使用以上代码来完成下面的练习
618609

619610
## 练习
620611

@@ -625,7 +616,7 @@ def compute_reservation_wage_two(mcm,
625616
626617
> `c_vals = np.linspace(10, 40, 25)`
627618
628-
也就是说,让代理人从失业状态开始,根据给定参数计算其保留工资,然后模拟看需要多长时间才能接受工作。
619+
也就是说,让失业者从失业状态开始,根据给定参数计算其保留工资,然后模拟看需要多长时间才能接受工作。
629620
630621
重复多次并取平均值。
631622
@@ -636,7 +627,7 @@ def compute_reservation_wage_two(mcm,
636627
:class: dropdown
637628
```
638629

639-
这是一个解决方案
630+
参考答案
640631

641632
```{code-cell} ipython3
642633
cdf = np.cumsum(q_default)
@@ -689,7 +680,7 @@ plt.show()
689680

690681
本练习的目的是展示如何将上文使用的离散工资分布替换为连续分布。
691682

692-
这是一个重要的主题,因为许多常用的分布都是连续的(即具有密度函数)。
683+
这是一个重要内容,因为许多常用的分布都是连续的(即具有密度函数)。
693684

694685
幸运的是,在我们的简单模型中理论变化很小。
695686

@@ -742,7 +733,7 @@ h
742733
:class: dropdown
743734
```
744735

745-
这是一个解决方案
736+
参考答案
746737

747738
```{code-cell} ipython3
748739
mccall_data_continuous = [
@@ -771,7 +762,7 @@ def compute_reservation_wage_continuous(mcmc, max_iter=500, tol=1e-5):
771762
772763
c, β, σ, μ, w_draws = mcmc.c, mcmc.β, mcmc.σ, mcmc.μ, mcmc.w_draws
773764
774-
h = np.mean(w_draws) / (1 - β) # 初始猜测
765+
h = np.mean(w_draws) / (1 - β) # 初始值猜测
775766
i = 0
776767
error = tol + 1
777768
while i < max_iter and error > tol:
@@ -791,7 +782,7 @@ def compute_reservation_wage_continuous(mcmc, max_iter=500, tol=1e-5):
791782

792783
现在我们研究保留工资如何随着 $c$ 和 $\beta$ 变化。
793784

794-
我们将使用等高线图来进行这项研究
785+
我们将使用等值线图来分析这个问题
795786

796787
```{code-cell} ipython3
797788
grid_size = 25

lectures/mccall_q.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ kernelspec:
1111
name: python3
1212
---
1313

14-
# 求职搜索 VII:McCall工人的Q学习
14+
# 工作搜寻 VII:McCall工人的Q学习
1515

1616
## 概述
1717

0 commit comments

Comments
 (0)