diff --git a/lectures/ifp_advanced.md b/lectures/ifp_advanced.md
index 32f1d726..0d1cd3b9 100644
--- a/lectures/ifp_advanced.md
+++ b/lectures/ifp_advanced.md
@@ -9,15 +9,7 @@ kernelspec:
name: python3
---
-```{raw} jupyter
-
-```
-
-# {index}`收入波动问题 II:资产随机收益 `
+# 收入波动问题 II:资产随机收益
```{contents} 目录
:depth: 2
@@ -36,13 +28,13 @@ tags: [hide-output]
在本讲座中,我们继续研究 {doc}`收入波动问题 `。
-虽然之前利率是固定的,但现在我们允许资产收益随状态变化。
+之前假设利率是固定的,但现在我们允许资产收益随状态变化。
-这符合大多数拥有正资产的家庭面临某种资本收入风险的事实。
+这符合大多数拥有正资产的家庭面临资本收入风险这一事实。
有人认为,建模资本收入风险对于理解收入和财富的联合分布至关重要(参见,例如,{cite}`benhabib2015` 或 {cite}`stachurski2019impossibility`)。
-本文提出的家庭储蓄模型的理论特性在 {cite}`ma2020income` 中有详细分析。
+本文提出的家庭储蓄模型的理论性质在 {cite}`ma2020income` 中有详细分析。
在计算方面,我们结合时间迭代和内生网格方法来快速准确地求解模型。
@@ -63,7 +55,7 @@ from quantecon import MarkovChain
## 储蓄问题
-在本节中,我们回顾家庭问题和最优性结果。
+在本节中,我们回顾家庭问题及其最优性结果。
### 设定
@@ -87,7 +79,7 @@ a_{t+1} = R_{t+1} (a_t - c_t) + Y_{t+1}
初始条件 $(a_0, Z_0)=(a,z)$ 视为给定。
-注意 $\{R_t\}_{t \geq 1}$,即财富的总收益率,允许是随机的。
+注意,财富的总收益率序列 ${R_t}_{t \geq 1}$ 允许是随机的。
序列 $\{Y_t \}_{t \geq 1}$ 是非金融收入。
@@ -104,8 +96,8 @@ Y_t = Y(Z_t, \eta_t),
其中
* 映射 $R$ 和 $Y$ 是时不变的非负函数,
-* 创新过程 $\{\zeta_t\}$ 和 $\{\eta_t\}$ 是独立同分布的且相互独立,
-* $\{Z_t\}_{t \geq 0}$ 是有限集 $\mathsf Z$ 上的不可约时齐马尔可夫链
+* 创新过程 $\{\zeta_t\}$ 和 $\{\eta_t\}$ 独立同分布且相互独立,
+* $\{Z_t\}_{t \geq 0}$ 是有限集 $\mathsf Z$ 上的不可约齐次马尔可夫链
令 $P$ 表示链 $\{Z_t\}_{t \geq 0}$ 的马尔可夫矩阵。
@@ -115,9 +107,9 @@ Y_t = Y(Z_t, \eta_t),
### 假设
-我们需要一些限制来确保目标 {eq}`trans_at` 是有限的,并且下面描述的解方法收敛。
+我们需要一些限制条件来确保目标 {eq}`trans_at` 是有限的,并且下面描述的解法能够收敛。
-我们还需要确保财富的现值不会增长得太快。
+我们还需要确保财富的现值值不会增长得太快。
当 $\{R_t\}$ 是常数时,我们要求 $\beta R < 1$。
@@ -132,19 +124,18 @@ G_R := \lim_{n \to \infty}
\left(\mathbb E \prod_{t=1}^n R_t \right)^{1/n}
```
-注意,当 $\{R_t\}$ 取某个常数值 $R$ 时,这简化为之前的限制 $\beta R < 1$
+注意,当 $\{R_t\}$ 取某个常数值 $R$ 时,这一条件简化为之前的限制 $\beta R < 1$
值 $G_R$ 可以理解为长期(几何)平均总收益率。
-{eq}`fpbc2` 背后的更多直觉在 {cite}`ma2020income` 中提供。
+{cite}`ma2020income`提供了{eq}`fpbc2` 背后的更多直觉。
-下面讨论了如何检查它。
+我们在下面讨论如何检验该条件。
-最后,我们对非金融收入施加一些常规技术限制。
+最后,我们对非金融收入施加一些常规的技术性限制:
$$
\mathbb E \, Y_t < \infty \text{ 且 } \mathbb E \, u'(Y_t) < \infty
-\label{a:y0}
$$
一个相对简单且满足所有这些限制的环境是 {cite}`benhabib2015` 的独立同分布和 CRRA 环境。
@@ -155,8 +146,8 @@ $$
在 {cite}`ma2020income` 中证明,在所述假设下,
-* 满足欧拉方程的任意 $\sigma \in \mathscr C$ 是最优政策,且
-* $\mathscr C$ 中恰好存在一个这样的政策。
+* 任何满足欧拉方程的 $\sigma \in \mathscr C$ 都是最优政策,且
+* 在 $\mathscr C$ 中恰好存在一个这样的政策。
在当前设定中,欧拉方程的形式为
@@ -177,12 +168,9 @@ $$
## 求解算法
-```{index} single: Optimal Savings; Computation
-```
-
### 时间迭代算子
-我们对候选类 $\sigma \in \mathscr C$ 消费政策的定义与我们在 {doc}`早期讲座 ` 中关于收入波动问题的定义相同。
+我们对候选类 $\sigma \in \mathscr C$ 消费政策的定义与{doc}`之前关于收入波动问题的讲座 `中的定义相同。
对于固定的 $\sigma \in \mathscr C$ 和 $(a,z) \in \mathbf S$,函数 $K\sigma$ 在 $(a,z)$ 处的值 $K\sigma(a,z)$ 定义为满足以下方程的 $\xi \in (0,a]$
@@ -197,13 +185,13 @@ u'(\xi) =
\right\}
```
-$K$ 背后的思想是,从定义可以看出,$\sigma \in \mathscr C$ 满足欧拉方程当且仅当对于所有 $(a, z) \in \mathbf S$ 有 $K\sigma(a, z) = \sigma(a, z)$。
+$K$ 背后的思想是,从定义可以看出,$\sigma \in \mathscr C$ 满足欧拉方程当且仅当对于所有 $(a, z) \in \mathbf S$ 都有 $K\sigma(a, z) = \sigma(a, z)$。
-这意味着 $K$ 在 $\mathscr C$ 中的不动点和最优消费政策完全重合(参见 {cite}`ma2020income` 了解更多细节)。
+这意味着 $K$ 在 $\mathscr C$ 中的不动点和最优消费政策完全重合(更多细节参见 {cite}`ma2020income`)。
### 收敛性质
-如前所述,我们将 $\mathscr C$ 与距离配对
+如前所述,我们在 $\mathscr C$ 上定义如下度量
$$
\rho(c,d)
@@ -216,11 +204,11 @@ $$
可以证明
-1. $(\mathscr C, \rho)$ 是一个完全度量空间,
+1. $(\mathscr C, \rho)$ 是一个完备度量空间,
1. 存在一个整数 $n$ 使得 $K^n$ 是 $(\mathscr C, \rho)$ 上的压缩映射,且
1. $K$ 在 $\mathscr C$ 中的唯一不动点是 $\mathscr C$ 中的唯一最优政策。
-我们现在有了一个清晰的路径来成功逼近最优政策:选择某个 $\sigma \in \mathscr C$ 然后用 $K$ 迭代直到收敛(用距离 $\rho$ 衡量)。
+现在,我们有了一个清晰的路径来成功地逼近最优政策:选择某个 $\sigma \in \mathscr C$ 然后用 $K$ 迭代直到收敛(用距离 $\rho$ 衡量)。
### 使用内生网格
@@ -240,13 +228,13 @@ $$
对于相应的 $a_0, c_0$ 对,我们有 $a_0 = c_0$。
-这发生在接近原点的地方,那里资产较低,家庭消费其所能消费的一切。
+这发生在接近原点的地方,资产较低,家庭消费其所能消费的一切。
虽然有许多解,但我们取 $a_0 = c_0 = 0$,这固定了原点处的政策,有助于插值。
对于 $s > 0$,根据定义,我们有 $c < a$,因此消费是内部的。
-因此 {eq}`ifpa_euler` 的最大值部分消失,我们求解
+因此 {eq}`ifpa_euler` 的最大值部分消失,我们在每个 $s_i$ 处求解
```{math}
:label: eqsifc2
@@ -260,15 +248,13 @@ c_i =
\right\}
```
-在每个 $s_i$ 处。
-
#### 迭代
-一旦我们有对 $\{s_i, c_i\}$,内生资产网格通过 $a_i = c_i + s_i$ 获得。
+一旦我们得到 ${s_i, c_i}$ 对,内生资产网格通过 $a_i = c_i + s_i$ 获得。
-另外,我们在上面的讨论中固定了 $z \in \mathsf Z$,所以我们可以将其与 $a_i$ 配对。
+另外,在上面的讨论中我们固定了 $z \in \mathsf Z$,所以可以将其与 $a_i$ 配对。
-通过在每个 $z$ 处插值 $\{a_i, c_i\}$ 可以获得政策 $(a, z) \mapsto \sigma(a, z)$ 的近似。
+通过在每个 $z$ 上对 ${a_i, c_i}$ 插值,就可以得到政策 $(a,z) \mapsto \sigma(a,z)$ 的近似。
在下面的内容中,我们使用线性插值。
@@ -276,25 +262,25 @@ c_i =
时间迭代的收敛性依赖于条件 $\beta G_R < 1$ 的满足。
-可以使用以下事实来检查这一点:$G_R$ 等于矩阵 $L$ 的谱半径,其中 $L$ 定义为
+我们可以利用 $G_R$ 等于矩阵 $L$ 的谱半径这一事实来检验。矩阵 $L$ 定义为
$$
L(z, \hat z) := P(z, \hat z) \int R(\hat z, x) \phi(x) dx
$$
-这个等式在 {cite}`ma2020income` 中证明,其中 $\phi$ 是资产收益创新 $\zeta_t$ 的密度。
+这个恒等式在 {cite}`ma2020income` 中得到证明,其中 $\phi$ 是资产收益创新 $\zeta_t$ 的密度函数。
-(记住 $\mathsf Z$ 是一个有限集,所以这个表达式定义了一个矩阵。)
+(注意,$\mathsf Z$ 是一个有限集,所以这个表达式定义了一个矩阵。)
-当 $\{R_t\}$ 是独立同分布时,检查条件甚至更容易。
+当 $\{R_t\}$ 是独立同分布时,检查这一条件甚更容易。
在这种情况下,从 $G_R$ 的定义可以清楚地看出 $G_R$ 就是 $\mathbb E R_t$。
-我们在下面的代码中测试条件 $\beta \mathbb E R_t < 1$。
+我们在下面的代码中检验条件 $\beta \mathbb E R_t < 1$。
## 实现
-我们将假设 $R_t = \exp(a_r \zeta_t + b_r)$,其中 $a_r, b_r$ 是常数,$\{ \zeta_t\}$ 是独立同分布的标准正态。
+我们将假设 $R_t = \exp(a_r \zeta_t + b_r)$,其中 $a_r, b_r$ 是常数,$\{\zeta_t\}$ 是独立同分布的标准正态。
我们允许劳动收入相关,即
@@ -302,16 +288,16 @@ $$
Y_t = \exp(a_y \eta_t + Z_t b_y)
$$
-其中 $\{ \eta_t\}$ 也是独立同分布的标准正态,$\{ Z_t\}$ 是取值于 $\{0, 1\}$ 的马尔可夫链。
+其中 $\{\eta_t\}$ 也是独立同分布的标准正态,$\{ Z_t\}$ 是取值于 $\{0, 1\}$ 的马尔可夫链。
```{code-cell} ipython
ifp_data = [
('γ', float64), # 效用参数
- ('β', float64), # 贴现因子
+ ('β', float64), # 折现因子
('P', float64[:, :]), # z_t 的转移概率
- ('a_r', float64), # R_t 的比例参数
+ ('a_r', float64), # R_t 的尺度参数
('b_r', float64), # R_t 的加性参数
- ('a_y', float64), # Y_t 的比例参数
+ ('a_y', float64), # Y_t 的尺度参数
('b_y', float64), # Y_t 的加性参数
('s_grid', float64[:]), # 储蓄网格
('η_draws', float64[:]), # 用于 MC 的创新 η 的抽取
@@ -323,7 +309,7 @@ ifp_data = [
@jitclass(ifp_data)
class IFP:
"""
- 存储收入波动问题原语的类。
+ 用于收入波动问题的基本类
"""
def __init__(self,
@@ -340,7 +326,7 @@ class IFP:
grid_size=100,
seed=1234):
- np.random.seed(seed) # 任意种子
+ np.random.seed(seed) # 任意随机种子
self.P, self.γ, self.β = P, γ, β
self.a_r, self.b_r, self.a_y, self.b_y = a_r, b_r, a_y, b_y
@@ -348,16 +334,16 @@ class IFP:
self.ζ_draws = np.random.randn(shock_draw_size)
self.s_grid = np.linspace(0, grid_max, grid_size)
- # 假设 {R_t} 是独立同分布且采用下面给定的对数正态
- # 规格来测试稳定性。测试是 β E R_t < 1。
+ # 假设 ${R_t}$ 独立同分布并服从下面给定的对数正态分布设定,进行稳定性检验。
+ # 检验 β E R_t < 1。
ER = np.exp(b_r + a_r**2 / 2)
- assert β * ER < 1, "稳定性条件失败。"
+ assert β * ER < 1, "稳定性条件不成立。"
# 边际效用
def u_prime(self, c):
return c**(-self.γ)
- # 边际效用的逆
+ # 边际效用的逆函数
def u_prime_inv(self, c):
return c**(-1/self.γ)
@@ -422,7 +408,7 @@ def K(a_in, σ_in, ifp):
return a_out, σ_out
```
-下一个函数通过时间迭代求解最优消费政策的近似:
+下一个函数通过时间迭代求解最优消费政策的近似。
```{code-cell} ipython
def solve_model_time_iter(model, # 包含模型信息的类
@@ -442,27 +428,27 @@ def solve_model_time_iter(model, # 包含模型信息的类
error = np.max(np.abs(σ_vec - σ_new))
i += 1
if verbose and i % print_skip == 0:
- print(f"迭代 {i} 处的误差是 {error}。")
+ print(f"第{i}迭代的误差是 {error}。")
a_vec, σ_vec = np.copy(a_new), np.copy(σ_new)
if error > tol:
print("未能收敛!")
elif verbose:
- print(f"\n在 {i} 次迭代后收敛。")
+ print(f"\n在第{i}次迭代中收敛。")
return a_new, σ_new
```
-现在我们已经准备好用默认参数创建一个实例。
+现在我们可以用默认参数创建一个实例。
```{code-cell} ipython
ifp = IFP()
```
-接下来我们设置一个初始条件,对应于消费所有资产。
+接下来我们设置一个初始条件,对应“消费掉所有资产”。
```{code-cell} ipython
-# σ = 消费所有资产的初始猜测
+# 初始猜测 σ = 消费所有资产
k = len(ifp.s_grid)
n = len(ifp.P)
σ_init = np.empty((k, n))
@@ -488,17 +474,17 @@ plt.legend()
plt.show()
```
-注意,我们在资产空间的较低范围内消费所有资产。
+注意,在资产空间的较低区间,我们会消费掉所有资产。
-这是因为我们预期明天会有收入 $Y_{t+1}$,这使得储蓄的需求不那么迫切。
+这是因为我们预期下一期会有收入 $Y_{t+1}$,因此储蓄的紧迫性较低。
-你能解释为什么当 $z=0$ 时,消费所有资产结束得更早(对于较低的资产值)吗?
+你能解释为什么在 $z=0$ 时,消费掉所有资产会更早结束(即在较低的资产水平就停止)吗?
-### 运动定律
+### 运动规律
-让我们尝试了解在这种消费政策下资产长期会发生什么。
+让我们试着了解,在这种消费政策下,从长期来看资产会如何变化。
-与我们在 {doc}`早期讲座 ` 中关于收入波动问题的内容一样,我们首先制作一个 45 度图,显示资产的运动定律:
+与我们在 {doc}`之前关于收入波动问题的讲座` 中一样,我们首先制作一个 45 度图,展示资产的运动规律:
```{code-cell} python3
# 好状态和坏状态的平均劳动收入
@@ -518,7 +504,7 @@ ax.legend()
plt.show()
```
-实线代表,对于每个 $z$,资产的平均更新函数,由下式给出:
+图中实线表示对于每个 $z$,资产的平均更新函数,由下式给出:
$$
a \mapsto \bar R (a - \sigma^*(a, z)) + \bar Y(z)
@@ -526,27 +512,27 @@ $$
其中
-* $\bar R = \mathbb E R_t$,即平均收益,且
-* $\bar Y(z) = \mathbb E_z Y(z, \eta_t)$,即状态 $z$ 中的平均劳动收入。
+* $\bar R = \mathbb E R_t$,即平均收益率,且
+* $\bar Y(z) = \mathbb E_z Y(z, \eta_t)$,即状态 $z$ 下的平均劳动收入。
虚线是 45 度线。
-从图中我们可以看到,即使在最高状态下,动态也是稳定的 --- 资产不会发散。
+从图中可以看出,动态是稳定的——即使在最高的状态下,资产也不会发散。
## 练习
```{exercise}
:label: ifpa_ex1
-让我们重复 {ref}`早期练习 ` 关于资产的长期横截面分布。
+让我们重复 {ref}`之前的练习 `,研究资产的长期横截面分布。
在那个练习中,我们使用了一个相对简单的收入波动模型。
-在解决方案中,我们发现资产分布的形状不切实际。
+在解答中,我们发现资产分布的形状不切实际。
-特别是,我们未能匹配财富分布的长期右尾。
+特别是,我们未能匹配财富分布的长右尾。
-你的任务是再次尝试,重复练习,但现在使用我们更复杂的模型。
+你的任务是再次尝试这个练习,但这一次使用我们更复杂的模型。
使用默认参数。
```
@@ -555,11 +541,11 @@ $$
:class: dropdown
```
-首先我们写一个函数来计算长期资产序列。
+首先我们编写一个函数来生成一个较长的资产序列。
-因为我们想要 JIT 编译这个函数,所以我们以一种打破了一些良好编程风格规则的方式编写解决方案。
+因为我们希望用 JIT 来编译函数,所以在写代码时不得不打破一些良好的编程风格。
-例如,我们将传入解 `a_star, σ_star` 以及 `ifp`,即使更自然的方式是只传入 `ifp` 然后在函数内求解。
+例如,我们会把解 `a_star, σ_star` 以及 `ifp` 一起传入,尽管更自然的方式是只传入 `ifp` 然后在函数内求解。
我们这样做的原因是 `solve_model_time_iter` 不是 JIT 编译的。
@@ -567,8 +553,7 @@ $$
@jit
def compute_asset_series(ifp, a_star, σ_star, z_seq, T=500_000):
"""
- 模拟长度为 T 的资产时间序列,给定最优
- 储蓄行为。
+ 在最优储蓄行为下,模拟长度为 T 的资产时间序列
* ifp 是 IFP 的实例
* a_star 是内生网格解
@@ -591,7 +576,7 @@ def compute_asset_series(ifp, a_star, σ_star, z_seq, T=500_000):
return a
```
-现在让我们调用这个函数,生成序列并绘制直方图,使用上面计算的解:
+接下来,我们调用该函数,生成资产序列,并利用上面的解来绘制直方图。
```{code-cell} python3
T = 1_000_000
@@ -606,9 +591,9 @@ ax.set(xlabel='资产')
plt.show()
```
-现在我们已经成功地复制了财富分布的长期右尾。
+我们现在已经成功再现了财富分布的长右尾。
-这是使用水平小提琴图的另一个视图:
+下面用一张水平小提琴图来展示这一结果的另一种视角。
```{code-cell} python3
fig, ax = plt.subplots()
@@ -618,4 +603,4 @@ plt.show()
```
```{solution-end}
-```
\ No newline at end of file
+```