@@ -34,9 +34,9 @@ tags: [hide-output]
34
34
35
35
## 概述
36
36
37
- 在本讲座中,我们求解一个具有持久性和暂时性工资成分的 {doc}` McCall求职搜索模型 <mccall_model> ` 。
37
+ 在本讲座中,我们求解一个工资报价由持久性和暂时性成分组成的 {doc}` McCall求职搜索模型 <mccall_model> ` 。
38
38
39
- 换句话说,我们放宽了工资随机性在时间上相互独立的假设 。
39
+ 换句话说,我们放宽了工资随机性在时间上独立的假设 。
40
40
41
41
同时,我们将回到假设工作是永久性的,不会发生离职。
42
42
@@ -60,7 +60,7 @@ from numba.experimental import jitclass
60
60
61
61
## 模型
62
62
63
- 每个时间点的工资由下式给出 :
63
+ 每个时期的工资由下式给出 :
64
64
65
65
$$
66
66
w_t = \exp(z_t) + y_t
@@ -74,13 +74,13 @@ y_t \sim \exp(\mu + s \zeta_t)
74
74
z_{t+1} = d + \rho z_t + \sigma \epsilon_{t+1}
75
75
$$
76
76
77
- 这里 $\{ \zeta_t \} $ 和 $\{ \epsilon_t \} $ 都是独立同分布的标准正态分布 。
77
+ 这里 $\{ \zeta_t \} $ 和 $\{ \epsilon_t \} $ 都是独立同分布的标准正态随机变量 。
78
78
79
79
这里 $\{ y_t\} $ 是暂时性成分,$\{ z_t\} $ 是持久性成分。
80
80
81
81
如前所述,劳动者可以:
82
82
83
- 1 . 接受报价并在该工资水平永久工作 ,或
83
+ 1 . 接受当前工作机会,并在该工资水平永久工作 ,或
84
84
1 . 领取失业补偿金 $c$ 并等待下一期。
85
85
86
86
价值函数满足贝尔曼方程:
@@ -93,77 +93,75 @@ v^*(w, z) =
93
93
\right\}
94
94
$$
95
95
96
- 在这个表达式中,$u$ 是效用函数,$\mathbb E_z$ 是给定当前 $z$ 时下一期变量的期望 。
96
+ 在这个表达式中,$u$ 是效用函数,$\mathbb E_z$ 是给定当前 $z$ 时下一期变量的条件期望 。
97
97
98
- 变量 $z$ 作为状态进入贝尔曼方程,因为它的当前值有助于预测未来工资 。
98
+ 变量 $z$ 作为状态变量进入贝尔曼方程,这是因为它的当前值有助于预测未来工资 。
99
99
100
100
### 简化
101
101
102
- 有一种方法可以减少这个问题的维度,这大大加快了计算速度。
102
+ 我们可以通过以下方法降低问题维度,显著提升计算效率:
103
103
104
- 首先,让 $f^* $ 为继续价值函数 ,定义为:
104
+ 首先,让 $f^* $ 为延续价值函数 ,定义为:
105
105
106
106
$$
107
107
f^*(z) := u(c) + \beta \, \mathbb E_z v^*(w', z')
108
108
$$
109
109
110
- 贝尔曼方程现在可以写成 :
110
+ 现在贝尔曼方程可以写成 :
111
111
112
112
$$
113
113
v^*(w, z) = \max \left\{ \frac{u(w)}{1-\beta}, \, f^*(z) \right\}
114
114
$$
115
115
116
- 结合最后两个表达式,我们看到继续价值函数满足 :
116
+ 结合上述两个表达式,我们看到延续价值函数满足 :
117
117
118
118
$$
119
119
f^*(z) = u(c) + \beta \, \mathbb E_z \max \left\{ \frac{u(w')}{1-\beta}, f^*(z') \right\}
120
120
$$
121
121
122
- 我们将通过引入算子来求解这个函数方程 :
122
+ 为求解该函数方程,我们引入算子$Q$ :
123
123
124
124
$$
125
125
Qf(z) = u(c) + \beta \, \mathbb E_z \max \left\{ \frac{u(w')}{1-\beta}, f(z') \right\}
126
126
$$
127
127
128
128
根据构造,$f^* $ 是 $Q$ 的不动点,即 $Q f^* = f^* $。
129
129
130
- 在温和的假设下 ,可以证明 $Q$ 是 $\mathbb R$ 上连续函数空间上的 [ 压缩映射] ( https://en.wikipedia.org/wiki/Contraction_mapping ) 。
130
+ 在较弱的假设下 ,可以证明 $Q$ 是 $\mathbb R$ 上连续函数空间上的一个 [ 压缩映射] ( https://en.wikipedia.org/wiki/Contraction_mapping ) 。
131
131
132
- 根据巴拿赫压缩映射定理,这意味着 $f^* $ 是唯一的不动点,我们可以从任何合理的初始条件开始通过迭代 $Q$ 来计算它 。
132
+ 根据巴拿赫压缩映射定理,$f^* $ 是唯一的不动点,我们可以从任何合理的初始条件开始通过迭代 $Q$ 来得到$f^ * $ 。
133
133
134
- 一旦我们有 $f^* $,我们就可以通过在接受报酬超过继续价值时停止来求解搜寻问题 ,即:
134
+ 求得 $f^* $后,这一搜索问题的解就是当接受工作的收益超过延续价值时停止求职 ,即:
135
135
136
136
$$
137
137
\frac{u(w)}{1-\beta} \geq f^*(z)
138
138
$$
139
139
140
140
对于效用函数,我们取 $u(c) = \ln(c)$。
141
141
142
- 保留工资是最后一个表达式中等式成立的工资。
143
-
144
- 即:
142
+ 保留工资是最后一个表达式中等式成立的工资:
145
143
146
144
``` {math}
147
145
:label: corr_mcm_barw
148
146
149
147
\bar w (z) := \exp(f^*(z) (1-\beta))
150
148
```
151
149
152
- 我们的主要目标是求解保留规则并研究其性质和含义 。
150
+ 我们的主要目标是求解该保留工资规则,并分析其性质与含义 。
153
151
154
152
## 实现
155
153
156
154
让 $f$ 作为我们对 $f^* $ 的初始猜测。
157
155
158
156
在迭代时,我们使用{doc}` 拟合价值函数迭代 <mccall_fitted_vfi> ` 算法。
159
157
160
- 特别地,$f$ 和所有后续迭代都存储为网格上的值向量 。
158
+ 特别地,$f$ 和所有后续迭代值都作为向量存储在一个网格 。
161
159
162
- 这些点根据需要通过分段线性插值插值成函数 。
160
+ 这些点通过分段线性插值转换为函数 。
163
161
164
- $Qf$ 定义中的积分通过蒙特卡洛计算 。
162
+ $Qf$ 定义中的期望项通过蒙特卡洛计算 。
165
163
166
- 以下列表通过提供我们将使用的数据类型信息来帮助Numba :
164
+ 以下类型声明帮助 Numba 进行类型推断 :
167
165
168
166
``` {code-cell} python3
169
167
job_search_data = [
@@ -172,14 +170,14 @@ job_search_data = [
172
170
('d', float64), # 持久性状态位移系数
173
171
('ρ', float64), # 持久性状态相关系数
174
172
('σ', float64), # 状态波动率
175
- ('β', float64), # 贴现因子
176
- ('c', float64), # 失业补偿金
173
+ ('β', float64), # 折现因子
174
+ ('c', float64), # 失业补助
177
175
('z_grid', float64[:]), # 状态空间网格
178
176
('e_draws', float64[:,:]) # 积分用的蒙特卡洛抽取
179
177
]
180
178
```
181
179
182
- 这是一个存储数据和贝尔曼方程右侧的类 。
180
+ 这是一个存储数据和贝尔曼方程右侧项的类 。
183
181
184
182
默认参数值嵌入在类中。
185
183
@@ -193,8 +191,8 @@ class JobSearch:
193
191
d=0.0, # 持久性状态位移系数
194
192
ρ=0.9, # 持久性状态相关系数
195
193
σ=0.1, # 状态波动率
196
- β=0.98, # 贴现因子
197
- c=5, # 失业补偿金
194
+ β=0.98, # 折现因子
195
+ c=5, # 失业补助
198
196
mc_size=1000,
199
197
grid_size=100):
200
198
@@ -208,7 +206,7 @@ class JobSearch:
208
206
a, b = z_mean - k * z_sd, z_mean + k * z_sd
209
207
self.z_grid = np.linspace(a, b, grid_size)
210
208
211
- # 抽取并存储冲击
209
+ # 生成并存储冲击
212
210
np.random.seed(1234)
213
211
self.e_draws = randn(2, mc_size)
214
212
@@ -243,8 +241,8 @@ def Q(js, f_in, f_out):
243
241
e1, e2 = js.e_draws[:, m]
244
242
z_next = d + ρ * z + σ * e1
245
243
go_val = np.interp(z_next, js.z_grid, f_in) # f(z')
246
- y_next = np.exp(μ + s * e2) # y' 抽取
247
- w_next = np.exp(z_next) + y_next # w' 抽取
244
+ y_next = np.exp(μ + s * e2) # 生成 y'
245
+ w_next = np.exp(z_next) + y_next # 生成 w'
248
246
stop_val = np.log(w_next) / (1 - β)
249
247
expectation += max(stop_val, go_val)
250
248
expectation = expectation / M
@@ -307,9 +305,9 @@ ax.legend()
307
305
plt.show()
308
306
```
309
307
310
- 注意保留工资随当前状态 $z$ 增加 。
308
+ 注意保留工资随当前状态 $z$ 单调递增 。
311
309
312
- 这是因为更高的状态导致代理人预测更高的未来工资,增加了等待的期权价值 。
310
+ 这是因为更高的状态导致代理人预测更高的未来工资,增加了等待的价值 。
313
311
314
312
让我们尝试改变失业补偿金并观察其对保留工资的影响:
315
313
@@ -329,7 +327,7 @@ ax.legend()
329
327
plt.show()
330
328
```
331
329
332
- 正如预期的那样,更高的失业补偿金在所有状态值下都提高了保留工资 。
330
+ 正如预期的那样,更高的失业补偿金在所有状态下都提高了保留工资 。
333
331
334
332
## 失业持续时间
335
333
@@ -356,7 +354,7 @@ def compute_unemployment_duration(js, seed=1234):
356
354
357
355
unemployed = True
358
356
while unemployed and t < t_max:
359
- # 抽取当前工资
357
+ # 生成当前工资
360
358
y = np.exp(μ + s * np.random.randn())
361
359
w = np.exp(z) + y
362
360
res_wage = np.exp(f_star_function(z) * (1 - β))
@@ -380,7 +378,7 @@ def compute_unemployment_duration(js, seed=1234):
380
378
return compute_expected_tau()
381
379
```
382
380
383
- 让我们用一些可能的失业补偿金值来测试这个 :
381
+ 让我们用一些可能的失业补偿金值来计算失业持续时间 :
384
382
385
383
``` {code-cell} ipython3
386
384
c_vals = np.linspace(1.0, 10.0, 8)
@@ -391,7 +389,7 @@ for i, c in enumerate(c_vals):
391
389
durations[i] = τ
392
390
```
393
391
394
- 这是结果图 :
392
+ 这是可视化结果 :
395
393
396
394
``` {code-cell} ipython3
397
395
fig, ax = plt.subplots()
@@ -410,10 +408,10 @@ plt.show()
410
408
``` {exercise}
411
409
:label: mc_ex1
412
410
413
- 研究平均失业持续时间如何随贴现因子 $\beta$ 变化。
411
+ 研究平均失业持续时间如何随折现因子 $\beta$ 变化。
414
412
415
- * 你的先验预期是什么 ?
416
- * 结果是否符合预期 ?
413
+ * 你的预期是什么 ?
414
+ * 结果是否符合你的预期 ?
417
415
```
418
416
419
417
``` {solution-start} mc_ex1
0 commit comments