@@ -24,21 +24,21 @@ kernelspec:
24
24
25
25
## 概述
26
26
27
- 本讲使用矩阵来解决一些线性差分方程 。
27
+ 本讲使用矩阵来解决线性差分方程 。
28
28
29
29
作为一个实际例子,我们将研究一个保罗·萨缪尔森 1939 年文章 {cite}` Samuelson1939 ` 中的** 二阶线性差分方程** ,该文章引入了** 乘数加速器** 模型。
30
30
31
- 该模型推动了早期美国凯恩斯主义宏观经济模型的计量经济版本 。
31
+ 这个模型对早期美国凯恩斯主义宏观经济学的计量经济学研究产生了重要影响 。
32
32
33
- 你可以在 {doc}` intermediate:samuelson ` 中阅读该模型的详细信息 。
33
+ 如果你想了解更多关于这个模型的细节,可以参考 {doc}` intermediate:samuelson ` 。
34
34
35
- (该讲座还描述了一些关于二阶线性差分方程的细节 。)
35
+ (该讲座也包含了二阶线性差分方程的一些技术细节 。)
36
36
37
- 在本讲座中,我们还将了解一个非平稳单变量时间序列 $\{ y_t\} _ {t=0}^T$ 的 ** 自回归** 表达和 ** 移动平均** 表达 。
37
+ 在本讲座中,我们将探讨如何用两种不同的方式来表示非平稳时间序列 $\{ y_t\} _ {t=0}^T$: ** 自回归** 表示和 ** 移动平均** 表示 。
38
38
39
39
我们还将研究一个涉及解“前瞻性”线性差分方程的“完全预见的”股票价格模型。
40
40
41
- 我们将使用以下导入 :
41
+ 让我们先导入所需的Python包 :
42
42
43
43
``` {code-cell} ipython3
44
44
import numpy as np
@@ -73,7 +73,7 @@ y_{t} = \alpha_{0} + \alpha_{1} y_{t-1} + \alpha_{2} y_{t-2}
73
73
实际上,它是 $T$ 个关于 $T$ 个变量 $y_1, y_2, \ldots, y_T$ 的线性方程的集合。
74
74
75
75
``` {note}
76
- 为了能够解决一个二阶线性差分方程,我们需要两个**边界条件**,它们可以采取两种 **初始条件**或两种 **终端条件**或可能是每种一种的形式 。
76
+ 为了能够解决一个二阶线性差分方程,我们需要两个**边界条件**,它们可以采取两个 **初始条件**或两个 **终端条件**或每种各一个的形式 。
77
77
```
78
78
79
79
我们将方程写成堆叠系统
125
125
126
126
我们用 Python 来实现一个例子来展现萨缪尔森乘数-加速器模型的基本思想。
127
127
128
- 我们将参数设置为与讲 {doc}` intermediate:samuelson ` 中使用的值相同 。
128
+ 我们使用与 {doc}` intermediate:samuelson ` 讲座相同的参数值 。
129
129
130
130
``` {code-cell} ipython3
131
131
T = 80
@@ -157,16 +157,15 @@ b[0] = α_0 + α_1 * y_0 + α_2 * y_neg1
157
157
b[1] = α_0 + α_2 * y_0
158
158
```
159
159
160
- 让我们来看看我们的例子中的矩阵 $A$ 和向量 $b$。
160
+ 让我们打印出例子中的矩阵 $A$ 和向量 $b$。
161
161
162
162
``` {code-cell} ipython3
163
163
A, b
164
164
```
165
165
166
166
现在我们来求解 $y$ 的路径。
167
167
168
- 如果 $y_t$ 是 $t$ 时间的国民生产总值,那么我们就有了一个版本的
169
- 萨缪尔森的国民生产总值动态模型。
168
+ 如果 $y_t$ 表示 $t$ 时期的国民生产总值,那么这就是萨缪尔森国民生产总值动态模型的一个版本。
170
169
171
170
要求解 $y = A^{-1} b$,我们可以直接倒置 $A$
172
171
@@ -176,7 +175,7 @@ A_inv = np.linalg.inv(A)
176
175
y = A_inv @ b
177
176
```
178
177
179
- or we can use ` np.linalg.solve ` :
178
+ 或者我们可以使用 ` np.linalg.solve ` :
180
179
181
180
``` {code-cell} ipython3
182
181
y_second_method = np.linalg.solve(A, b)
@@ -201,7 +200,7 @@ np.allclose(A, np.tril(A))
201
200
然而,对于这个小例子来说,稳定性不是问题。此外,我们将下面重复使用`A_inv`,直接计算出它来会有比较好。
202
201
```
203
202
204
- Now we can plot.
203
+ 现在我们可以绘制时间序列。
205
204
206
205
``` {code-cell} ipython3
207
206
plt.plot(np.arange(T)+1, y)
@@ -211,7 +210,7 @@ plt.ylabel('y')
211
210
plt.show()
212
211
```
213
212
214
- 通过在{eq}` tswm_1 ` 中设定 $y_t = y_ {t-1} = y_ {t-2} = y^* $,可以得到 $y_t$ 的 {ref}` *稳态*<scalar-dynam:steady-state> ` 值 $y^* $。
213
+ 通过在{eq}` tswm_1 ` 中设 $y_t = y_ {t-1} = y_ {t-2} = y^* $,可以得到 $y_t$ 的 {ref}` *稳态*<scalar-dynam:steady-state> ` 值 $y^* $。
215
214
216
215
$$
217
216
y^* = \frac{\alpha_{0}}{1 - \alpha_{1} - \alpha_{2}}
@@ -243,7 +242,7 @@ plt.show()
243
242
244
243
## 添加随机项
245
244
246
- 为了让这个例子有趣一些,我们将遵循经济学家[ 尤金·斯卢茨基] ( https://en.wikipedia.org/wiki/Eugen_Slutsky ) 和[ 拉格纳·弗里希] ( https://en.wikipedia.org/wiki/Ragnar_Frisch ) 的方法,用以下** 二阶随机线性差分方程** 替换我们原来的二阶差分方程:
245
+ 为了让这个例子有趣一些,我们将遵循经济学家[ 尤金·斯卢茨基] ( https://baike.baidu.com/item/%E5%B0%A4%E9%87%91%C2%B7%E6%96%AF%E5%8B%92%E8%8C%A8%E5%9F%BA/15727527 ) 和[ 拉格纳·弗里希] ( https://baike.baidu.com/item/%E6%8B%89%E6%A0%BC%E7%BA%B3%C2%B7%E5%BC%97%E9%87%8C%E5%B8%8C/11051879 ) 的方法,用以下** 二阶随机线性差分方程** 替换我们原来的二阶差分方程:
247
246
248
247
249
248
``` {math}
@@ -297,7 +296,7 @@ plt.ylabel('y')
297
296
plt.show()
298
297
```
299
298
300
- 上面的时间序列在最近几十年中与很多先进国家(去趋势后的)GDP系列非常相似 。
299
+ 上面生成的时间序列与许多发达国家近几十年的实际GDP数据(去除趋势后)有着惊人的相似性 。
301
300
302
301
我们可以模拟 $N$ 条路径。
303
302
@@ -436,11 +435,11 @@ series_process = population_moments()
436
435
A_inv = series_process.A_inv
437
436
```
438
437
439
- 研究由各种参数值隐含的 $\mu_y, \Sigma_y$ 是非常有意义的 。
438
+ 接下来,让我们探索不同参数值对 $\mu_y$ 和 $ \Sigma_y$ 的影响 。
440
439
441
- 此外,我们可以使用该类展示 $y$ 的 **统计平稳性**仅在非常特殊的初始条件下成立 。
440
+ 这个分析也将帮助我们理解一个重要的性质: $y$ 序列的 **统计平稳性**。我们会发现,只有在非常特定的初始条件下,这个序列才是平稳的 。
442
441
443
- 让我们首先生成 $y$ 的 $N$ 次时间实现,并将它们与总体均值 $\mu_y$ 一起绘制出来 。
442
+ 为了直观地理解这一点,我们先生成 $N$ 条 $y$ 序列的样本路径,并将它们与理论均值 $\mu_y$ 进行对比 。
444
443
445
444
```{code-cell} ipython3
446
445
# 绘制均值
@@ -458,7 +457,7 @@ plt.ylabel('y')
458
457
plt.show()
459
458
```
460
459
461
- 从视觉上看,注意到随着 $t$ 增加,$y_t$ 的各次实现之间的方差在减少 。
460
+ 从图中可以观察到一个有趣的现象:随着时间 $t$ 的推移,不同样本路径之间的离散程度在逐渐减小 。
462
461
463
462
绘制总体方差 $\Sigma_y$ 对角线。
464
463
@@ -468,9 +467,9 @@ plt.plot(Σ_y.diagonal())
468
467
plt.show()
469
468
```
470
469
471
- 注意总体方差如何增加并接近渐近值 。
470
+ 从图中我们可以看到,总体方差随时间增加,最终趋于一个稳定值。这种收敛行为反映了系统的内在稳定性 。
472
471
473
- 让我们从多个实现中计算样本方差并绘制出来 。
472
+ 为了进一步验证这一点,让我们通过模拟多条样本路径来计算样本方差,并将其与理论预测进行对比 。
474
473
475
474
```{code-cell} ipython3
476
475
series_process = population_moments(α_0=0,
@@ -486,15 +485,15 @@ print("μ_y = ", μ_y)
486
485
print("Σ_y = \n", Σ_y)
487
486
```
488
487
489
- 注意 $y_t$ 和 $y_{t-1}$ 之间的协方差—— 即超对角线上的元素——并*不*相同 。
488
+ 观察 $y_t$ 和 $y_{t-1}$ 之间的协方差( 即超对角线上的元素),我们发现它们并不相等 。
490
489
491
- 这表明由 $y$ 向量表示的时间序列并非**平稳 **。
490
+ 这个特征告诉我们,由 $y$ 向量表示的时间序列不具有**平稳性 **。
492
491
493
- 为了使其平稳,我们必须改变系统,使得*初始条件* $(y_0, y_{-1})$ 不再是固定的数值,而是一个具有特定均值和协方差矩阵的联合正态分布随机向量 。
492
+ 要使序列变得平稳,我们需要对系统做一个关键的改变:不再将初始条件 $(y_0, y_{-1})$ 设为固定值,而是让它们服从一个特定的联合正态分布,这个分布具有合适的均值和协方差矩阵 。
494
493
495
- 我们在 [线性状态空间模型](https://python.quantecon.org/linear_models.html)中描述了如何实现这一点 。
494
+ 如果你想了解如何实现这一点,可以参考我们在 [线性状态空间模型](https://python.quantecon.org/linear_models.html)中的详细讨论 。
496
495
497
- 但为了为分析做好铺垫,接下来我们打印出 $\Sigma_y$ 的右下角 。
496
+ 在继续深入分析之前,让我们先来看看 $\Sigma_y$ 矩阵右下角的数值 。
498
497
499
498
```{code-cell} ipython3
500
499
series_process = population_moments()
@@ -503,27 +502,23 @@ series_process = population_moments()
503
502
print("bottom right corner of Σ_y = \n", Σ_y[72:,72:])
504
503
```
505
504
506
- 注意 $y_t$ 和 $y_{t-1}$ 之间的协方差——即超对角线上的元素——并*不*相同 。
505
+ 请注意,随着时间 $t$ 的增加,子对角线和超对角线上的元素似乎趋于收敛 。
507
506
508
- 这表明由 $y$ 向量表示的时间序列并非**平稳** 。
507
+ 这表明我们的过程是渐近平稳的 。
509
508
510
- 为了使其平稳,我们必须改变系统,使得*初始条件* $(y_0, y_{-1})$ 不再是固定的数值,而是一个具有特定均值和协方差矩阵的联合正态分布随机向量 。
509
+ 你可以在[线性状态空间模型](https://python.quantecon.org/linear_models.html)中阅读更多关于更一般线性时间序列模型的平稳性 。
511
510
512
- 我们在[线性状态空间模型](https://python.quantecon.org/linear_models.html)中描述了如何实现这一点。
513
-
514
- 但为了为分析做好铺垫,接下来我们打印出 $\Sigma_y$ 的右下角。
511
+ 通过观察不同时间段的$\Sigma_y$的非对角线元素,我们可以学到很多关于这个过程的知识,但我们在这里暂时先不展开。
515
512
516
513
+++
517
514
518
515
## 移动平均表示
519
516
520
- 让我们打印出 $A^{-1}$ 并观察其结构
517
+ 让我们来研究 $A^{-1}$ 矩阵的结构。这个矩阵的形状会告诉我们一些关于系统动态特性的重要信息。
521
518
522
519
* 它是三角形矩阵、接近三角形,还是其他形式 $\ldots$?
523
520
524
- 为了研究 $A^{-1}$ 的结构,我们将只打印到小数点后三位。
525
-
526
- 首先让我们打印出 $A^{-1}$ 的左上角部分。
521
+ 为了便于观察,我们将打印 $A^{-1}$ 矩阵左上角的一部分,并将数值保留到小数点后三位。
527
522
528
523
```{code-cell} ipython3
529
524
print(A_inv[0:7,0:7])
546
541
y_ {t+1}=\sum_ {i=1}^{t+1}\tilde{A}_ {t+1,i}b_ {i}+\sum_ {i=1}^{t}\tilde{A}_ {t+1,i}u_ {i}+u_ {t+1}
547
542
$$
548
543
549
- 这是一个具有时间变化系数的 **移动平均**表示。
544
+ 这是一个 **移动平均**表示,其系数随时间变化 。
550
545
551
- 正如系统 {eq}`eq:eqma` 构成了 $y$ 的**移动平均** 表示,系统 {eq}`eq:eqar` 构成了 $y$ 的**自回归**表示 。
546
+ 我们可以看到,系统既可以用移动平均形式 {eq}`eq:eqma` 表示,也可以用自回归形式 {eq}`eq:eqar` 表示。这两种表示方式描述了同一个随机过程,只是从不同的角度来看 。
552
547
553
- ## 一个前瞻性模型
548
+ ## 从后视到前瞻
554
549
555
- 萨缪尔森的模型是 *后视*的,因为我们给它 *初始条件*并让它运行 。
550
+ 到目前为止,我们分析的萨缪尔森模型是一个 *后视(backward-looking)*模型 - 给定 *初始条件*后,系统就会向前演化 。
556
551
557
- 现在我们转向一个*前瞻性 *模型。
552
+ 接下来让我们转向一个*前瞻(forward-looking) *模型,这类模型在宏观经济学和金融学中被广泛使用 。
558
553
559
554
我们应用类似的线性代数工具来研究一个广泛用作宏观经济学和金融学基准的*完全预见*模型。
560
555
561
556
例如,假设 $p_t$ 是股票价格,$y_t$ 是其股息。
562
557
563
- 我们假设 $y_t$ 由我们刚刚分析的二阶差分方程确定,因此
558
+ 假设股息 $y_t$ 遵循我们前面分析的二阶差分方程,即
564
559
565
560
$$
566
561
y = A^{-1} \left(b + u\right)
574
569
575
570
其中 $\beta$ 是折现因子。
576
571
577
- 该模型断言,在 $t$ 时股票的价格等于(完全预见的)未来股息的折现现值之和
578
-
572
+ 该模型表明,股票在 $t$ 时刻的价格等于从当期开始直到终期所有未来股息的现值之和。每期股息都按折现因子 $\beta$ 进行贴现,期数越远贴现程度越大。
579
573
580
574
$$
581
575
\underset{\equiv p}{\underbrace{\left[ \begin{array}{c}
604
598
```
605
599
606
600
```{code-cell} ipython3
607
- # construct B
601
+ # 构建 B
608
602
B = np.zeros((T, T))
609
603
610
604
for i in range(T):
0 commit comments