From 99c9f64551a5a7b4f88d4716b39abf573ad6ac64 Mon Sep 17 00:00:00 2001 From: nisha617 Date: Sun, 8 Jun 2025 17:42:04 +1000 Subject: [PATCH] Add files via upload --- lectures/mccall_correlated.md | 78 +++++++++++++++++------------------ 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/lectures/mccall_correlated.md b/lectures/mccall_correlated.md index eda45872..78cfbd8b 100644 --- a/lectures/mccall_correlated.md +++ b/lectures/mccall_correlated.md @@ -34,9 +34,9 @@ tags: [hide-output] ## 概述 -在本讲座中,我们求解一个具有持久性和暂时性工资成分的{doc}`McCall求职搜索模型 `。 +在本讲座中,我们求解一个工资报价由持久性和暂时性成分组成的{doc}`McCall求职搜索模型 `。 -换句话说,我们放宽了工资随机性在时间上相互独立的假设。 +换句话说,我们放宽了工资随机性在时间上独立的假设。 同时,我们将回到假设工作是永久性的,不会发生离职。 @@ -60,7 +60,7 @@ from numba.experimental import jitclass ## 模型 -每个时间点的工资由下式给出: +每个时期的工资由下式给出: $$ w_t = \exp(z_t) + y_t @@ -74,13 +74,13 @@ y_t \sim \exp(\mu + s \zeta_t) z_{t+1} = d + \rho z_t + \sigma \epsilon_{t+1} $$ -这里 $\{ \zeta_t \}$ 和 $\{ \epsilon_t \}$ 都是独立同分布的标准正态分布。 +这里 $\{ \zeta_t \}$ 和 $\{ \epsilon_t \}$ 都是独立同分布的标准正态随机变量。 这里 $\{y_t\}$ 是暂时性成分,$\{z_t\}$ 是持久性成分。 如前所述,劳动者可以: -1. 接受报价并在该工资水平永久工作,或 +1. 接受当前工作机会,并在该工资水平永久工作,或 1. 领取失业补偿金 $c$ 并等待下一期。 价值函数满足贝尔曼方程: @@ -93,33 +93,33 @@ v^*(w, z) = \right\} $$ -在这个表达式中,$u$ 是效用函数,$\mathbb E_z$ 是给定当前 $z$ 时下一期变量的期望。 +在这个表达式中,$u$ 是效用函数,$\mathbb E_z$ 是给定当前 $z$ 时下一期变量的条件期望。 -变量 $z$ 作为状态进入贝尔曼方程,因为它的当前值有助于预测未来工资。 +变量 $z$ 作为状态变量进入贝尔曼方程,这是因为它的当前值有助于预测未来工资。 ### 简化 -有一种方法可以减少这个问题的维度,这大大加快了计算速度。 +我们可以通过以下方法降低问题维度,显著提升计算效率: -首先,让 $f^*$ 为继续价值函数,定义为: +首先,让 $f^*$ 为延续价值函数,定义为: $$ f^*(z) := u(c) + \beta \, \mathbb E_z v^*(w', z') $$ -贝尔曼方程现在可以写成: +现在贝尔曼方程可以写成: $$ v^*(w, z) = \max \left\{ \frac{u(w)}{1-\beta}, \, f^*(z) \right\} $$ -结合最后两个表达式,我们看到继续价值函数满足: +结合上述两个表达式,我们看到延续价值函数满足: $$ f^*(z) = u(c) + \beta \, \mathbb E_z \max \left\{ \frac{u(w')}{1-\beta}, f^*(z') \right\} $$ -我们将通过引入算子来求解这个函数方程: +为求解该函数方程,我们引入算子$Q$: $$ Qf(z) = u(c) + \beta \, \mathbb E_z \max \left\{ \frac{u(w')}{1-\beta}, f(z') \right\} @@ -127,11 +127,11 @@ $$ 根据构造,$f^*$ 是 $Q$ 的不动点,即 $Q f^* = f^*$。 -在温和的假设下,可以证明 $Q$ 是 $\mathbb R$ 上连续函数空间上的[压缩映射](https://en.wikipedia.org/wiki/Contraction_mapping)。 +在较弱的假设下,可以证明 $Q$ 是 $\mathbb R$ 上连续函数空间上的一个[压缩映射](https://en.wikipedia.org/wiki/Contraction_mapping)。 -根据巴拿赫压缩映射定理,这意味着 $f^*$ 是唯一的不动点,我们可以从任何合理的初始条件开始通过迭代 $Q$ 来计算它。 +根据巴拿赫压缩映射定理,$f^*$ 是唯一的不动点,我们可以从任何合理的初始条件开始通过迭代 $Q$ 来得到$f^*$。 -一旦我们有 $f^*$,我们就可以通过在接受报酬超过继续价值时停止来求解搜寻问题,即: +求得 $f^*$后,这一搜索问题的解就是当接受工作的收益超过延续价值时停止求职,即: $$ \frac{u(w)}{1-\beta} \geq f^*(z) @@ -139,9 +139,7 @@ $$ 对于效用函数,我们取 $u(c) = \ln(c)$。 -保留工资是最后一个表达式中等式成立的工资。 - -即: +保留工资是最后一个表达式中等式成立的工资: ```{math} :label: corr_mcm_barw @@ -149,7 +147,7 @@ $$ \bar w (z) := \exp(f^*(z) (1-\beta)) ``` -我们的主要目标是求解保留规则并研究其性质和含义。 +我们的主要目标是求解该保留工资规则,并分析其性质与含义。 ## 实现 @@ -157,13 +155,13 @@ $$ 在迭代时,我们使用{doc}`拟合价值函数迭代 `算法。 -特别地,$f$ 和所有后续迭代都存储为网格上的值向量。 +特别地,$f$ 和所有后续迭代值都作为向量存储在一个网格。 -这些点根据需要通过分段线性插值插值成函数。 +这些点通过分段线性插值转换为函数。 -$Qf$ 定义中的积分通过蒙特卡洛计算。 +$Qf$ 定义中的期望项通过蒙特卡洛计算。 -以下列表通过提供我们将使用的数据类型信息来帮助Numba: +以下类型声明帮助 Numba 进行类型推断: ```{code-cell} python3 job_search_data = [ @@ -172,14 +170,14 @@ job_search_data = [ ('d', float64), # 持久性状态位移系数 ('ρ', float64), # 持久性状态相关系数 ('σ', float64), # 状态波动率 - ('β', float64), # 贴现因子 - ('c', float64), # 失业补偿金 + ('β', float64), # 折现因子 + ('c', float64), # 失业补助 ('z_grid', float64[:]), # 状态空间网格 ('e_draws', float64[:,:]) # 积分用的蒙特卡洛抽取 ] ``` -这是一个存储数据和贝尔曼方程右侧的类。 +这是一个存储数据和贝尔曼方程右侧项的类。 默认参数值嵌入在类中。 @@ -193,8 +191,8 @@ class JobSearch: d=0.0, # 持久性状态位移系数 ρ=0.9, # 持久性状态相关系数 σ=0.1, # 状态波动率 - β=0.98, # 贴现因子 - c=5, # 失业补偿金 + β=0.98, # 折现因子 + c=5, # 失业补助 mc_size=1000, grid_size=100): @@ -208,7 +206,7 @@ class JobSearch: a, b = z_mean - k * z_sd, z_mean + k * z_sd self.z_grid = np.linspace(a, b, grid_size) - # 抽取并存储冲击 + # 生成并存储冲击 np.random.seed(1234) self.e_draws = randn(2, mc_size) @@ -243,8 +241,8 @@ def Q(js, f_in, f_out): e1, e2 = js.e_draws[:, m] z_next = d + ρ * z + σ * e1 go_val = np.interp(z_next, js.z_grid, f_in) # f(z') - y_next = np.exp(μ + s * e2) # y' 抽取 - w_next = np.exp(z_next) + y_next # w' 抽取 + y_next = np.exp(μ + s * e2) # 生成 y' + w_next = np.exp(z_next) + y_next # 生成 w' stop_val = np.log(w_next) / (1 - β) expectation += max(stop_val, go_val) expectation = expectation / M @@ -307,9 +305,9 @@ ax.legend() plt.show() ``` -注意保留工资随当前状态 $z$ 增加。 +注意保留工资随当前状态 $z$ 单调递增。 -这是因为更高的状态导致代理人预测更高的未来工资,增加了等待的期权价值。 +这是因为更高的状态导致代理人预测更高的未来工资,增加了等待的价值。 让我们尝试改变失业补偿金并观察其对保留工资的影响: @@ -329,7 +327,7 @@ ax.legend() plt.show() ``` -正如预期的那样,更高的失业补偿金在所有状态值下都提高了保留工资。 +正如预期的那样,更高的失业补偿金在所有状态下都提高了保留工资。 ## 失业持续时间 @@ -356,7 +354,7 @@ def compute_unemployment_duration(js, seed=1234): unemployed = True while unemployed and t < t_max: - # 抽取当前工资 + # 生成当前工资 y = np.exp(μ + s * np.random.randn()) w = np.exp(z) + y res_wage = np.exp(f_star_function(z) * (1 - β)) @@ -380,7 +378,7 @@ def compute_unemployment_duration(js, seed=1234): return compute_expected_tau() ``` -让我们用一些可能的失业补偿金值来测试这个: +让我们用一些可能的失业补偿金值来计算失业持续时间: ```{code-cell} ipython3 c_vals = np.linspace(1.0, 10.0, 8) @@ -391,7 +389,7 @@ for i, c in enumerate(c_vals): durations[i] = τ ``` -这是结果图: +这是可视化结果: ```{code-cell} ipython3 fig, ax = plt.subplots() @@ -410,10 +408,10 @@ plt.show() ```{exercise} :label: mc_ex1 -研究平均失业持续时间如何随贴现因子 $\beta$ 变化。 +研究平均失业持续时间如何随折现因子 $\beta$ 变化。 -* 你的先验预期是什么? -* 结果是否符合预期? +* 你的预期是什么? +* 结果是否符合你的预期? ``` ```{solution-start} mc_ex1