diff --git a/lectures/aiyagari.md b/lectures/aiyagari.md index c74a618..bbe5db7 100644 --- a/lectures/aiyagari.md +++ b/lectures/aiyagari.md @@ -169,9 +169,9 @@ w(r) = A (1 - \alpha) (A \alpha / (r + \delta))^{\alpha / (1 - \alpha)} * 价格诱导的行为产生的总量与价格一致 * 总量和价格随时间保持不变 -更详细地说,SREE列出了价格、储蓄和生产政策的集合,使得: +更详细地说,SREE列出了价格、储蓄和生产策略的集合,使得: -* 家庭在给定价格下选择指定的储蓄政策 +* 家庭在给定价格下选择指定的储蓄策略 * 企业在相同价格下最大化利润 * 产生的总量与价格一致;特别是,资本需求等于供给 * 总量(定义为横截面平均值)保持不变 @@ -180,8 +180,8 @@ w(r) = A (1 - \alpha) (A \alpha / (r + \delta))^{\alpha / (1 - \alpha)} 1. 选择一个提议的总资本量 $K$ 2. 确定相应的价格,其中利率 $r$ 由 {eq}`aiy_rgk` 决定,工资率 $w(r)$ 由 {eq}`aiy_wgr` 给出 -3. 确定给定这些价格下家庭的共同最优储蓄政策 -4. 计算给定这个储蓄政策下的稳态资本平均值 +3. 确定给定这些价格下家庭的共同最优储蓄策略 +4. 计算给定这个储蓄策略下的稳态资本平均值 如果最终数量与 $K$ 一致,那么我们就得到了一个SREE。 @@ -214,7 +214,7 @@ w(r) = A (1 - \alpha) (A \alpha / (r + \delta))^{\alpha / (1 - \alpha)} class Household: """ 这个类接收定义家庭资产积累问题的参数,并计算相应的回报和转移矩阵R - 和Q,这些矩阵是生成DiscreteDP实例所必需的,从而求解最优政策。 + 和Q,这些矩阵是生成DiscreteDP实例所必需的,从而求解最优策略。 关于索引的说明:我们需要将状态空间S枚举为序列S = {0, ..., n}。 为此,(a_i, z_i)索引对根据以下规则映射到s_i索引: @@ -313,7 +313,7 @@ def asset_marginal(s_probs, a_size, z_size): return a_probs ``` -作为第一个例子,让我们计算并绘制在固定价格下的最优积累政策。 +作为第一个例子,让我们计算并绘制在固定价格下的最优积累策略。 ```{code-cell} python3 # 示例价格 @@ -353,7 +353,7 @@ ax.legend(loc='upper left') plt.show() ``` -该图显示了在不同外生状态值下的资产积累政策。 +该图显示了在不同外生状态值下的资产积累策略。 现在我们要计算均衡。 @@ -399,7 +399,7 @@ def prices_to_capital_stock(am, r): w = r_to_w(r) am.set_prices(r, w) aiyagari_ddp = DiscreteDP(am.R, am.Q, β) - # 计算最优政策 + # 计算最优策略 results = aiyagari_ddp.solve(method='policy_iteration') # 计算稳态分布 stationary_probs = results.mc.stationary_distributions[0] diff --git a/lectures/career.md b/lectures/career.md index 58321dd..f4126a5 100644 --- a/lectures/career.md +++ b/lectures/career.md @@ -18,7 +18,7 @@ kernelspec: ``` -# 工作搜寻 V:职业选择建模 +# 求职搜索 V:职业选择建模 ```{index} single: Modeling; Career Choice ``` @@ -73,13 +73,13 @@ from matplotlib import cm * *职业*被理解为包含许多可能工作的一般领域,而 * *工作*被理解为在特定公司的一个职位 -对于工人来说,工资可以分解为工作和职业的贡献 +对于劳动者来说,工资可以分解为工作和职业的贡献 * $w_t = \theta_t + \epsilon_t$,其中 * $\theta_t$ 是在时间 t 职业的贡献 * $\epsilon_t$ 是在时间 t 工作的贡献 -在时间 t 开始时,工人有以下选择 +在时间 t 开始时,劳动者有以下选择 * 保持当前的(职业,工作)组合 $(\theta_t, \epsilon_t)$ --- 以下简称为"原地不动" @@ -93,9 +93,9 @@ $\theta$ 和 $\epsilon$ 的抽取彼此独立,且与过去的值无关,其 * $\theta_t \sim F$ * $\epsilon_t \sim G$ -注意,工人没有保留工作但重新选择职业的选项 --- 开始新职业总是需要开始新工作。 +注意,劳动者没有保留工作但重新选择职业的选项 --- 开始新职业总是需要开始新工作。 -年轻工人的目标是最大化折现工资的预期总和 +年轻劳动者的目标是最大化折现工资的预期总和 ```{math} :label: exw @@ -330,14 +330,14 @@ plt.show() ``` 解释: -* 如果工作和职业都很差或一般,工人会尝试新的工作和新的职业。 -* 如果职业足够好,工人会保持这个职业,并尝试新的工作直到找到一个足够好的工作。 -* 如果工作和职业都很好,工人会保持现状。 +* 如果工作和职业都很差或一般,劳动者会尝试新的工作和新的职业。 +* 如果职业足够好,劳动者会保持这个职业,并尝试新的工作直到找到一个足够好的工作。 +* 如果工作和职业都很好,劳动者会保持现状。 -注意,工人总是会保持一个足够好的职业,但不一定会保持即使是最高薪的工作。 +注意,劳动者总是会保持一个足够好的职业,但不一定会保持即使是最高薪的工作。 原因是高终身工资需要这两个变量都很大,而且 -工人不能在不换工作的情况下换职业。 +劳动者不能在不换工作的情况下换职业。 * 有时必须牺牲一个好工作来转向一个更好的职业。 @@ -348,7 +348,7 @@ plt.show() ``` 使用 `CareerWorkerProblem` 类中的默认参数设置, -当工人遵循最优策略时,生成并绘制 $\theta$ 和 $\epsilon$ 的典型样本路径。 +当劳动者遵循最优策略时,生成并绘制 $\theta$ 和 $\epsilon$ 的典型样本路径。 特别是,除了随机性之外,复现以下图形(其中横轴表示时间) ```{figure} /_static/lecture_specific/career/career_solutions_ex1_py.png @@ -412,15 +412,15 @@ plt.show() ```{exercise} :label: career_ex2 -现在让我们考虑从起点$(\theta, \epsilon) = (0, 0)$开始,工人需要多长时间才能找到一份永久性工作。 +现在让我们考虑从起点$(\theta, \epsilon) = (0, 0)$开始,劳动者需要多长时间才能找到一份永久性工作。 换句话说,我们要研究这个随机变量的分布 $$ -T^* := \text{工人的工作不再改变的第一个时间点} +T^* := \text{劳动者的工作不再改变的第一个时间点} $$ -显然,当且仅当$(\theta_t, \epsilon_t)$进入$(\theta, \epsilon)$空间的"保持不变"区域时,工人的工作才会变成永久性的。 +显然,当且仅当$(\theta_t, \epsilon_t)$进入$(\theta, \epsilon)$空间的"保持不变"区域时,劳动者的工作才会变成永久性的。 令$S$表示这个区域,$T^*$可以表示为在最优策略下首次到达$S$的时间: @@ -472,7 +472,7 @@ median_time(greedy_star, F, G) 这些中位数会受随机性影响,但应该分别约为7和14。 -不出所料,更有耐心的工人会等待更长时间才会安定在最终的工作岗位上。 +不出所料,更有耐心的劳动者会等待更长时间才会安定在最终的工作岗位上。 ```{solution-end} ``` @@ -507,7 +507,7 @@ ax.text(4.5, 1.5, '新工作', fontsize=14, rotation='vertical') ax.text(4.0, 4.5, '保持现状', fontsize=14) plt.show() ``` -在新图中,你可以看到工人选择留在原地的区域变大了,这是因为 $\epsilon$ 的分布更加集中在均值附近,使得高薪工作的可能性降低了。 +在新图中,你可以看到劳动者选择留在原地的区域变大了,这是因为 $\epsilon$ 的分布更加集中在均值附近,使得高薪工作的可能性降低了。 ```{solution-end} ``` diff --git a/lectures/exchangeable.md b/lectures/exchangeable.md index 74118c9..f6d4885 100644 --- a/lectures/exchangeable.md +++ b/lectures/exchangeable.md @@ -34,7 +34,7 @@ DeFinetti的工作对经济学家的相关性在David Kreps的{cite}`Kreps88`第 我们在本讲座中研究的一个例子是{doc}`这个讲座 `的一个关键组成部分,它扩充了 -{doc}`classic ` McCall的经典工作搜索模型{cite}`McCall1970`通过为失业工人提供一个统计推断问题来展示。 +{doc}`classic ` McCall的经典工作搜索模型{cite}`McCall1970`通过为失业劳动者提供一个统计推断问题来展示。 我们创建图表来说明似然比在贝叶斯定律中所起的作用。 diff --git a/lectures/finite_markov.md b/lectures/finite_markov.md index ee4f31c..e83ec1b 100644 --- a/lectures/finite_markov.md +++ b/lectures/finite_markov.md @@ -139,12 +139,12 @@ $$ (mc_eg1)= ### 示例1 -让我们考虑一个工人的就业状态,在任何给定时间 $t$,该工人要么处于失业状态(状态0)要么处于就业状态(状态1)。 +让我们考虑一个劳动者的就业状态,在任何给定时间 $t$,该劳动者要么处于失业状态(状态0)要么处于就业状态(状态1)。 假设在一个月的时间内: -1. 一个失业工人找到工作的概率是 $\alpha \in (0, 1)$。 -2. 一个就业工人失去工作的概率是 $\beta \in (0, 1)$。 +1. 一个失业劳动者找到工作的概率是 $\alpha \in (0, 1)$。 +2. 一个就业劳动者失去工作的概率是 $\beta \in (0, 1)$。 在马尔可夫链模型中,我们有: @@ -168,7 +168,7 @@ P 有了 $\alpha$ 和 $\beta$ 的值后,我们可以回答许多有趣的问题,例如: * 一个人平均会失业多长时间? -* 长期来看,一个工人有多大比例的时间处于失业状态? +* 长期来看,一个劳动者有多大比例的时间处于失业状态? * 如果一个人现在有工作,那么在未来一年内他至少失业一次的概率是多少? 我们将在后续章节中详细探讨这些应用。 @@ -466,25 +466,25 @@ $$ ``` 我们研究的边际分布不仅可以解释为概率,还可以被理解为大数定律下大样本中实际观察到的横截面分布。 -为了更好地理解这一点,让我们回到{ref}`前面讨论的`工人就业/失业动态模型。 +为了更好地理解这一点,让我们回到{ref}`前面讨论的`劳动者就业/失业动态模型。 -想象一个大型工人群体,其中每个工人的职业生涯都遵循相同的动态过程,且每个工人的经历在统计上独立于其他工人。 +想象一个大型劳动者群体,其中每个劳动者的职业生涯都遵循相同的动态过程,且每个劳动者的经历在统计上独立于其他劳动者。 假设$\psi$代表当前在状态空间$\{ 0, 1 \}$上的*横截面*分布。 -这个横截面分布反映了某一时刻就业和失业工人的比例。 +这个横截面分布反映了某一时刻就业和失业劳动者的比例。 * 具体来说,$\psi(0)$表示失业率。 如果我们想知道10个周期后的横截面分布会是什么样子,答案是$\psi P^{10}$,其中$P$是{eq}`p_unempemp`中给出的随机矩阵。 -这一结果成立是因为每个工人的状态都按照矩阵$P$的规律演变,因此$\psi P^{10}$代表了随机选取的单个工人的边际分布。 +这一结果成立是因为每个劳动者的状态都按照矩阵$P$的规律演变,因此$\psi P^{10}$代表了随机选取的单个劳动者的边际分布。 根据大数定律,当样本规模足够大时,观察到的频率会非常接近理论概率。 因此,对于一个足够大(接近无限)的人口, -$\psi P^{10}$同时也代表了处于各个状态的工人比例。 +$\psi P^{10}$同时也代表了处于各个状态的劳动者比例。 这正是我们所说的横截面分布。 @@ -701,7 +701,7 @@ $P$的每个元素都严格大于零是保证非周期性和不可约性的充 ### 示例 -回想我们之前{ref}`讨论过的 `关于某个工人就业/失业动态的模型。 +回想我们之前{ref}`讨论过的 `关于某个劳动者就业/失业动态的模型。 假设$\alpha \in (0,1)$且$\beta \in (0,1)$,一致遍历条件是满足的。 @@ -713,7 +713,7 @@ $$ p = \frac{\beta}{\alpha + \beta} $$ -这个值表示长期来看,工人处于失业状态的平均时间比例 -- 我们将在后续章节中详细讨论这一解释。 +这个值表示长期来看,劳动者处于失业状态的平均时间比例 -- 我们将在后续章节中详细讨论这一解释。 不出所料,当$\beta \to 0$时,它趋近于零;当$\alpha \to 0$时,它趋近于一。 @@ -857,7 +857,7 @@ $$ 从横截面角度看,$p$ 表示整个人口中失业者的比例。 -而根据刚才介绍的遍历性结果,$p$ 也表示单个工人长期来看处于失业状态的时间占比。 +而根据刚才介绍的遍历性结果,$p$ 也表示单个劳动者长期来看处于失业状态的时间占比。 这意味着,从长期来看,群体的横截面平均值与个体的时间序列平均值是一致的。 @@ -976,7 +976,7 @@ $$ ```{exercise} :label: fm_ex1 -根据{ref}`上述讨论 `,如果一个工人的就业动态遵循随机矩阵 +根据{ref}`上述讨论 `,如果一个劳动者的就业动态遵循随机矩阵 $$ P @@ -1032,7 +1032,7 @@ ax.hlines(0, 0, N, lw=2, alpha=0.6) # 在零处画水平线 for x0, col in ((0, 'blue'), (1, 'green')): - # 生成从x0开始的工人的时间序列 + # 生成从x0开始的劳动者的时间序列 X = mc.simulate(N, init=x0) # 计算每个n的失业时间比例 diff --git a/lectures/jv.md b/lectures/jv.md index 5b7888f..0bd5411 100644 --- a/lectures/jv.md +++ b/lectures/jv.md @@ -18,7 +18,7 @@ kernelspec: ``` -# {index}`工作搜寻 VI:在职搜索 ` +# {index}`求职搜索 VI:在职搜索 ` ```{index} single: Models; On-the-Job Search ``` @@ -60,24 +60,24 @@ from numba import jit, prange ```{index} single: 在职搜索; 模型 ``` -令 $x_t$ 表示在特定公司就职的工人在 t 时刻的工作特定人力资本,$w_t$ 表示当前工资。 +令 $x_t$ 表示在特定公司就职的劳动者在 t 时刻的工作特定人力资本,$w_t$ 表示当前工资。 令 $w_t = x_t(1 - s_t - \phi_t)$,其中 * $\phi_t$ 是对当前职位的工作特定人力资本投资,且 * $s_t$ 是用于获取其他公司新工作机会的搜索努力。 -只要工人继续留在当前工作,$\{x_t\}$ 的演变由 $x_{t+1} = g(x_t, \phi_t)$ 给出。 +只要劳动者继续留在当前工作,$\{x_t\}$ 的演变由 $x_{t+1} = g(x_t, \phi_t)$ 给出。 -当 t 时刻的搜索努力为 $s_t$ 时,工人以概率 $\pi(s_t) \in [0, 1]$ 收到新的工作机会。 +当 t 时刻的搜索努力为 $s_t$ 时,劳动者以概率 $\pi(s_t) \in [0, 1]$ 收到新的工作机会。 这个机会的价值(以工作特定人力资本衡量)是 $u_{t+1}$,其中 $\{u_t\}$ 是具有共同分布 $f$ 的独立同分布序列。 -工人可以拒绝当前的工作机会并继续现有的工作。 +劳动者可以拒绝当前的工作机会并继续现有的工作。 因此,如果接受则 $x_{t+1} = u_{t+1}$,否则 $x_{t+1} = g(x_t, \phi_t)$。 -令 $b_{t+1} \in \{0,1\}$ 为二元随机变量,其中 $b_{t+1} = 1$ 表示工人在时间 $t$ 结束时收到一个工作机会。 +令 $b_{t+1} \in \{0,1\}$ 为二元随机变量,其中 $b_{t+1} = 1$ 表示劳动者在时间 $t$ 结束时收到一个工作机会。 我们可以写成 @@ -136,14 +136,14 @@ $\text{Beta}(2,2)$ 分布的支撑集是 $(0,1)$ - 它具有单峰、对称的 在我们求解模型之前,让我们做一些快速计算,以直观地了解解应该是什么样子。 -首先,注意到工人有两种方式来积累资本从而提高工资: +首先,注意到劳动者有两种方式来积累资本从而提高工资: 1. 通过 $\phi$ 投资于当前工作的特定资本 1. 通过 $s$ 搜索具有更好的工作特定资本匹配的新工作 由于工资是 $x (1 - s - \phi)$,通过 $\phi$ 或 $s$ 进行投资的边际成本是相同的。 -我们的风险中性工人应该专注于预期回报最高的工具。 +我们的风险中性劳动者应该专注于预期回报最高的工具。 相对预期回报将取决于$x$。 @@ -167,7 +167,7 @@ $\text{Beta}(2,2)$ 分布的支撑集是 $(0,1)$ - 它具有单峰、对称的 1. 在任何给定状态$x$下,两个控制变量$\phi$和$s$将 -主要作为替代品 --- 工人会专注于预期回报较高的工具。 +主要作为替代品 --- 劳动者会专注于预期回报较高的工具。 1. 对于足够小的 $x$,搜索会比投资工作特定人力资本更可取。对于较大的 $x$,则相反。 现在让我们转向实施,看看是否能验证我们的预测。 @@ -388,9 +388,9 @@ plt.show() 总的来说,这些策略与我们在{ref}`上文`中的预测相符 -* 工人根据相对回报在两种投资策略之间切换。 +* 劳动者根据相对回报在两种投资策略之间切换。 * 对于较低的 $x$ 值,最佳选择是寻找新工作。 -* 一旦 $x$ 变大,工人通过投资于当前职位的特定人力资本会获得更好的回报。 +* 一旦 $x$ 变大,劳动者通过投资于当前职位的特定人力资本会获得更好的回报。 ## 练习 @@ -487,12 +487,12 @@ $\phi_t = \phi(x_t) \approx 0.6$。 而 $\phi_t$ 收敛到约0.6。 由于这些结果是在 $\beta$ 接近1的情况下计算的, -让我们将它们与*无限*耐心的工人的最佳选择进行比较。 +让我们将它们与*无限*耐心的劳动者的最佳选择进行比较。 -直观地说,无限耐心的工人会希望最大化稳态工资, +直观地说,无限耐心的劳动者会希望最大化稳态工资, 而稳态工资是稳态资本的函数。 -你可以认为这是既定事实——这确实是真的——无限耐心的工人 +你可以认为这是既定事实——这确实是真的——无限耐心的劳动者 在长期内不会搜索(即,对于较大的 $t$,$s_t = 0$)。 因此,给定 $\phi$,稳态资本是映射 $x \mapsto g(x, \phi)$ 的正固定点 $x^*(\phi)$。 @@ -531,7 +531,7 @@ plt.show() 这与{ref}`jv_ex1`中得到的$\phi$的长期值相似。 -因此,无限耐心的工人的行为与$\beta = 0.96$的工人的行为相似。 +因此,无限耐心的劳动者的行为与$\beta = 0.96$的劳动者的行为相似。 这看起来是合理的,并且帮助我们确认我们的动态规划解可能是正确的。 diff --git a/lectures/kalman_2.md b/lectures/kalman_2.md index b3c6cc4..b992cab 100644 --- a/lectures/kalman_2.md +++ b/lectures/kalman_2.md @@ -31,15 +31,15 @@ kernelspec: 在之前的量化经济学讲座 {doc}`卡尔曼滤波器的初步介绍 ` 中,我们使用卡尔曼滤波器来估计火箭的位置。 -在本讲座中,我们将使用卡尔曼滤波器来推断工人的: +在本讲座中,我们将使用卡尔曼滤波器来推断劳动者的: 1. 人力资本 -2. 工人投入人力资本积累的努力程度 +2. 劳动者投入人力资本积累的努力程度 这两个变量都是公司无法直接观察到的。 -公司只能通过观察工人产生的产出历史,以及理解这些产出如何依赖于工人的人力资本,以及人力资本如何作为工人努力程度的函数来演化,来了解这些信息。 +公司只能通过观察劳动者产生的产出历史,以及理解这些产出如何依赖于劳动者的人力资本,以及人力资本如何作为劳动者努力程度的函数来演化,来了解这些信息。 -我们将设定一个规则,说明公司如何根据每期获得的信息来支付工人工资。 +我们将设定一个规则,说明公司如何根据每期获得的信息来支付劳动者工资。 除了Anaconda中的内容外,本讲座还需要以下库: @@ -77,11 +77,11 @@ def cjk(text): return rf'\begin{{CJK}}{{UTF8}}{{gbsn}}{text}\end{{CJK}}' ``` -## 工人的产出 +## 劳动者的产出 -一个代表性工人永久受雇于一家公司。 +一个代表性劳动者永久受雇于一家公司。 -工人的产出由以下动态过程描述: +劳动者的产出由以下动态过程描述: ```{math} :label: worker_model @@ -96,46 +96,46 @@ y_t & = g h_t + v_t , \quad v_t \sim {\mathcal N} (0, R) 其中: * $h_t$ 是时间 $t$ 时的人力资本对数 -* $u_t$ 是时间 $t$ 时工人投入人力资本积累的努力程度的对数 -* $y_t$ 是时间 $t$ 时工人产出的对数 +* $u_t$ 是时间 $t$ 时劳动者投入人力资本积累的努力程度的对数 +* $y_t$ 是时间 $t$ 时劳动者产出的对数 * $h_0 \sim {\mathcal N}(\hat h_0, \sigma_{h,0})$ * $u_0 \sim {\mathcal N}(\hat u_0, \sigma_{u,0})$ 模型的参数包括 $\alpha, \beta, c, R, g, \hat h_0, \hat u_0, \sigma_h, \sigma_u$。 -在时间 $0$,公司雇佣了工人。 +在时间 $0$,公司雇佣了劳动者。 -工人永久依附于公司,因此在所有时间 $t =0, 1, 2, \ldots$ 都为同一家公司工作。 +劳动者永久依附于公司,因此在所有时间 $t =0, 1, 2, \ldots$ 都为同一家公司工作。 -在时间 $0$ 开始时,公司既无法观察到工人的初始人力资本 $h_0$,也无法观察到其固有的永久努力水平 $u_0$。 +在时间 $0$ 开始时,公司既无法观察到劳动者的初始人力资本 $h_0$,也无法观察到其固有的永久努力水平 $u_0$。 -公司认为特定工人的 $u_0$ 服从高斯概率分布,因此由 $u_0 \sim {\mathcal N}(\hat u_0, \sigma_{u,0})$ 描述。 +公司认为特定劳动者的 $u_0$ 服从高斯概率分布,因此由 $u_0 \sim {\mathcal N}(\hat u_0, \sigma_{u,0})$ 描述。 -工人"类型"中的 $h_t$ 部分随时间变化,但努力程度部分 $u_t = u_0$ 保持不变。 +劳动者"类型"中的 $h_t$ 部分随时间变化,但努力程度部分 $u_t = u_0$ 保持不变。 -这意味着从公司的角度来看,工人的努力程度实际上是一个未知的固定"参数"。 +这意味着从公司的角度来看,劳动者的努力程度实际上是一个未知的固定"参数"。 -在时间 $t\geq 1$,对于特定工人,公司观察到 $y^{t-1} = [y_{t-1}, y_{t-2}, \ldots, y_0]$。 +在时间 $t\geq 1$,对于特定劳动者,公司观察到 $y^{t-1} = [y_{t-1}, y_{t-2}, \ldots, y_0]$。 -公司无法观察到工人的"类型" $(h_0, u_0)$。 +公司无法观察到劳动者的"类型" $(h_0, u_0)$。 -但公司确实观察到工人在时间 $t$ 的产出 $y_t$,并记得工人的过去产出 $y^{t-1}$。 +但公司确实观察到劳动者在时间 $t$ 的产出 $y_t$,并记得劳动者的过去产出 $y^{t-1}$。 ## 公司的工资设定政策 -基于公司在时间 $t \geq 1$ 获得的关于工人的信息,公司支付工人的对数工资为: +基于公司在时间 $t \geq 1$ 获得的关于劳动者的信息,公司支付劳动者的对数工资为: $$ w_t = g E [ h_t | y^{t-1} ], \quad t \geq 1 $$ -在时间 $0$,支付工人的对数工资等于 $y_0$ 的无条件均值: +在时间 $0$,支付劳动者的对数工资等于 $y_0$ 的无条件均值: $$ w_0 = g \hat h_0 $$ -在使用这个支付规则时,公司考虑到工人今天的对数产出部分来自完全由运气决定的随机成分 $v_t$,并且假设 $v_t$ 与 $h_t$ 和 $u_t$ 独立。 +在使用这个支付规则时,公司考虑到劳动者今天的对数产出部分来自完全由运气决定的随机成分 $v_t$,并且假设 $v_t$ 与 $h_t$ 和 $u_t$ 独立。 ## 状态空间表示 @@ -196,7 +196,7 @@ def create_worker(α=.8, β=.2, c=.2, 请注意 `WorkerModel` namedtuple 如何创建计算相关状态空间表示 {eq}`ssrepresent` 所需的所有对象。 -这很方便,因为为了模拟工人的历史 $\{y_t, h_t\}$,我们需要使用 [`LinearStateSpace`](https://quanteconpy.readthedocs.io/en/latest/tools/lss.html) 类为他/她形成状态空间系统。 +这很方便,因为为了模拟劳动者的历史 $\{y_t, h_t\}$,我们需要使用 [`LinearStateSpace`](https://quanteconpy.readthedocs.io/en/latest/tools/lss.html) 类为他/她形成状态空间系统。 ```{code-cell} ipython3 # 定义 A, C, G, R, xhat_0, Σ_0 @@ -215,13 +215,13 @@ y = y.flatten() h_0, u_0 = x[0, 0], x[1, 0] ``` -接下来,为了计算公司基于其获得的关于工人的信息来设定对数工资的政策,我们使用本量化经济学讲座 {doc}`卡尔曼滤波器的初步介绍 ` 中描述的卡尔曼滤波器。 +接下来,为了计算公司基于其获得的关于劳动者的信息来设定对数工资的政策,我们使用本量化经济学讲座 {doc}`卡尔曼滤波器的初步介绍 ` 中描述的卡尔曼滤波器。 特别是,我们想要计算"创新表示"中的所有对象。 ## 创新表示 -我们已经掌握了形成工人产出过程 $\{y_t\}_{t=0}^T$ 的创新表示所需的所有对象。 +我们已经掌握了形成劳动者产出过程 $\{y_t\}_{t=0}^T$ 的创新表示所需的所有对象。 让我们现在编写代码: @@ -257,9 +257,9 @@ u_hat_t = x_hat_t[1, :] 对于 $h_0, u_0$ 的一个实现,我们绘制 $E y_t = G \hat x_t $,其中 $\hat x_t = E [x_t | y^{t-1}]$。 -我们还绘制 $E [u_0 | y^{t-1}]$,这是公司基于其拥有的信息 $y^{t-1}$ 对工人固有的"工作伦理" $u_0$ 的推断。 +我们还绘制 $E [u_0 | y^{t-1}]$,这是公司基于其拥有的信息 $y^{t-1}$ 对劳动者固有的"工作伦理" $u_0$ 的推断。 -我们可以观察公司对工人工作伦理的推断 $E [u_0 | y^{t-1}]$ 如何逐渐收敛于隐藏的 $u_0$,而 $u_0$ 是公司无法直接观察到的。 +我们可以观察公司对劳动者工作伦理的推断 $E [u_0 | y^{t-1}]$ 如何逐渐收敛于隐藏的 $u_0$,而 $u_0$ 是公司无法直接观察到的。 ```{code-cell} ipython3 fig, ax = plt.subplots(1, 2) @@ -388,7 +388,7 @@ print('h_0 =', h_0) print('u_0 =', u_0) ``` -对于这个工人,让我们生成一个类似上面的图: +对于这个劳动者,让我们生成一个类似上面的图: ```{code-cell} ipython3 # 首先我们使用初始 xhat_0 和 Σ_0 计算卡尔曼滤波器 @@ -428,23 +428,23 @@ fig.tight_layout() plt.show() ``` -更一般地,我们可以在 `create_worker` namedtuple 中更改定义工人的部分或全部参数。 +更一般地,我们可以在 `create_worker` namedtuple 中更改定义劳动者的部分或全部参数。 这是一个例子: ```{code-cell} ipython3 -# 我们可以在创建工人时设置这些参数 -- 就像类一样! +# 我们可以在创建劳动者时设置这些参数 -- 就像类一样! hard_working_worker = create_worker(α=.4, β=.8, hhat_0=7.0, uhat_0=100, σ_h=2.5, σ_u=3.2) print(hard_working_worker) ``` -我们还可以为不同的工人模拟 $T = 50$ 期的系统。 +我们还可以为不同的劳动者模拟 $T = 50$ 期的系统。 推断的工作伦理和真实工作伦理之间的差异随时间收敛到 $0$。 -这表明滤波器正在逐渐教会工人和公司关于工人努力程度的信息。 +这表明滤波器正在逐渐教会劳动者和公司关于劳动者努力程度的信息。 ```{code-cell} ipython3 :tags: [hide-input] @@ -540,12 +540,12 @@ plt.show() ``` ```{code-cell} ipython3 -# 我们还可以为所有工人使用精确的 u_0=1 和 h_0=2 +# 我们还可以为所有劳动者使用精确的 u_0=1 和 h_0=2 T = 50 fig, ax = plt.subplots(figsize=(7, 7)) -# 这两行设置所有工人的 u_0=1 和 h_0=2 +# 这两行设置所有劳动者的 u_0=1 和 h_0=2 mu_0 = np.array([[1], [2]]) Sigma_0 = np.zeros((2,2)) @@ -568,7 +568,7 @@ plt.show() ``` ```{code-cell} ipython3 -# 我们可以只为其中一个工人生成图: +# 我们可以只为其中一个劳动者生成图: T = 50 fig, ax = plt.subplots(figsize=(7, 7)) @@ -585,11 +585,11 @@ uhat_0s = 100 worker = create_worker(uhat_0=uhat_0, α=α, β=β) simulate_workers(worker, T, ax, mu_0=mu_0_1, Sigma_0=Sigma_0, - diff=False, name=cjk('勤奋的工人')) + diff=False, name=cjk('勤奋的劳动者')) simulate_workers(worker, T, ax, mu_0=mu_0_2, Sigma_0=Sigma_0, diff=False, - title=cjk('一个勤奋的工人和一个不太勤奋的工人'), - name=cjk('普通工人')) + title=cjk('一个勤奋的劳动者和一个不太勤奋的劳动者'), + name=cjk('普通劳动者')) ax.axhline(y=u_0, xmin=0, xmax=0, color='grey', linestyle='dashed', label=r'$u_{i, 0}$') ax.legend(bbox_to_anchor=(1, 0.5)) @@ -598,4 +598,4 @@ plt.show() ## 未来扩展 -我们可以通过创建新类型的工人,并让公司仅通过观察他们的产出历史来了解他们的隐藏(对公司来说)状态,来进行许多富有启发性的实验。 +我们可以通过创建新类型的劳动者,并让公司仅通过观察他们的产出历史来了解他们的隐藏(对公司来说)状态,来进行许多富有启发性的实验。 diff --git a/lectures/lake_model.md b/lectures/lake_model.md index 95c8477..434e44c 100644 --- a/lectures/lake_model.md +++ b/lectures/lake_model.md @@ -62,7 +62,7 @@ tags: [hide-output] 我们还将使用一些巧妙的概念,如遍历性,它提供了*横截面*和*长期时间序列*分布之间的基本联系。 -这些概念将帮助我们建立一个事前同质工人的均衡模型,他们的不同运气产生了事后经验的差异。 +这些概念将帮助我们建立一个事前同质劳动者的均衡模型,他们的不同运气产生了事后经验的差异。 让我们从一些导入开始: @@ -91,14 +91,14 @@ from numba import jit ## 模型 -经济中有大量事前相同的工人。 +经济中有大量事前相同的劳动者。 -这些工人永久存在,在失业和就业之间度过一生。 +这些劳动者永久存在,在失业和就业之间度过一生。 他们在就业和失业之间的转换率由以下参数决定: -* $\lambda$,当前失业工人的工作找到率 -* $\alpha$,当前就业工人的解雇率 +* $\lambda$,当前失业劳动者的工作找到率 +* $\alpha$,当前就业劳动者的解雇率 * $b$,劳动力进入率 * $d$,劳动力退出率 @@ -108,8 +108,8 @@ from numba import jit 我们想要推导以下总量的动态: -* $E_t$,t时刻就业工人总数 -* $U_t$,t时刻失业工人总数 +* $E_t$,t时刻就业劳动者总数 +* $U_t$,t时刻失业劳动者总数 * $N_t$,t时刻劳动力总数 我们还想知道以下对象的值: @@ -123,17 +123,17 @@ from numba import jit 我们首先构建总量变量 $E_t,U_t, N_t$ 的运动规律。 -对于t时刻就业的 $E_t$ 工人群体: +对于t时刻就业的 $E_t$ 劳动者群体: * $(1-d)E_t$ 将留在劳动力中 * 其中,$(1-\alpha)(1-d)E_t$ 将保持就业 -对于t时刻失业的 $U_t$ 工人群体: +对于t时刻失业的 $U_t$ 劳动者群体: * $(1-d)U_t$ 将留在劳动力中 * 其中,$(1-d) \lambda U_t$ 将找到工作 -因此,t+1时刻的就业工人数量将是: +因此,t+1时刻的就业劳动者数量将是: $$ E_{t+1} = (1-d)(1-\alpha)E_t + (1-d)\lambda U_t @@ -145,9 +145,9 @@ $$ U_{t+1} = (1-d)\alpha E_t + (1-d)(1-\lambda)U_t + b (E_t+U_t) $$ -值 $b(E_t+U_t)$ 是作为失业者进入劳动力的新工人数量。 +值 $b(E_t+U_t)$ 是作为失业者进入劳动力的新劳动者数量。 -工人总量 $N_t=E_t+U_t$ 的演变如下: +劳动者总量 $N_t=E_t+U_t$ 的演变如下: $$ N_{t+1} = (1+b-d)N_t = (1+g)N_t @@ -238,9 +238,9 @@ class LakeModel: 参数: ------------ λ : 标量 - 当前失业工人的工作找到率 + 当前失业劳动者的工作找到率 α : 标量 - 当前就业工人的解雇率 + 当前就业劳动者的解雇率 b : 标量 劳动力进入率 d : 标量 @@ -413,11 +413,11 @@ plt.show() ``` (dynamics_workers)= -## 单个工人的动态 +## 单个劳动者的动态 -单个工人的就业动态由{doc}`有限状态马尔可夫过程 `控制。 +单个劳动者的就业动态由{doc}`有限状态马尔可夫过程 `控制。 -工人可以处于两种状态之一: +劳动者可以处于两种状态之一: * $s_t=0$ 表示失业 * $s_t=1$ 表示就业 @@ -435,7 +435,7 @@ P = \left( \right) $$ -令 $\psi_t$ 表示工人在t时刻就业/失业状态的{ref}`边际分布 `。 +令 $\psi_t$ 表示劳动者在t时刻就业/失业状态的{ref}`边际分布 `。 像往常一样,我们将其视为行向量。 @@ -462,7 +462,7 @@ $$ 让我们看看就业-失业周期的典型生命周期。 -我们想要计算一个无限寿命的工人在就业和失业上花费的平均时间。 +我们想要计算一个无限寿命的劳动者在就业和失业上花费的平均时间。 令: @@ -478,7 +478,7 @@ $$ (像往常一样,$\mathbb 1\{Q\} = 1$ 如果陈述 $Q$ 为真,否则为0) -这些是工人在T时期之前分别花费在失业和就业上的时间比例。 +这些是劳动者在T时期之前分别花费在失业和就业上的时间比例。 如果 $\alpha \in (0, 1)$ 和 $\lambda \in (0, 1)$,则 $P$ 是{ref}`遍历的 `,因此我们有: @@ -492,7 +492,7 @@ $$ 检查告诉我们,在假设 $b=d=0$ 下,$P$ 正好是 $\hat A$ 的转置。 -因此,无限寿命工人花费在就业和失业上的时间百分比等于稳态分布中的就业和失业工人比例。 +因此,无限寿命劳动者花费在就业和失业上的时间百分比等于稳态分布中的就业和失业劳动者比例。 ### 收敛率 @@ -553,8 +553,8 @@ plt.show() 关于这个模型要记住的最重要的事情是,最优决策 由保留工资 $\bar w$ 表征: -* 如果手中的工资报价 $w$ 大于或等于 $\bar w$,则工人接受。 -* 否则,工人拒绝。 +* 如果手中的工资报价 $w$ 大于或等于 $\bar w$,则劳动者接受。 +* 否则,劳动者拒绝。 正如我们在{doc}`对模型的讨论 `中看到的,保留工资取决于工资报价分布和参数: @@ -565,7 +565,7 @@ plt.show() ### 将McCall搜索模型与湖泊模型联系起来 -假设湖泊模型中的所有工人都按照McCall搜索模型行事。 +假设湖泊模型中的所有劳动者都按照McCall搜索模型行事。 离开就业的外生概率保持为 $\alpha$。 @@ -595,13 +595,13 @@ $$ \tau = u c $$ -一次性税收适用于所有人,包括失业工人。 +一次性税收适用于所有人,包括失业劳动者。 -因此,工资为 $w$ 的就业工人的税后收入为 $w - \tau$。 +因此,工资为 $w$ 的就业劳动者的税后收入为 $w - \tau$。 -失业工人的税后收入为 $c - \tau$。 +失业劳动者的税后收入为 $c - \tau$。 -对于每个政府政策规范 $(c, \tau)$,我们可以求解工人的最优保留工资。 +对于每个政府政策规范 $(c, \tau)$,我们可以求解劳动者的最优保留工资。 这通过{eq}`lake_lamda` 在税后工资下确定 $\lambda$,这反过来又确定稳态失业率 $u(c, \tau)$。 @@ -804,7 +804,7 @@ w_vec = (w_vec[1:] + w_vec[:-1]) / 2 def compute_optimal_quantities(c, τ): """ - 给定c和τ计算工人的保留工资、工作找到率和价值函数。 + 给定c和τ计算劳动者的保留工资、工作找到率和价值函数。 """ @@ -929,9 +929,9 @@ class LakeModelModified: 参数: ------------ λ : 标量 - 当前失业工人的工作找到率 + 当前失业劳动者的工作找到率 α : 标量 - 当前就业工人的解雇率 + 当前就业劳动者的解雇率 b : 标量 劳动力进入率 d : 标量 @@ -1065,7 +1065,7 @@ class LakeModelModified: :label: lm_ex2 ``` -考虑一个经济,初始工人存量 $N_0 = 100$ 处于 +考虑一个经济,初始劳动者存量 $N_0 = 100$ 处于 基准参数化下的稳态就业水平: * $\alpha = 0.013$ @@ -1172,7 +1172,7 @@ plt.show() ```{exercise} :label: lm_ex3 -考虑一个经济,初始工人存量 $N_0 = 100$ 处于 +考虑一个经济,初始劳动者存量 $N_0 = 100$ 处于 基准参数化下的稳态就业水平。 假设出生率在20个时期内暂时较高($b = 0.025$),然后恢复到原始水平。 diff --git a/lectures/likelihood_bayes.md b/lectures/likelihood_bayes.md index 7e9fb06..7b53125 100644 --- a/lectures/likelihood_bayes.md +++ b/lectures/likelihood_bayes.md @@ -367,27 +367,27 @@ np.abs(π_seq - π_seq_f).max() < 1e-10 而且在他的主观信念下,平均来说确实不会改变。 -我们将继续在这样一个设定下讨论:McCall工人知道他的工资连续抽样要么来自分布$F$要么来自分布$G$,但他不知道是这两个分布中的哪一个 +我们将继续在这样一个设定下讨论:McCall劳动者知道他的工资连续抽样要么来自分布$F$要么来自分布$G$,但他不知道是这两个分布中的哪一个 自然在时间$0$之前就已经一劳永逸地做出了选择。 我们将回顾、重申并重新整理我们在上文和相关讲座中遇到的一些公式。 -工人的初始信念导致了一个可能无限序列的抽取$w_0, w_1, \ldots $的联合概率分布。 +劳动者的初始信念导致了一个可能无限序列的抽取$w_0, w_1, \ldots $的联合概率分布。 贝叶斯定律只是概率定律的一个应用,用于计算第$t$次抽取$w_t$在已知$[w_0, \ldots, w_{t-1}]$条件下的条件分布。 -在我们的工人对自然选择分布$F$赋予主观概率$\pi_{-1}$之后,我们实际上从一开始就假设决策者**知道**过程$\{w_t\}_{t=0}$的联合分布。 +在我们的劳动者对自然选择分布$F$赋予主观概率$\pi_{-1}$之后,我们实际上从一开始就假设决策者**知道**过程$\{w_t\}_{t=0}$的联合分布。 -我们假设工人也知道概率论的定律。 +我们假设劳动者也知道概率论的定律。 一种值得尊重的观点认为,贝叶斯定律与其说是一种学习理论,不如说是一种关于信息流入对决策者的影响的陈述,这个决策者认为他从一开始就知道真相(即联合概率分布)。 ### 技术细节再述 -在时间$0$**之前**获得工资报价时,工人认为分布为$F$的概率为$\pi_{-1} \in (0,1)$。 +在时间$0$**之前**获得工资报价时,劳动者认为分布为$F$的概率为$\pi_{-1} \in (0,1)$。 -在时间$0$获得工资之前,工人认为$w_0$的密度函数为: +在时间$0$获得工资之前,劳动者认为$w_0$的密度函数为: $$ h(w_0;\pi_{-1}) = \pi_{-1} f(w_0) + (1-\pi_{-1}) g(w_0). @@ -395,13 +395,13 @@ $$ 令$a \in \{ f, g\} $为一个指标,表示自然是永久地从分布$f$还是从分布$g$中抽取。 -在获得$w_0$后,工人使用贝叶斯定律推导出密度为$f(w)$的后验概率$\pi_0 = {\rm Prob}{a = f | w_0} $为: +在获得$w_0$后,劳动者使用贝叶斯定律推导出密度为$f(w)$的后验概率$\pi_0 = {\rm Prob}{a = f | w_0} $为: $$ \pi_0 = { \pi_{-1} f(w_0) \over \pi_{-1} f(w_0) + (1-\pi_{-1}) g(w_0)} . $$ -一般来说,在进行第$t$次抽取并观察到$w_t, w_{t-1}, \ldots, w_0$后,工人认为 +一般来说,在进行第$t$次抽取并观察到$w_t, w_{t-1}, \ldots, w_0$后,劳动者认为 $w_{t+1}$是从分布$F$中抽取的概率为 $$ @@ -509,13 +509,13 @@ $$ 将此方程与方程(20)结合,我们推导出 -在工人的主观分布下,${\textrm{Prob}(\Omega)}$ 赋予 $\pi_\infty(\omega)$ 为 $1$ 的概率必须是 $\pi_{-1}$。 +在劳动者的主观分布下,${\textrm{Prob}(\Omega)}$ 赋予 $\pi_\infty(\omega)$ 为 $1$ 的概率必须是 $\pi_{-1}$。 -因此,在工人的主观分布下,$\{\pi_t\}$ 的 $\pi_{-1}$ 比例的样本路径将逐点收敛到 $1$,而 $1 - \pi_{-1}$ 比例的样本路径将逐点收敛到 $0$。 +因此,在劳动者的主观分布下,$\{\pi_t\}$ 的 $\pi_{-1}$ 比例的样本路径将逐点收敛到 $1$,而 $1 - \pi_{-1}$ 比例的样本路径将逐点收敛到 $0$。 ### 一些模拟 -让我们通过一些在工人主观分布下的学习模型模拟来观察鞅收敛定理的作用。 +让我们通过一些在劳动者主观分布下的学习模型模拟来观察鞅收敛定理的作用。 让我们模拟 $\left\{ \pi_{t}\right\} _{t=0}^{T}$, $\left\{ w_{t}\right\} _{t=0}^{T}$ 路径,其中对于每个 $t\geq0$,$w_t$ 从主观分布中抽取 diff --git a/lectures/mccall_correlated.md b/lectures/mccall_correlated.md index 293c757..eda4587 100644 --- a/lectures/mccall_correlated.md +++ b/lectures/mccall_correlated.md @@ -17,7 +17,7 @@ kernelspec: ``` -# 工作搜寻 IV:相关工资报价 +# 求职搜索 IV:相关工资报价 ```{contents} 目录 :depth: 2 @@ -34,7 +34,7 @@ tags: [hide-output] ## 概述 -在本讲座中,我们求解一个具有持久性和暂时性工资成分的{doc}`McCall工作搜寻模型 `。 +在本讲座中,我们求解一个具有持久性和暂时性工资成分的{doc}`McCall求职搜索模型 `。 换句话说,我们放宽了工资随机性在时间上相互独立的假设。 @@ -78,7 +78,7 @@ $$ 这里 $\{y_t\}$ 是暂时性成分,$\{z_t\}$ 是持久性成分。 -如前所述,工人可以: +如前所述,劳动者可以: 1. 接受报价并在该工资水平永久工作,或 1. 领取失业补偿金 $c$ 并等待下一期。 diff --git a/lectures/mccall_fitted_vfi.md b/lectures/mccall_fitted_vfi.md index 7e4d9db..e98fd61 100644 --- a/lectures/mccall_fitted_vfi.md +++ b/lectures/mccall_fitted_vfi.md @@ -17,7 +17,7 @@ kernelspec: ``` -# 工作搜寻 III: 拟合值函数迭代 +# 求职搜索 III: 拟合值函数迭代 ```{contents} 目录 :depth: 2 @@ -382,7 +382,7 @@ plt.show() 人们可能会认为,更高的波动性会使求职者更倾向于接受给定的工作机会,因为接受工作代表确定性,而等待则意味着风险。 -但求职就像持有期权:工人只面临上行风险(因为在自由市场中,没有人可以强迫他们接受不好的工作机会)。 +但求职就像持有期权:劳动者只面临上行风险(因为在自由市场中,没有人可以强迫他们接受不好的工作机会)。 更大的波动性意味着更高的上行潜力,这会鼓励求职者继续等待。 diff --git a/lectures/mccall_model.md b/lectures/mccall_model.md index b094a07..74c7eb3 100644 --- a/lectures/mccall_model.md +++ b/lectures/mccall_model.md @@ -18,14 +18,14 @@ kernelspec: ``` -# 工作搜寻 I: McCall搜寻模型 +# 求职搜索 I: McCall搜寻模型 ```{contents} 目录 :depth: 2 ``` ```{epigraph} -"询问一个McCall工人就像与一个失业的朋友对话:'也许你的期望值定得太高了',或者'为什么你在找到新工作之前就辞掉了原来的工作?'这就是真正的社会科学:试图通过观察人们所处的情况、他们面临的选择、以及他们自己所认为的优缺点来建模,以理解人类行为。" -- 小罗伯特·卢卡斯 +"询问一个McCall劳动者就像与一个失业的朋友对话:'也许你的期望值定得太高了',或者'为什么你在找到新工作之前就辞掉了原来的工作?'这就是真正的社会科学:试图通过观察人们所处的情况、他们面临的选择、以及他们自己所认为的优缺点来建模,以理解人类行为。" -- 小罗伯特·卢卡斯 ``` 除了Anaconda中已有的内容外,本讲座还需要以下库: @@ -41,7 +41,7 @@ tags: [hide-output] McCall 搜索模型 {cite}`McCall1970` 帮助改变了经济学家思考劳动力市场的方式。 -为了阐明"非自愿"失业等概念,McCall 从以下因素建模了失业工人的决策问题: +为了阐明"非自愿"失业等概念,McCall 从以下因素建模了失业劳动者的决策问题: * 当前工资和可能的未来工资 * 耐心程度 @@ -108,7 +108,7 @@ $\beta$ 越小,未来效用的折现值越高。 ### 权衡取舍 -工人面临一个权衡: +劳动者面临一个权衡: * 等待太久以获得好的工作机会是有代价的,因为未来会被折现。 * 过早接受工作机会也是有代价的,因为将来可能会出现更好的机会。 @@ -131,7 +131,7 @@ $\beta$ 越小,未来效用的折现值越高。 为了权衡决策问题的这两个方面,我们需要给状态赋予*价值*。 -为此,让$v^*(w)$表示当工资为$w \in \mathbb{W}$时,一个失业工人在当前时期开始时的总生命周期*价值*。 +为此,让$v^*(w)$表示当工资为$w \in \mathbb{W}$时,一个失业劳动者在当前时期开始时的总生命周期*价值*。 具体来说,我们考虑这样一种情况:一个失业者现在面临一个工资为 $w$ 的工作机会。 diff --git a/lectures/mccall_model_with_separation.md b/lectures/mccall_model_with_separation.md index 6b4e374..c04500d 100644 --- a/lectures/mccall_model_with_separation.md +++ b/lectures/mccall_model_with_separation.md @@ -18,9 +18,9 @@ kernelspec: ``` -# 工作搜寻 II:搜寻与离职 +# 求职搜索 II:搜寻与离职 -```{index} single: 工作搜寻导论 +```{index} single: 求职搜索导论 ``` ```{contents} 目录 @@ -38,7 +38,7 @@ tags: [hide-output] ## 概述 -在{doc}`之前的讲座 `中,我们研究了McCall工作搜寻模型 {cite}`McCall1970`作为理解失业和工人决策的一种方式。 +在{doc}`之前的讲座 `中,我们研究了McCall求职搜索模型 {cite}`McCall1970`作为理解失业和劳动者决策的一种方式。 该模型的一个不现实特征是每份工作都是永久性的。 @@ -49,7 +49,7 @@ tags: [hide-output] * 失去工作视为资本损失,以及 * 失业期视为寻找可接受工作的*投资* -另一个小的补充是引入效用函数以使工人偏好更加复杂。 +另一个小的补充是引入效用函数以使劳动者偏好更加复杂。 我们需要以下导入: @@ -69,15 +69,15 @@ from quantecon.distributions import BetaBinomial ## 模型 -该模型与{doc}`基础McCall工作搜寻模型 `类似。 +该模型与{doc}`基础McCall求职搜索模型 `类似。 -它关注一个无限期生存的工人的生活,以及: +它关注一个无限期生存的劳动者的生活,以及: * 他或她(为节省一个字符,我们称"他")在不同工资水平工作的机会 * 摧毁他当前工作的外生事件 * 他在失业期间的决策过程 -工人可以处于两种状态之一:就业或失业。 +劳动者可以处于两种状态之一:就业或失业。 他希望最大化: @@ -110,12 +110,12 @@ from quantecon.distributions import BetaBinomial 在给定时期开始时,观察到当前工资报价$w_t$。 -如果当前*就业*,工人: +如果当前*就业*,劳动者: 1. 获得效用$u(w_e)$,并且 1. 以某个(小的)概率$\alpha$被解雇。 -如果当前*失业*,工人要么接受要么拒绝当前报价$w_t$。 +如果当前*失业*,劳动者要么接受要么拒绝当前报价$w_t$。 如果他接受,则立即以工资$w_t$开始工作。 @@ -124,7 +124,7 @@ from quantecon.distributions import BetaBinomial 然后过程重复。 ```{note} -我们不允许在就业期间进行工作搜寻---这个主题将在{doc}`后续讲座 `中讨论。 +我们不允许在就业期间进行求职搜索---这个主题将在{doc}`后续讲座 `中讨论。 ``` ## 求解模型 @@ -133,16 +133,16 @@ from quantecon.distributions import BetaBinomial 令: -* $v(w_e)$为进入当前时期*就业*且现有工资为$w_e$的工人的总终身价值 -* $h(w)$为进入当前时期*失业*且收到工资报价$w$的工人的总终身价值。 +* $v(w_e)$为进入当前时期*就业*且现有工资为$w_e$的劳动者的总终身价值 +* $h(w)$为进入当前时期*失业*且收到工资报价$w$的劳动者的总终身价值。 -这里的*价值*是指当工人在所有未来时间点都做出最优决策时目标函数{eq}`objective`的值。 +这里的*价值*是指当劳动者在所有未来时间点都做出最优决策时目标函数{eq}`objective`的值。 我们的首要目标是获得这些函数。 ### 贝尔曼方程 -假设现在工人可以计算函数$v$和$h$并在决策中使用它们。 +假设现在劳动者可以计算函数$v$和$h$并在决策中使用它们。 那么$v$和$h$应该满足: @@ -170,7 +170,7 @@ h(w) = \max \left\{ v(w), \, u(c) + \beta \sum_{w' \in \mathbb W} h(w') q(w') \ 方程{eq}`bell2_mccall`表达了失业且手中有报价$w$的价值,作为两个选项的最大值:接受或拒绝当前报价。 -接受使工人转为就业,因此获得报酬$v(w)$。 +接受使劳动者转为就业,因此获得报酬$v(w)$。 拒绝导致失业补偿和明天的失业。 @@ -235,7 +235,7 @@ v(w) = u(w) + \beta (我们很快就会这样做。) -然后我们可以确定工人的最优行为。 +然后我们可以确定劳动者的最优行为。 从{eq}`bell2_mccall`中,我们看到失业代理人接受当前报价$w$如果$v(w) \geq u(c) + \beta d$。 @@ -253,7 +253,7 @@ $$ ### 求解贝尔曼方程 -我们将使用与{doc}`第一个工作搜寻讲座 `中相同的迭代方法来求解贝尔曼方程。 +我们将使用与{doc}`第一个求职搜索讲座 `中相同的迭代方法来求解贝尔曼方程。 这里这包括: @@ -443,9 +443,9 @@ def compute_reservation_wage(mcm): ``` -正如预期的那样,更高的失业补偿导致工人等待更高的工资。 +正如预期的那样,更高的失业补偿导致劳动者等待更高的工资。 -实际上,继续工作搜寻的成本降低了。 +实际上,继续求职搜索的成本降低了。 ### 保留工资和贴现 @@ -457,13 +457,13 @@ def compute_reservation_wage(mcm): ``` -同样,结果是直观的:更有耐心的工人会等待更高的工资。 +同样,结果是直观的:更有耐心的劳动者会等待更高的工资。 ### 保留工资和工作破坏 最后,让我们看看$\bar w$如何随工作离职率$\alpha$变化。 -更高的$\alpha$意味着工人在就业后每个时期面临终止的可能性更大。 +更高的$\alpha$意味着劳动者在就业后每个时期面临终止的可能性更大。 ```{figure} /_static/lecture_specific/mccall_model_with_separation/mccall_resw_alpha.png diff --git a/lectures/mccall_q.md b/lectures/mccall_q.md index 4595ba1..d433986 100644 --- a/lectures/mccall_q.md +++ b/lectures/mccall_q.md @@ -11,52 +11,46 @@ kernelspec: name: python3 --- -# 工作搜寻 VII:McCall工人的Q学习 +# 求职搜索 VII:McCall劳动者的Q学习 ## 概述 -本讲解介绍一种强大的机器学习技术——Q学习。 +本讲介绍一种强大的机器学习方法——Q学习。 -{cite}`Sutton_2018`介绍了Q学习和其他各种统计学习程序。 +{cite}`Sutton_2018`对Q学习和其他各种统计学习方法进行了详细介绍。 -Q学习算法结合了以下思想: +Q学习算法融合了两个关键思想: -* 动态规划 +* 动态规划的原理 +* 最小二乘法的递归形式,也称为[时序差分学习 (Temporal Difference Learning or TD Learning)](https://rl.qiwihui.com/zh-cn/latest/partI/chapter6/temporal_difference_learning.html) -* 最小二乘法的递归版本,即[时间差分学习](https://en.wikipedia.org/wiki/Temporal_difference_learning)。 +在本讲中,我们将Q学习算法应用到McCall求职模型中,探讨劳动者如何通过这种方法做出最优决策。 -本讲将Q学习算法应用于McCall工人所面临的情况。 +我们还将扩展模型,考虑劳动者不仅可以接受或拒绝工作机会,还可以选择辞去当前工作的情况。 -本讲还考虑了McCall工人可以选择辞去当前工作的情况。 +与我们在 {doc}`quantecon 讲座 ` 中学习的 McCall 劳动者模型的动态规划方法相比,Q-学习算法的一个显著特点是: +劳动者不需要完全了解 -相对于我们在 {doc}`quantecon 讲座 ` 中学习的 McCall 工人模型的动态规划方法,Q-学习算法让工人对以下方面的了解更少: +* 工资是如何随机生成的 +* 接受或拒绝工作机会会带来什么样的奖励 -* 生成工资序列的随机过程 -* 描述接受或拒绝工作后果的奖励函数 +Q-学习算法通过统计学习方法来获取这些信息,这通常可以简化为某种形式的最小二乘法。 -Q-学习算法调用统计学习模型来学习这些内容。 +在讨论统计学习时,我们需要明确指出学习的目标是什么。 -统计学习通常可以归结为某种形式的最小二乘法,在这里也是如此。 +对于Q-学习来说,学习的对象不是动态规划中常见的价值函数,尽管两者密切相关。 -每当我们提到**统计学习**时,我们都必须说明正在学习的对象是什么。 +在我们研究的有限状态、有限动作环境中,学习目标是一个称为**Q-表** (Q-table) 的结构,它是Q-函数 (Q-function) 在有限集合上的具体表现形式。 -对于 Q-学习来说,要学习的对象并不是动态规划所关注的**价值函数**。 +这些Q-函数(或Q-表)有时也被称为质量函数或质量表。 -但它与价值函数密切相关。 +Q-表的结构很直观:行代表智能体可能处于的各种状态,列代表在每个状态下可以采取的不同行动。 -在本讲座研究的有限动作、有限状态的情况下,要统计学习的对象是一个 **Q-表**,它是针对有限集合的 **Q-函数**的一个实例。 - -有时 Q-函数或 Q-表也被称为质量函数或质量表。 - -Q-表的行和列对应着智能体可能遇到的状态,以及在每个状态下可以采取的可能行动。 - -一个类似贝尔曼方程的等式在算法中起着重要作用。 - -它与我们在{doc}`这个 quantecon 讲座 `中看到的 McCall 模型的贝尔曼方程不同。 +算法的核心是一个类似贝尔曼方程的等式,但它与我们在{doc}`McCall模型讲座`中看到的贝尔曼方程有所不同。 在本讲座中,我们将学习一些关于: -* 与任何马尔可夫决策问题相关的**Q-函数**或**质量函数**,其最优值函数满足贝尔曼方程 +* 与马尔可夫决策问题相关的**Q-函数**或**质量函数**,其最优值函数满足贝尔曼方程 * **时序差分学习**,Q-学习算法的一个关键组成部分 @@ -80,7 +74,6 @@ FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf" mpl.font_manager.fontManager.addfont(FONTPATH) plt.rcParams['font.family'] = ['Source Han Serif SC'] - np.random.seed(123) ``` @@ -88,29 +81,29 @@ np.random.seed(123) 我们首先回顾在{doc}`这个 quantecon 讲座 `中描述的 McCall 模型。 -我们将计算一个最优值函数和实现该值的政策。 +我们将计算一个最优值函数和实现该值的策略。 -我们最终会将这个最优政策与 Q-learning McCall 工人所学到的进行比较。 +我们最终会将这个最优策略与 Q-learning McCall 劳动者所学到的进行比较。 McCall 模型的特征由参数 $\beta,c$ 和已知的工资分布 $F$ 来描述。 -McCall 工人想要最大化预期的终身收入折现总和 +McCall 劳动者想要最大化预期的终身收入折现总和 $$ \mathbb{E} \sum_{t=0}^{\infty} \beta^t y_t $$ -工人的收入 $y_t$ 在就业时等于他的工资 $w$,在失业时等于失业补助 $c$。 +劳动者的收入 $y_t$ 在就业时等于他的工资 $w$,在失业时等于失业补助 $c$。 -对于刚收到工资offer $w$ 并正在决定是接受还是拒绝的 McCall 工人来说,最优值 $V\left(w\right)$ 满足贝尔曼方程 +对于刚收到工资offer $w$ 并正在决定是接受还是拒绝的 McCall 劳动者来说,最优值 $V\left(w\right)$ 满足贝尔曼方程 $$ V\left(w\right)=\max_{\text{accept, reject}}\;\left\{ \frac{w}{1-\beta},c+\beta\int V\left(w'\right)dF\left(w'\right)\right\} $$ (eq_mccallbellman) -为了与Q-learning的结果进行比较基准,我们首先近似最优值函数。 +为了与Q-学习的结果进行比较基准,我们首先近似最优值函数。 -在有限离散状态空间中,可能的状态由$\{1,2,...,n\}$索引,我们对值函数$v\in\mathbb{R}^{n}$做一个初始猜测,然后对贝尔曼方程进行迭代: +在有限离散状态空间中,可能的状态由$\{1,2,...,n\}$索引,我们对价值函数$v\in\mathbb{R}^{n}$做一个初始猜测,然后对贝尔曼方程进行迭代: $$ v^{\prime}(i)=\max \left\{\frac{w(i)}{1-\beta}, c+\beta \sum_{1 \leq j \leq n} v(j) q(j)\right\} \quad \text { for } i=1, \ldots, n @@ -118,7 +111,7 @@ $$ 让我们使用{doc}`这个quantecon讲座 `中的Python代码。 -我们使用一个名为`VFI`的Python方法,通过值函数迭代来计算最优值函数。 +我们使用一个名为`VFI`的Python方法,通过价值函数迭代来计算最优值函数。 我们构造一个假设的工资分布,并用以下Python代码绘制: @@ -138,7 +131,7 @@ ax.set_ylabel('probabilities') plt.show() ``` -接下来我们将通过对贝尔曼方程进行迭代收敛来计算工人的最优价值函数。 +接下来我们将通过对贝尔曼方程进行迭代收敛来计算劳动者的最优价值函数。 然后我们将绘制贝尔曼算子的各种迭代结果。 @@ -147,7 +140,7 @@ mccall_data = [ ('c', float64), # 失业补偿 ('β', float64), # 贴现因子 ('w', float64[:]), # 工资值数组,w[i] = 状态i下的工资 - ('q', float64[:]), # 概率数组 + ('q', float64[:]), # 概率数组 ] @@ -166,7 +159,7 @@ class McCallModel: # 简化名称 c, β, w, q = self.c, self.β, self.w, self.q # 评估每个状态-行动对的值 - # 考虑行动 = 接受或拒绝当前offer + # 考虑行动: 接受或拒绝当前offer accept = w[i] / (1 - β) reject = c + β * np.sum(v * q) @@ -197,8 +190,8 @@ def plot_value_function_seq(mcm, ax, num_plots=8): """ 绘制一系列价值函数。 - * mcm 是 McCallModel 的一个实例 - * ax 是实现了plot方法的轴对象 + * mcm: McCallModel的实例 + * ax: 用于绘图的matplotlib轴对象 """ @@ -228,7 +221,7 @@ plt.show() 接下来我们将打印出迭代序列的极限值。 -这是通过值函数迭代得到的McCall工人价值函数的近似值。 +这是通过价值函数迭代得到的McCall劳动者价值函数的近似值。 在我们完成Q学习之后,我们将使用这个值函数作为基准。 @@ -242,11 +235,11 @@ print(valfunc_VFI) 它们与最优值函数紧密相连。 -但值函数仅是状态的函数,而不包含动作。 +但价值函数仅是状态的函数,而不包含动作。 对于每个给定状态,质量函数给出从该状态开始可以达到的最优值列表,列表的每个组成部分表示可以采取的一种可能动作。 -对于我们的McCall工人模型,假设有有限的可能工资集合: +对于我们的McCall劳动者模型,假设有有限的可能工资集合: * 状态空间 $\mathcal{W}=\{w_1,w_2,...,w_n\}$ 由整数 $1,2,...,n$ 索引 @@ -254,11 +247,11 @@ print(valfunc_VFI) 令 $a \in \mathcal{A}$ 为两个可能动作之一,即接受或拒绝。 -对于我们的McCall工人,最优Q函数 $Q(w,a)$ 等于一个此前失业的工人在手头有offer $w$ 时,如果他采取动作 $a$ 所能获得的最大价值。 +对于我们的McCall劳动者,最优Q函数 $Q(w,a)$ 等于一个此前失业的劳动者在手头有offer $w$ 时,如果他采取动作 $a$ 所能获得的最大价值。 -$Q(w,a)$ 的这个定义假设工人在随后的时期会采取最优行动。 +$Q(w,a)$ 的这个定义假设劳动者在随后的时期会采取最优行动。 -我们的 McCall 工人的最优 Q-函数满足 +我们的 McCall 劳动者的最优 Q-函数满足 $$ \begin{aligned} @@ -267,9 +260,9 @@ Q\left(w,\text{reject}\right) & =c+\beta\int\max_{\text{accept, reject}}\left\{ \end{aligned} $$ (eq:impliedq) -注意,系统{eq}`eq:impliedq`的第一个方程假设在代理人接受了一个报价后,他将来不会拒绝同样的报价。 +注意,系统{eq}`eq:impliedq`的第一个方程假设在个体接受了一个报价后,他将来不会拒绝同样的报价。 -这些方程与我们在{doc}`这个 quantecon 讲座 `中研究的工人最优值函数的贝尔曼方程是一致的。 +这些方程与我们在{doc}`这个 quantecon 讲座 `中研究的劳动者最优值函数的贝尔曼方程是一致的。 显然,在那个讲座中描述的最优值函数 $V(w)$ 与我们的 Q-函数有如下关系: @@ -284,15 +277,15 @@ $$ $$ Q_r := Q\left(w,\text{reject}\right) \quad \forall \, w\in\mathcal{W}. $$ -这一事实为我们提供了一种替代方案,而且事实证明,在这种情况下,这是一种更快的方法来计算McCall工人模型的最优值函数和相关的最优策略。 +这一事实为我们提供了一种替代方案,而且事实证明,在这种情况下,这是一种更快的方法来计算McCall劳动者模型的最优值函数和相关的最优策略。 -与我们上面使用的值函数迭代不同,我们可以对系统{eq}`eq:impliedq`中第二个方程的一个版本进行迭代直至收敛,该方程将$Q_r$的估计值映射为改进的估计值$Q_r'$: +与我们上面使用的价值函数迭代不同,我们可以对系统{eq}`eq:impliedq`中第二个方程的一个版本进行迭代直至收敛,该方程将$Q_r$的估计值映射为改进的估计值$Q_r'$: $$ Q_{r}^\prime=c+\beta\int\max_{\text{}}\left\{ \frac{w'}{1-\beta},Q_{r}\right\} dF\left(w'\right) $$ -在$Q_r$序列收敛后,我们可以从以下公式恢复McCall工人模型的最优值函数$V(w)$: +在$Q_r$序列收敛后,我们可以从以下公式复原McCall劳动者模型的最优值函数$V(w)$: $$ V\left(w\right)=\max\left\{ \frac{w}{1-\beta},Q_{r}\right\} @@ -302,7 +295,7 @@ $$ ## 从概率到样本 -我们之前提到,McCall工人模型的最优Q函数满足以下贝尔曼方程: +我们之前提到,McCall劳动者模型的最优Q函数满足以下贝尔曼方程: $$ \begin{aligned} @@ -310,14 +303,11 @@ $$ c & +\beta\int\max_{\text{accept, reject}}\left\{ Q(w', \textrm{accept}),Q\left(w',\text{reject}\right)\right\} dF\left(w'\right) - Q\left(w,\text{reject}\right) = 0 \cr \end{aligned} $$ (eq:probtosample1) - 注意第二行中对$F(w')$的积分。 -删除积分符号为我们开始思考Q-learning提供了一个不严谨但有启发性的思路。 - -因此,构建一个保留{eq}`eq:probtosample1`第一个方程的差分方程系统。 +为了开始思考Q-learning,我们可以尝试一个不严谨但有启发性的方法:移除积分符号。 -但是第二个方程通过去除对$F (w')$的积分来替代: +这样,我们可以构建一个差分方程系统,保留{eq}`eq:probtosample1`的第一个方程,但将第二个方程中对$F(w')$的积分替换为: $$ \begin{aligned} @@ -330,7 +320,7 @@ $$(eq:probtosample2) 但是,也许我们可以借助大数定律,希望它能对一个长时间序列中抽取的$w_t, w_{t+1}$对**平均**成立,这里我们把$w_t$看作$w$,把$w_{t+1}$看作$w'$。 -Q-learning的基本思想是从$F$中抽取一个长样本序列(虽然我们假设工人不知道$F$,但我们是知道的)并对递归式进行迭代 +Q-learning的基本思想是从$F$中抽取一个长样本序列(虽然我们假设劳动者不知道$F$,但我们是知道的)并对递归式进行迭代 将日期 $t$ 时的 Q 函数估计值 $\hat Q_t$ 映射到日期 $t+1$ 时的改进估计值 $\hat Q_{t+1}$。 @@ -343,17 +333,17 @@ $$ \end{aligned} $$ (eq:old105) -自适应学习方案将是以下形式 +我们的自适应学习方案可以表示为 $$ \hat Q_{t+1} = \hat Q_t + \alpha \ \textrm{diff}_t $$ (eq:old106) -其中 $\alpha \in (0,1)$ 是一个小的**增益**参数,用于控制学习速率,而 $\hat Q_t$ 和 $\textrm{diff}_t$ 是对应的 $2 \times 1$ 向量 +其中 $\alpha \in (0,1)$ 是一个小的**学习率**参数,控制每次更新的步长大小,而 $\hat Q_t$ 和 $\textrm{diff}_t$ 分别是 $2 \times 1$ 向量, -对应方程组 {eq}`eq:old105` 中的对象。 +它们对应于方程组 {eq}`eq:old105` 中的相应元素。 -这个非正式的论述将我们引向 Q-学习的门槛。 +这种非正式的推导为我们打开了通往 Q-学习的大门。 ## Q-学习 @@ -371,13 +361,11 @@ $$ (eq:old106) Q-学习通过更新 Q-函数来进行,决策者在模拟生成的工资序列路径上获得经验。 -在学习过程中,我们的 McCall 工人采取行动并体验这些行动带来的奖励。 - -他同时学习关于环境(在这种情况下是工资分布)和奖励函数的知识。 +在学习过程中,我们的 McCall 劳动者会采取各种行动,并从这些行动中获得相应的奖励。 -在这种情况下,失业补偿 $c$ 和工资的现值。 +在这个过程中,他逐渐学习工资分布这一环境特征,以及与不同决策相关的奖励——包括失业补偿 $c$ 和接受工作后获得的工资现值。 -更新算法基于对如下递归的略微修改(稍后将描述): +Q学习的核心是一个递归更新过程,其基本形式如下(我们稍后会详细讨论其修改版本): $$ \widetilde{Q}^{new}\left(w,a\right)=\widetilde{Q}^{old}\left(w,a\right)+\alpha \widetilde{TD}\left(w,a\right) @@ -392,11 +380,13 @@ $$ \end{aligned} $$ (eq:old4) -对于 $a = \left\{\textrm{accept,reject} \right\}$,项 $\widetilde{TD}(w,a)$ 是驱动更新的**时间差分误差**。 +对于 $a \in \{\textrm{accept}, \textrm{reject}\}$,$\widetilde{TD}(w,a)$ 表示**时序差分误差** (TD error),这是驱动Q值更新的关键因素。 -因此,这个系统是我们在方程 {eq}`eq:old106` 中非正式描述的自适应系统的一个版本。 +这个更新机制实际上就是我们在方程 {eq}`eq:old106` 中简要描述的自适应学习系统的具体实现。 -方程组{eq}`eq:old4`尚未捕捉到算法的一个方面,即我们通过偶尔随机替换的**实验性**尝试 +然而,方程组 {eq}`eq:old4` 还没有体现算法的一个重要特性:为了促进探索,我们需要通过随机实验来打破纯粹的贪婪策略 + +我们偶尔将 $$ \textrm{argmax}_{a'\in\mathcal{A}}\widetilde{Q}^{old}\left(w,a'\right) @@ -408,8 +398,7 @@ $$ \textrm{argmin}_{a'\in\mathcal{A}}\widetilde{Q}^{old}\left(w,a'\right) $$ -并且 -偶尔替换 +并且偶尔将 $$ \textrm{argmax}_{a'\in\mathcal{A}}\widetilde{Q}^{old}\left(w',a'\right) @@ -421,7 +410,7 @@ $$ \textrm{argmin}_{a'\in\mathcal{A}}\widetilde{Q}^{old}\left(w',a'\right) $$ -在以下McCall工人Q-学习的伪代码的第3步中,我们以概率$\epsilon$激活这种实验: +在以下McCall劳动者Q-学习的伪代码的第3步中,我们以概率$\epsilon$激活这种实验: 1. 设置一个任意的初始Q表。 @@ -431,13 +420,13 @@ $$ - 以概率$1-\epsilon$选择使价值最大化的行动,并且 -- 以概率 $\epsilon$ 选择替代行动。 +- 以概率 $\epsilon$ 随机选择另一个行动。 4. 更新与所选行动相关的状态,并根据{eq}`eq:old4`计算 $\widetilde{TD}$,然后根据{eq}`eq:old3`更新 $\widetilde{Q}$。 5. 如果需要则抽取新的状态 $w'$,否则采用现有工资,并再次根据{eq}`eq:old3`更新Q表。 -6. 当新旧Q表足够接近时停止,即对于给定的 $\delta$,满足 $\lVert\tilde{Q}^{new}-\tilde{Q}^{old}\rVert_{\infty}\leq\delta$,或者当工人连续接受 $T$ 期(对于预先规定的 $T$)时停止。 +6. 当新旧Q表足够接近时停止,即对于给定的 $\delta$,满足 $\lVert\tilde{Q}^{new}-\tilde{Q}^{old}\rVert_{\infty}\leq\delta$,或者当劳动者连续接受 $T$ 期(对于预先规定的 $T$)时停止。 7. 带着更新后的Q表返回步骤2。 @@ -447,27 +436,27 @@ $$ 在我们的情境中,每个回合都始于代理人抽取一个初始工资报价,即一个新状态。 -智能体根据预设的Q表采取行动,获得奖励,然后进入由本期行动所暗示的新状态。 +代理人根据当前的Q表选择行动,获得奖励,然后转移到由本期行动决定的新状态。 -Q表通过时序差分学习进行更新。 +Q表通过时序差分学习不断更新。 -我们重复这个过程直到Q表收敛或达到一个回合的最大长度。 +我们重复这个过程直到Q表收敛或达到预设的最大回合数。 -多个回合使智能体能够重新开始,并访问那些从前一个回合的终止状态较难访问到的状态。 +多个回合使代理人能够从不同起点开始探索,访问那些在单一回合中难以到达的状态。 -例如,一个基于其Q表接受了工资报价的智能体将较少可能从工资分布的其他部分获得新的报价。 +例如,如果代理人接受了某个工资报价,他就会停留在该就业状态,无法探索其他可能的工资水平。 -通过使用$\epsilon$-贪婪方法并增加回合数,Q学习算法在探索和利用之间取得平衡。 +通过使用$\epsilon$-贪婪策略并增加回合数,Q学习算法在探索新可能性和利用已知信息之间取得平衡。 -**注意:** 注意在{eq}`eq:old3`中定义的与最优Q表相关的$\widetilde{TD}$自动满足对所有状态-动作对$\widetilde{TD}=0$。我们的Q-learning算法的极限是否收敛到最优Q表,取决于算法是否足够频繁地访问所有状态-动作对。 +**注意:** 在{eq}`eq:old3`中定义的最优Q表对应的$\widetilde{TD}$值在所有状态-动作对上都等于零。我们的Q-learning算法是否能收敛到最优Q表,取决于算法是否能充分探索所有可能的状态-动作组合。 -我们在Python类中实现这个伪代码。 +下面我们将这个算法实现为Python类。 -为了简单和方便,我们让`s`表示介于$0$和$n=50$之间的状态索引,且$w_s=w[s]$。 +为了简化,我们用`s`表示介于$0$和$n=50$之间的状态索引,其中$w_s=w[s]$表示对应的工资值。 -Q表的第一列表示拒绝工资的相关值,第二列表示接受工资的相关值。 +Q表的结构很直观:第一列表示拒绝工资的价值,第二列表示接受工资的价值。 -我们使用`numba`编译来加速计算。 +我们使用`numba`编译来提高计算效率。 ```{code-cell} ipython3 params=[ @@ -677,25 +666,23 @@ def plot_epochs(epochs_to_plot, quit_allowed=1): plot_epochs(epochs_to_plot=[100, 1000, 10000, 100000, 200000]) ``` -上述图表表明: - -* Q-learning算法在学习那些很少被抽取到的工资水平的Q表时会遇到困难 +从上述图表中,我们可以观察到两个重要现象: -* 随着训练周期的延长,对通过值函数迭代计算得到的"真实"值函数的近似质量会提高 +* Q-learning算法在学习较少出现的工资水平时表现不佳,这反映了算法对样本频率的依赖性 -## 在职工人不能辞职 +* 随着训练轮数增加,算法逐渐接近通过值函数迭代得到的"真实"值函数,表明学习质量随时间提高 -在方程组{eq}`eq:old4`中描述的前述时序差分Q-learning版本允许在职工人辞职,即拒绝其现有工资,转而在本期领取失业补助并在下期获得新的工作机会。 +## 禁止在职劳动者辞职的情况 -这是{doc}`这个QuantEcon讲座`中描述的McCall工人不会选择的选项。 +我们之前讨论的时序差分Q-learning版本(见方程{eq}`eq:old4`)允许已就业的劳动者辞去当前工作,从而在当期获得失业补助,并在下期有机会获得新的工作offer。 -参见{cite}`Ljungqvist2012`第6章关于搜索的证明。 +这一选项在{doc}`标准McCall模型`中并不存在,正如{cite}`Ljungqvist2012`第6章中关于求职搜索的分析所证明的那样。 -但在Q-learning的背景下,给予工人辞职并在失业期间获得失业补助的选项,实际上通过促进探索而非过早地进行利用,加快了学习过程。 +然而,从学习算法的角度看,允许辞职选项实际上有助于加速学习过程。这是因为辞职选项促进了状态空间的探索,避免了过早地固定在某一决策上(即过早利用而非探索)。 -为了说明这一点,我们将修改时间差分公式,以禁止已就业的工人辞去她之前接受的工作。 +为了展示不允许辞职的情况,我们需要修改策略公式,限制已就业劳动者必须保持其当前工作。 -基于对可选择项的这种理解,我们得到以下时间差分值: +基于这种限制,我们可以得到以下修改后的策略值: $$ \begin{aligned} @@ -704,25 +691,25 @@ $$ \end{aligned} $$ (eq:temp-diff) -事实证明,公式{eq}`eq:temp-diff`与我们的Q学习递归{eq}`eq:old3`结合使用,可以让我们的智能体最终学习到最优值函数,就像在可以重新抽取选项的情况下一样。 +实际上,当我们将公式{eq}`eq:temp-diff`与Q学习递归{eq}`eq:old3`结合使用时,智能体仍然能够最终学习到最优值函数,就像在允许辞职的情况下一样。 -但是学习速度较慢,因为如果代理人过早接受工资报价,就会失去在同一回合中探索新状态和调整该状态相关价值的机会。 +然而,这种学习过程会变得更加缓慢。这是因为一旦代理人接受了工资报价,他就失去了在当前回合中继续探索其他状态和更新相应价值估计的机会。 -当训练轮数/回合数较低时,这可能导致次优结果。 +在训练初期阶段(即训练轮数较少时),这种限制往往会导致次优的学习结果。 -但是如果我们增加训练轮数/回合数,我们可以观察到误差会减小,结果会变得更好。 +不过,随着我们增加训练轮数,学习误差会逐渐减小,最终结果会越来越接近最优解。 -我们用以下代码和图表来说明这些可能性。 +下面的代码和图表将直观地展示这一学习过程。 ```{code-cell} ipython3 plot_epochs(epochs_to_plot=[100, 1000, 10000, 100000, 200000], quit_allowed=0) ``` -## 可能的扩展 +## 进一步的研究方向 -要将算法扩展到处理连续状态空间的问题,一个典型的方法是限制Q函数和策略函数采用特定的函数形式。 +当我们需要处理连续状态空间的问题时,Q学习算法需要进行适当的扩展。一种常见的方法是采用特定函数形式来近似Q函数和策略函数。 -这就是**深度Q学习**的方法,其核心思想是使用多层神经网络作为良好的函数逼近器。 +这种思路发展出了**深度Q学习**(Deep Q-Learning)方法,它利用多层神经网络的强大表达能力来逼近复杂的Q函数。神经网络作为通用函数逼近器,能够有效捕捉连续状态空间中的价值信息。 -我们将在后续的quantecon课程中讨论这个主题。 +在后续的quantecon课程中,我们将深入探讨深度Q学习及其在更复杂经济模型中的应用。 diff --git a/lectures/odu.md b/lectures/odu.md index c3b76e3..741013b 100644 --- a/lectures/odu.md +++ b/lectures/odu.md @@ -39,7 +39,7 @@ tags: [hide-output] 我们将基于[这节课](https://python.quantecon.org/exchangeable.html)讨论的贝叶斯学习模型,该课程涉及可交换性及其与IID(独立同分布)随机变量和贝叶斯更新概念的关系。 -在McCall模型中,失业工人需要决定何时接受一份固定工资的永久工作,这取决于: +在McCall模型中,失业劳动者需要决定何时接受一份固定工资的永久工作,这取决于: - 他或她的贴现因子 - 失业补助金水平 @@ -78,18 +78,18 @@ from scipy.stats import cumfreq, beta ### 基本McCall模型 -回想一下,{doc}`在基准模型中 `,失业工人在每个时期都会收到一份永久工作机会,工资为$W_t$。 +回想一下,{doc}`在基准模型中 `,失业劳动者在每个时期都会收到一份永久工作机会,工资为$W_t$。 -在时间$t$,我们的工人可以: +在时间$t$,我们的劳动者可以: 1. 接受工作机会并以固定工资$W_t$永久工作 1. 拒绝工作机会,获得失业补助$c$并在下一期重新考虑 工资序列${W_t}$是独立同分布的,由已知密度$q$生成。 -工人的目标是最大化预期贴现收益总和$\mathbb{E} \sum_{t=0}^{\infty}\beta^t y_t$。 +劳动者的目标是最大化预期贴现收益总和$\mathbb{E} \sum_{t=0}^{\infty}\beta^t y_t$。 -让$v(w)$表示刚收到工资为$w$的工作机会的失业工人的最优价值,并且正在 +让$v(w)$表示刚收到工资为$w$的工作机会的失业劳动者的最优价值,并且正在 尚未决定是接受还是拒绝这个报价。 @@ -114,9 +114,9 @@ $\bar w$ 是一个称为*保留工资*的常数。 除了以下几点外,模型与上述相同: - 密度 $q$ 是未知的 -- 工人通过从先验开始,并根据他/她观察到的工资报价来更新来了解 $q$ +- 劳动者通过从先验开始,并根据他/她观察到的工资报价来更新来了解 $q$ -工人知道有两种可能的分布 $F$ 和 $G$。 +劳动者知道有两种可能的分布 $F$ 和 $G$。 这两个分布分别具有密度 $f$ 和 $g$。 @@ -124,17 +124,17 @@ $\bar w$ 是一个称为*保留工资*的常数。 这就是整个序列 ${W_t}$ 将从中抽取的工资分布。 -工人不知道自然选择了哪个分布,但工人知道两个可能的分布 $f$ 和 $g$。 +劳动者不知道自然选择了哪个分布,但劳动者知道两个可能的分布 $f$ 和 $g$。 -工人对 $f$ 被选中的主观先验概率为 $\pi_0$。 +劳动者对 $f$ 被选中的主观先验概率为 $\pi_0$。 -工人在时间 $0$ 时对 $W_0$ 分布的主观分布是 +劳动者在时间 $0$ 时对 $W_0$ 分布的主观分布是 $$ \pi_0 f + (1 - \pi_0) g $$ -工人在时间 $t$ 时对 $W_t$ 分布的主观信念是 +劳动者在时间 $t$ 时对 $W_t$ 分布的主观信念是 $$ \pi_t f + (1 - \pi_t) g, @@ -179,7 +179,7 @@ $$ \kappa(w, \pi) := \frac{\pi f(w)}{\pi f(w) + (1 - \pi) g(w)} $$ -我们可以将失业工人的价值函数递归表示如下 +我们可以将失业劳动者的价值函数递归表示如下 ```{math} :label: odu_mvf @@ -192,7 +192,7 @@ v(w, \pi) \pi' = \kappa(w', \pi) ``` -注意当前的猜测值 $\pi$ 是一个状态变量,因为它影响工人对未来报酬概率的感知。 +注意当前的猜测值 $\pi$ 是一个状态变量,因为它影响劳动者对未来报酬概率的感知。 ### 参数化 @@ -237,7 +237,7 @@ plt.show() - $f$是一个不如$g$有吸引力的分布 - 较大的$\pi$意味着$f$的权重更大,$g$的权重更小 -因此,较大的$\pi$会降低工人对未来前景的评估,所以相对较低的当前报价变得更有吸引力。 +因此,较大的$\pi$会降低劳动者对未来前景的评估,所以相对较低的当前报价变得更有吸引力。 **总结:** 我们推测最优策略的形式是$\mathbb 1{w\geq \bar w(\pi) }$,其中$\bar w$是某个递减函数。 @@ -460,7 +460,7 @@ plt.show() ## 另一个泛函方程 -首先,注意当$w = \bar w(\pi)$时,工人对接受和拒绝是无差异的。 +首先,注意当$w = \bar w(\pi)$时,劳动者对接受和拒绝是无差异的。 因此,{eq}`odu_mvf`右侧的两个选择具有相等的值: @@ -762,7 +762,7 @@ def simulate_path(F_a=F_a, d=200, # 变化时点 s=0.025): # 分离率 - """模拟N个工人在T个时期的就业路径""" + """模拟N个劳动者在T个时期的就业路径""" e = np.ones((N, T+1)) π = np.full((N, T+1), 1e-3) @@ -816,7 +816,7 @@ plt.show() def empirical_dist(F_a, F_b, G_a, G_b, w_bar, π_grid, N=10000, T=600): """ - 模拟人群以计算失业持续时间的经验累积分布和工人接受工资报价时的π值。 + 模拟人群以计算失业持续时间的经验累积分布和劳动者接受工资报价时的π值。 对于每个求职问题,我们模拟两种情况:f或g是真实的报价分布。 参数 @@ -825,7 +825,7 @@ def empirical_dist(F_a, F_b, G_a, G_b, w_bar, π_grid, F_a, F_b, G_a, G_b : beta分布F和G的参数 w_bar : 保留工资 π_grid : π的网格点,用于插值 - N : 模拟的工人数量,可选 + N : 模拟的劳动者数量,可选 T : 模拟的最大时间段,可选 返回值 @@ -889,7 +889,7 @@ def job_search_example(F_a=1, F_b=1, G_a=3, G_b=1.2, c=0.3): 计算并显示拒绝和接受区域, 信念π的演变,以及在不同π水平下接受offer的概率, 并模拟计算失业持续时间的经验累积分布, - 以及工人接受offer时π的经验累积分布。 + 以及劳动者接受offer时π的经验累积分布。 """ # 构建搜索问题 @@ -985,7 +985,7 @@ def job_search_example(F_a=1, F_b=1, G_a=3, G_b=1.2, c=0.3): axs[1].plot(cumfreq_x(cfq_π_G), cfq_π_G.cumcount/N, label="g生成") axs[1].grid(linestyle='--') axs[1].legend(loc=4) - axs[1].title.set_text('工人接受工资并离开失业状态时π的CDF') + axs[1].title.set_text('劳动者接受工资并离开失业状态时π的CDF') axs[1].set(xlabel='π', ylabel='概率(π)') plt.show() @@ -1017,21 +1017,21 @@ $$ - 当$l(w)$接近1时,这意味着新的$w$对区分两个分布的信息量不大 - 当$\pi_{t-1}$接近0或1时,这意味着先验很强 -当实际的分布是 $g$ 而不是 $f$ 时,失业工人会更早接受工作机会还是不会? +当实际的分布是 $g$ 而不是 $f$ 时,失业劳动者会更早接受工作机会还是不会? 这里存在两个相互抵消的效应。 - 如果 $f$ 产生连续的工资报价,那么 $w$ 更可能偏低,但 $\pi$ 会向 1 移动,这会降低保留工资, - 也就是说,工人失业时间越长就越不挑剔。 -- 如果 $g$ 产生工资报价,那么 $w$ 更可能偏高,但 $\pi$ 会向 0 移动,这会提高保留工资,也就是说,工人失业时间越长就越挑剔。 + 也就是说,劳动者失业时间越长就越不挑剔。 +- 如果 $g$ 产生工资报价,那么 $w$ 更可能偏高,但 $\pi$ 会向 0 移动,这会提高保留工资,也就是说,劳动者失业时间越长就越挑剔。 从定量角度来看,右下图说明了在这个例子中哪个效应占主导地位。 -它显示了当 $f$ 或 $g$ 产生工资报价时,之前失业的工人在不同 $\pi$ 值下接受工作机会的概率。 +它显示了当 $f$ 或 $g$ 产生工资报价时,之前失业的劳动者在不同 $\pi$ 值下接受工作机会的概率。 该图表明,对于这个例子中特定的 $f$ 和 $g$, -即使当 $\pi$ 接近零时,当 $f$ 生成数据时,工人也更有可能接受offer,尽管此时工人相信真实分布是 $g$ 并因此相对更具选择性。 +即使当 $\pi$ 接近零时,当 $f$ 生成数据时,劳动者也更有可能接受offer,尽管此时劳动者相信真实分布是 $g$ 并因此相对更具选择性。 失业持续时间的经验累积分布验证了我们的推测。 @@ -1069,13 +1069,13 @@ $F$ ~ Beta(1, 1),$G$ ~ Beta(3, 1.2),且 $c$=0.8。 在这个示例中,我们保持贝塔分布的参数与基准情况相同,但增加了失业补助金 $c$。 -与基准情况(示例1)相比,在失业补助金较低($c$=0.3)的情况下,现在工人可以承担更长的学习期。 +与基准情况(示例1)相比,在失业补助金较低($c$=0.3)的情况下,现在劳动者可以承担更长的学习期。 -因此,工人倾向于更晚接受工资报价。 +因此,劳动者倾向于更晚接受工资报价。 此外,在接受就业时,信念 $\pi$ 更接近于 0 或 1。 -这意味着当工人最终选择接受工资报价时,他对真实分布有了更好的认识。 +这意味着当劳动者最终选择接受工资报价时,他对真实分布有了更好的认识。 ```{code-cell} ipython3 job_search_example(1, 1, 3, 1.2, c=0.8) @@ -1086,7 +1086,7 @@ job_search_example(1, 1, 3, 1.2, c=0.8) $F$ ~ Beta(1, 1), $G$ ~ Beta(3, 1.2), 且 $c$=0.1。 -正如预期的那样,较小的 $c$ 使失业工人在获取较少的工资分布信息后就更早地接受工资offer。 +正如预期的那样,较小的 $c$ 使失业劳动者在获取较少的工资分布信息后就更早地接受工资offer。 ```{code-cell} ipython3 job_search_example(1, 1, 3, 1.2, c=0.1)