Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions lectures/_static/lecture_specific/lake_model/figures.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"id": "92a57207-4d79-4d7b-98c2-aea1a1e35f57",
"metadata": {},
"outputs": [
Expand All @@ -60,9 +60,9 @@
"\n",
"# Add nodes\n",
"G.attr('node', shape='circle')\n",
"G.node('1', 'New entrants', color='blue')\n",
"G.node('2', 'Unemployed')\n",
"G.node('3', 'Employed')\n",
"G.node('1', '新工人', color='blue')\n",
"G.node('2', '失业工人')\n",
"G.node('3', '就业工人')\n",
"\n",
"# Add edges\n",
"G.edge('1', '2', label='b')\n",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
digraph {
rankdir=LR
node [shape=circle]
1 [label="New entrants" color=blue]
2 [label=Unemployed]
3 [label=Employed]
1 [label="新工人" color=blue]
2 [label="失业工人"]
3 [label="就业工人"]
1 -> 2 [label=b]
2 -> 3 [label="λ(1-d)"]
3 -> 2 [label="α(1-d)"]
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 39 additions & 31 deletions lectures/lake_model.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ kernelspec:
---

# 就业的湖泊模型

## 大纲

除了 Anaconda 中包含的内容外,本讲座还需要以下库:

```{code-cell} ipython3
Expand All @@ -26,6 +28,7 @@ plt.rcParams['font.family'] = ['Source Han Serif SC']
```

## 湖泊模型

这个模型有时被称为**湖泊模型**,因为存在两个工人群体:
1. 当前就业的工人。
2. 当前失业但正在寻找工作的工人。
Expand All @@ -45,8 +48,11 @@ plt.rcParams['font.family'] = ['Source Han Serif SC']
```

## 动态变化

设 $e_t$ 和 $u_t$ 分别表示在时间 $t$ 时就业和失业工人的数量。

工人总人口为 $n_t = e_t + u_t$。

因此,失业和就业工人的数量按以下方式变化:

```{math}
Expand All @@ -59,7 +65,7 @@ plt.rcParams['font.family'] = ['Source Han Serif SC']
\end{aligned}
```

我们可以将{eq}`lake_model`安排为矩阵形式的线性方程组 $x_{t+1} = Ax_t$,其中
我们可以将{eq}`lake_model`整理为矩阵形式的线性方程组 $x_{t+1} = Ax_t$,其中

$$
x_{t+1} =
Expand Down Expand Up @@ -87,13 +93,14 @@ $$

因此,该系统的长期结果可能取决于初始条件 $x_0$ 和矩阵 $A$。

我们关心 $u_t$ 和 $e_t$ 随时间如何演变
我们关心 $u_t$ 和 $e_t$ 如何随时间如何演变

我们应该预期什么样的长期失业率和就业率
失业率和就业率从长期来看会如何变化

长期结果是否取决于初始值 $(u_0, e_o)$?

### 可视化长期结果

让我们首先绘制失业率 $u_t$、就业率 $e_t$ 和劳动力 $n_t$ 的时间序列图。

```{code-cell} ipython3
Expand All @@ -105,7 +112,7 @@ class LakeModel:
------------
λ:标量
当前失业工人的找到工作的比率
α:标量
α:标量
当前就业工人的解雇率
b:标量
进入劳动力市场的比率
Expand Down Expand Up @@ -143,7 +150,7 @@ class LakeModel:
x:迭代器
包含就业率和失业率的序列
"""
x0 = np.atleast_1d(x0) # 以防万一,重新转换为数组
x0 = np.atleast_1d(x0) # 重新转换为数组
x_ts= np.zeros((2, T))
x_ts[:, 0] = x0
for t in range(1, T):
Expand Down Expand Up @@ -180,16 +187,15 @@ for ax in axes:
plt.tight_layout()
plt.show()
```
将劳动力 $n_t$ 以恒定速率增长的观察结果并不令人惊讶
不出所料,我们观察到劳动力$n_t$以恒定的速率增长

这与失业和就业池只有一个流入源(新进入者池)的事实相吻合
这与只有一个流入源(新进入者池)流向失业和就业池的事实相吻合

劳动力市场系统的流入和流出
在长期内由劳动力市场的固定退出率和进入率决定。
从长期来看,劳动力市场系统的流入和流出是由劳动力市场的恒定退出率和进入率决定的。

具体来说,令 $\mathbb{1}=[1, 1]^\top$ 为一个全1向量。

观察到
我们可以得出

$$
\begin{aligned}
Expand All @@ -207,24 +213,24 @@ $$

### 佩龙-弗罗贝尼乌斯定理的应用

直观上,如果我们将失业池和就业池视为一个封闭系统,其增长应与劳动力相似
从直觉上讲,如果我们将失业池和就业池视为一个封闭系统,其增长应该与劳动力相似

接下来我们询问 $e_t$ 和 $u_t$ 的长期增长率
是否也由 $1+b-d$ 主导,就像劳动力一样。
接下来我们要问,$e_t$ 和 $u_t$ 的长期增长率
是否也像劳动力一样主要由 $1+b-d$ 决定?

如果我们求助于{ref}`佩龙-弗罗贝尼乌斯定理<perron-frobe>`,答案将更加清晰。
如果我们应用{ref}`佩龙-弗罗贝尼乌斯定理<perron-frobe>`,答案将更加清晰。

佩龙-弗罗贝尼乌斯定理的重要性源于以下事实:

首先,在现实世界中,我们遇到的大多数矩阵都是非负矩阵。

其次,许多重要模型都是简单的线性迭代模型,
从初始条件 $x_0$ 开始,然后按规则 $x_{t+1} = Ax_t$ 或简写为 $x_t = A^tx_0$ 递归演变。
其次,许多重要模型只是线性迭代模型,它们从初始条件$x_0$开始,然后通过规则$x_{t+1} = Ax_t$或简写为$x_t = A^tx_0$递归演化。

这个定理有助于表征主导特征值 $r(A)$,它
决定了这个迭代过程的行为。
这个定理有助于描述主特征值$r(A)$,它决定了这个迭代过程的行为。

#### 主导特征向量
现在我们通过展示佩龙-弗罗贝尼乌斯定理如何帮助我们分析湖泊模型来说明它的力量。

现在我们学习如何运用佩龙-弗罗贝尼乌斯定理来帮助我们分析湖泊模型。

由于 $A$ 是非负且不可约的矩阵,佩龙-弗罗贝尼乌斯定理意味着:

Expand All @@ -241,13 +247,13 @@ $$
A \phi = r(A) \phi, \quad \psi A = r(A) \psi
$$

- 如果进一步 $A$ 是正的,那么当 $<\psi, \phi> = \psi \phi=1$ 时,我们有
- 如果进一步假设 $A$ 是正的,那么当 $<\psi, \phi> = \psi \phi=1$ 时,我们有

$$
r(A)^{-t} A^t \to \phi \psi
$$

最后一个陈述意味着长期来看,$A^t$ 的量级与 $r(A)^t$ 的量级相同,其中 $r(A)$ 在本讲座中可被视为主导特征值
最后一个陈述意味着长期来看,$A^t$ 的量级与 $r(A)^t$ 的量级相同,其中 $r(A)$ 在本讲座中可被视为主特征值

因此,长期来看,$x_t = A^t x_0$ 的量级也由 $r(A)^t$ 主导。

Expand All @@ -259,7 +265,7 @@ $$
\min_j \text{colsum}_j (A) \leq r(A) \leq \max_j \text{colsum}_j (A)
```

注意,对于 $j=1,2$,$\text{colsum}_j(A) = 1 + b - d$,根据{eq}`PF_bounds`,我们因此可以得出主特征值为 $r(A) = 1 + b - d$。
注意,对于 $j=1,2$,$\text{colsum}_j(A) = 1 + b - d$,且根据{eq}`PF_bounds`,我们可以得出主特征值为 $r(A) = 1 + b - d$。

令 $g = b - d$ 表示总劳动力的整体增长率,因此 $r(A) = 1 + g$。

Expand Down Expand Up @@ -304,11 +310,11 @@ def plot_time_paths(lm, x0=None, T=1000, ax=None):

if ax is None:
fig, ax = plt.subplots(figsize=(10, 8))
# Plot line D
# 绘制线$D$
s = 10
ax.plot([0, s * ū], [0, s * ē], "k--", lw=1, label='set $D$')
ax.plot([0, s * ū], [0, s * ē], "k--", lw=1, label='设置$D$')

# Set the axes through the origin
# 设置通过原点的坐标轴
for spine in ["left", "bottom"]:
ax.spines[spine].set_position("zero")
for spine in ["right", "top"]:
Expand Down Expand Up @@ -364,6 +370,7 @@ $D := \{ x \in \mathbb{R}^2 : x = \alpha \bar{x} \; \text{对某些} \; \alpha >
这表明所有这样的序列在长期内都具有很强的相似性,由主特征向量 $\bar{x}$ 决定。

#### 负增长率

在上面说明的例子中,我们考虑的参数使得劳动力的总体增长率 $g>0$。

现在假设我们面临 $g<0$ 的情况,即劳动力呈负增长。
Expand All @@ -389,7 +396,7 @@ plot_time_paths(lm, x0=x0)

由于 $A$ 的列和为 $r(A)=1$,左特征向量是 $\mathbb{1}^\top=[1, 1]$。

佩龙-弗罗贝尼乌斯理论意味着
佩龙-弗罗贝尼乌斯理论告诉我们

$$
r(A)^{-t} A^{t} \approx \bar{x} \mathbb{1}^\top = \begin{bmatrix} \bar{u} & \bar{u} \\ \bar{e} & \bar{e} \end{bmatrix}.
Expand All @@ -414,27 +421,28 @@ $$

后者意味着 $\bar{u}$ 和 $\bar{e}$ 分别是长期失业率和就业率。

具体来说,我们有失业率和就业率:当 $t \to \infty$ 时,$x_t / n_t = A^t n_0 / n_t \to \bar{x}$。
具体来说,当 $t \to \infty$ 时,我们有失业率和就业率:$x_t / n_t = A^t n_0 / n_t \to \bar{x}$。

为了说明这些比率的动态,令 $\hat{A} := A / (1+g)$ 为 $r_t := x_t/ n_t$ 的转移矩阵。

比率的动态遵循

$$
r_{t+1} = \frac{x_{t+1}}{n_{t+1}} = \frac{x_{t+1}}{(1+g) n_{t}} = \frac{A x_t}{(1+g)n_t} = \hat{A} \frac{x_t}{n_t}
=\hat{A} r_t.
$$

注意到 $\hat{A}$ 的列和都为 1,因此 $r(\hat{A})=1$。
注意 $\hat{A}$ 的列和都为 1,因此 $r(\hat{A})=1$。

可以验证 $\bar{x}$ 也是 $\hat{A}$ 对应于 $r(\hat{A})$ 的右特征向量,即 $\bar{x} = \hat{A} \bar{x}$。
我们可以验证 $\bar{x}$ 也是 $\hat{A}$ 对应于 $r(\hat{A})$ 的右特征向量,即 $\bar{x} = \hat{A} \bar{x}$。

此外,对于任何 $r_0 = x_0 / n_0$,当 $t \to \infty$ 时,$\hat{A}^t r_0 \to \bar{x}$,因为上述讨论意味着

$$
r_t = \hat{A}^t r_0 = (1+g)^{-t} A^t r_0 = r(A)^{-t} A^t r_0 \to \begin{bmatrix} \bar{u} & \bar{u} \\ \bar{e} & \bar{e} \end{bmatrix} r_0 = \begin{bmatrix} \bar{u} \\ \bar{e} \end{bmatrix}.
$$

这在下面有所说明。
我们用下面的代码来说明

```{code-cell} ipython3
lm = LakeModel()
Expand Down Expand Up @@ -471,7 +479,7 @@ plt.tight_layout()
plt.show()
```

为了更直观地理解收敛性,我们在下面不使用佩龙-弗罗贝尼乌斯定理进一步解释收敛过程。
为了能更直观地理解收敛性,我们在下面不使用佩龙-弗罗贝尼乌斯定理进一步解释收敛过程。

假设 $\hat{A} = P D P^{-1}$ 是可对角化的,其中 $P = [v_1, v_2]$ 由 $\hat{A}$ 的特征向量 $v_1$ 和 $v_2$ 组成,
分别对应于特征值 $\gamma_1$ 和 $\gamma_2$,
Expand Down
Loading