@@ -3,10 +3,12 @@ jupytext:
33 text_representation :
44 extension : .md
55 format_name : myst
6+ format_version : 0.13
7+ jupytext_version : 1.17.1
68kernelspec :
7- display_name : Python 3
8- language : python
99 name : python3
10+ display_name : Python 3 (ipykernel)
11+ language : python
1012---
1113
1214(mccall_with_sep)=
@@ -29,31 +31,30 @@ kernelspec:
2931
3032除了Anaconda中包含的内容外,本讲座还需要以下库:
3133
32- ``` {code-cell} ipython
33- ---
34- tags: [hide-output]
35- ---
34+ ``` {code-cell} ipython3
35+ :tags: [hide-output]
36+
3637!pip install quantecon
3738```
3839
3940## 概述
4041
4142在{doc}` 之前的讲座 <mccall_model> ` 中,我们研究了McCall工作搜寻模型 {cite}` McCall1970 ` 作为理解失业和劳动者决策的一种方式。
4243
43- 该模型的一个不现实特征是每份工作都是永久性的 。
44+ 在之前的模型中,我们假设工作是永久性的,这不太符合现实 。
4445
45- 在本讲座中,我们通过引入工作离职来扩展McCall模型 。
46+ 本讲座将通过引入离职的可能性来使McCall模型更加贴近现实 。
4647
47- 一旦引入离职,个体就会将 :
48+ 一旦引入离职,个体会有不同的考虑 :
4849
49- * 失去工作视为资本损失,以及
50- * 失业期视为寻找可接受工作的 * 投资*
50+ * 失业不仅仅是一个暂时状态,而是随时可能发生的资本损失
51+ * 失业期间的工作搜寻成为寻找下一份工作的 * 投资*
5152
52- 另一个小的补充是引入效用函数以使劳动者偏好更加复杂 。
53+ 我们还将引入效用函数来更好地刻画劳动者的偏好 。
5354
54- 我们需要以下导入 :
55+ 让我们首先导入所需的包 :
5556
56- ``` {code-cell} ipython
57+ ``` {code-cell} ipython3
5758import matplotlib.pyplot as plt
5859import matplotlib as mpl
5960FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
@@ -93,13 +94,13 @@ from quantecon.distributions import BetaBinomial
9394
9495### 工资过程
9596
96- 目前我们将放弃在 {doc}` 基础模型 <mccall_model> ` 中保持的状态过程和工资过程的分离 。
97+ 为了简化模型,我们不再像 {doc}` 基础模型 <mccall_model> ` 那样将状态过程和工资过程分开 。
9798
98- 特别是,我们简单地假设工资报价 $\{ w_t \} $是独立同分布的,具有共同的分布 $q$。
99+ 我们直接假设工资报价 $\{ w_t\} $是从一个共同分布 $q$中独立抽取的 。
99100
100- 可能的工资值集合用 $\mathbb W$表示 。
101+ 我们用 $\mathbb W$表示所有可能的工资值集合 。
101102
102- (稍后我们将回到具有驱动随机结果的独立状态过程 $\{ s_t\} $,因为这种表述在更复杂的模型中通常更方便 。)
103+ (在后面的章节中,我们会重新引入独立的状态过程 $\{ s_t\} $来驱动随机结果,因为这种方式在处理更复杂的模型时会更加方便 。)
103104
104105### 时间安排和决策
105106
@@ -115,7 +116,7 @@ from quantecon.distributions import BetaBinomial
1151161 . 获得效用$u(w_e)$,并且
1161171 . 以某个(小的)概率$\alpha$被解雇。
117118
118- 如果当前* 失业* ,劳动者要么接受要么拒绝当前报价 $w_t$。
119+ 如果当前* 失业* ,劳动者可以接受或拒绝当前报价 $w_t$。
119120
120121如果他接受,则立即以工资$w_t$开始工作。
121122
@@ -166,11 +167,11 @@ h(w) = \max \left\{ v(w), \, u(c) + \beta \sum_{w' \in \mathbb W} h(w') q(w') \
166167方程{eq}` bell1_mccall ` 表达了以工资$w_e$就业的价值,包括:
167168
168169* 当前报酬$u(w_e)$加上
169- * 考虑到$\alpha$被解雇概率的贴现预期报酬
170+ * 考虑到$\alpha$被解雇概率的贴现预期价值
170171
171172方程{eq}` bell2_mccall ` 表达了失业且手中有报价$w$的价值,作为两个选项的最大值:接受或拒绝当前报价。
172173
173- 接受使劳动者转为就业,因此获得报酬 $v(w)$。
174+ 接受使劳动者转为就业,因此获得价值 $v(w)$。
174175
175176拒绝导致失业补偿和明天的失业。
176177
@@ -238,12 +239,11 @@ v(w) = u(w) + \beta
238239然后我们可以确定劳动者的最优行为。
239240
240241从{eq}` bell2_mccall ` 中,我们看到失业个体接受当前报价$w$如果$v(w) \geq u(c) + \beta d$。
242+ 这表明接受工作的价值超过了继续搜索的预期价值。
241243
242- 这意味着接受的价值高于拒绝的预期价值。
243-
244- 显然$v$(至少是弱)随$w$增加,因为个体永远不会因更高的工资报价而变得更差。
244+ 由于更高的工资报价不会让个体更差,$v$是关于$w$的(弱)递增函数。
245245
246- 因此,我们可以将最优选择表达为接受工资报价 $w$当且仅当 :
246+ 这意味着个体的最优策略可以用一个保留工资来表示 - 当且仅当工资报价 $w$超过某个临界值时接受工作 :
247247
248248$$
249249w \geq \bar w
253253
254254### 求解贝尔曼方程
255255
256- 我们将使用与 {doc}` 第一个工作搜寻讲座 <mccall_model> ` 中相同的迭代方法来求解贝尔曼方程 。
256+ 我们将采用与 {doc}` 第一个工作搜寻讲座 <mccall_model> ` 相同的迭代方法来求解贝尔曼方程 。
257257
258- 这里这包括 :
258+ 具体步骤如下 :
259259
260- 1 . 对$d$和$v$做出猜测
261- 1 . 将这些猜测代入{eq}` bell02_mccall ` 和{eq}` bell01_mccall ` 的右侧
262- 1 . 从这个规则更新左侧,然后重复
260+ 1 . 首先对$d$和$v$的值进行初始猜测
261+ 1 . 将这些猜测值代入{eq}` bell02_mccall ` 和{eq}` bell01_mccall ` 右侧的表达式
262+ 1 . 计算得到新的左侧值,并用这些新值更新猜测
263+ 1 . 重复以上步骤直到收敛
263264
264265换句话说,我们使用以下规则进行迭代:
265266
@@ -283,7 +284,7 @@ v_{n+1}(w) = u(w) + \beta
283284
284285如前所述,系统总是收敛到真实解---在这种情况下,是满足{eq}` bell02_mccall ` 和{eq}` bell01_mccall ` 的$v$和$d$。
285286
286- (可以通过Banach压缩映射定理获得证明 。)
287+ (可以通过巴拿赫压缩映射定理获得证明 。)
287288
288289## 实现
289290
@@ -295,25 +296,25 @@ v_{n+1}(w) = u(w) + \beta
295296
296297默认效用函数是CRRA效用函数:
297298
298- ``` {code-cell} python3
299+ ``` {code-cell} ipython3
299300@jit
300301def u(c, σ=2.0):
301302 return (c**(1 - σ) - 1) / (1 - σ)
302303```
303304
304- 另外,这是一个基于BetaBinomial分布的默认工资分布 :
305+ 另外,这是一个基于Beta-二项分布的默认工资分布 :
305306
306- ``` {code-cell} python3
307+ ``` {code-cell} ipython3
307308n = 60 # w的n个可能结果
308309w_default = np.linspace(10, 20, n) # 10到20之间的工资
309310a, b = 600, 400 # 形状参数
310311dist = BetaBinomial(n-1, a, b)
311312q_default = dist.pdf()
312313```
313314
314- 这是我们的McCall模型与离职的jitted类 :
315+ 这是我们的McCall模型与离职的即时编译类 :
315316
316- ``` {code-cell} python3
317+ ``` {code-cell} ipython3
317318mccall_data = [
318319 ('α', float64), # 工作离职率
319320 ('β', float64), # 贴现因子
@@ -351,7 +352,7 @@ class McCallModel:
351352
352353然后我们将当前迭代作为近似解返回。
353354
354- ``` {code-cell} python3
355+ ``` {code-cell} ipython3
355356@jit
356357def solve_model(mcm, tol=1e-5, max_iter=2000):
357358 """
@@ -387,7 +388,7 @@ def solve_model(mcm, tol=1e-5, max_iter=2000):
387388
388389我们将使用代码中的默认参数化。
389390
390- ``` {code-cell} python3
391+ ``` {code-cell} ipython3
391392mcm = McCallModel()
392393v, d = solve_model(mcm)
393394h = u(mcm.c) + mcm.β * d
@@ -409,7 +410,7 @@ plt.show()
409410
410411这是一个函数` compute_reservation_wage ` ,它接受` McCallModel ` 的实例并返回相关的保留工资。
411412
412- ``` {code-cell} python3
413+ ``` {code-cell} ipython3
413414@jit
414415def compute_reservation_wage(mcm):
415416 """
@@ -431,7 +432,9 @@ def compute_reservation_wage(mcm):
431432
432433## 参数的影响
433434
434- 在下面的每个实例中,我们将向你展示一个图形,然后要求你在练习中重现它。
435+ 现在我们将研究保留工资如何随不同参数变化。
436+
437+ 对于每个参数,我们会展示一副图,并在练习中让你动手来重现这些图形。
435438
436439### 保留工资和失业补偿
437440
@@ -485,7 +488,7 @@ def compute_reservation_wage(mcm):
485488
486489关于水平轴上的值,使用:
487490
488- ``` {code-cell} python3
491+ ``` {code-cell} ipython3
489492grid_size = 25
490493c_vals = np.linspace(2, 12, grid_size) # 失业补偿
491494beta_vals = np.linspace(0.8, 0.99, grid_size) # 贴现因子
@@ -499,9 +502,9 @@ alpha_vals = np.linspace(0.05, 0.5, grid_size) # 离职率
499502:class: dropdown
500503```
501504
502- 这是第一个图 。
505+ 这是第一幅图 。
503506
504- ``` {code-cell} python3
507+ ``` {code-cell} ipython3
505508mcm = McCallModel()
506509
507510w_bar_vals = np.empty_like(c_vals)
@@ -521,9 +524,9 @@ ax.legend()
521524plt.show()
522525```
523526
524- 这是第二个图 。
527+ 这是第二幅图 。
525528
526- ``` {code-cell} python3
529+ ``` {code-cell} ipython3
527530fig, ax = plt.subplots()
528531
529532for i, β in enumerate(beta_vals):
@@ -538,9 +541,9 @@ ax.legend()
538541plt.show()
539542```
540543
541- 这是第三个图 。
544+ 这是第三幅图 。
542545
543- ``` {code-cell} python3
546+ ``` {code-cell} ipython3
544547fig, ax = plt.subplots()
545548
546549for i, α in enumerate(alpha_vals):
@@ -556,4 +559,4 @@ plt.show()
556559```
557560
558561``` {solution-end}
559- ```
562+ ```
0 commit comments