@@ -4,54 +4,54 @@ jupytext:
4
4
extension : .md
5
5
format_name : myst
6
6
format_version : 0.13
7
- jupytext_version : 1.10.3
7
+ jupytext_version : 1.16.7
8
8
kernelspec :
9
- display_name : Python 3
9
+ display_name : Python 3 (ipykernel)
10
10
language : python
11
11
name : python3
12
12
---
13
13
14
14
# 向量自回归和动态模态分解
15
15
16
- 本讲座应用我们在 {doc}` 奇异值分解 <svd_intro> ` 讲座中学到的计算方法来研究 :
16
+ 本节讲座中,我们将应用在 {doc}` 奇异值分解 <svd_intro> ` 中学到的计算方法来研究 :
17
17
18
18
* 一阶向量自回归(VARs)
19
19
* 动态模态分解(DMDs)
20
- * DMDs和一阶VARs之间的联系
20
+ * 一阶向量自回归和动态模态分解之间的联系
21
21
22
22
## 一阶向量自回归
23
23
24
- 我们要拟合一个 ** 一阶向量自回归**
24
+ 我们想要拟合一个 ** 一阶向量自回归**
25
25
26
26
$$
27
27
X_{t+1} = A X_t + C \epsilon_{t+1}, \quad \epsilon_{t+1} \perp X_t
28
28
$$ (eq:VARfirstorder)
29
29
30
- 其中 $\epsilon_{t+1}$ 是一个独立同分布的 $m \times 1$ 随机向量序列的时间 $t+1$ 分量,该序列具有零均值向量和单位协方差矩阵, 而 $ m \times 1 $ 向量 $ X_t $ 为 :
30
+ 其中, $\epsilon_{t+1}$ 是一个独立同分布的随机向量序列 $m \times 1$ 在时间 $t+1$ 的分量,且该序列有零均值向量和单位协方差矩阵; 而 $ m \times 1 $ 的向量 $ X_t $ 是 :
31
31
32
32
$$
33
33
X_t = \begin{bmatrix} X_ {1,t} & X_ {2,t} & \cdots & X_ {m,t} \end{bmatrix}^\top
34
34
$$ (eq:Xvector)
35
35
36
- 其中 $\cdot ^\top $ 再次表示复数转置, $ X_{i,t} $ 是时间 $ t $ 的变量 $ i $。
36
+ 其中 $\cdot ^\top $ 表示复数转置<!-- 原文是“complex transpose”,似乎不是惯常表达,这里是想要表达“共轭转置”嘛?需不需要进一步解释 -->, $ X_{i,t} $ 是时间 $ t $ 时的变量 $ i $。
37
37
38
38
我们想要拟合方程 {eq}`eq:VARfirstorder`。
39
39
40
- 我们的数据组织在一个 $ m \times (n+1) $ 矩阵 $ \tilde X $ 中
40
+ 我们的数据则组织在一个 $ m \times (n+1) $ 的矩阵 $ \tilde X $ 中
41
41
42
42
$$
43
43
\tilde X = \begin{bmatrix} X_1 \mid X_2 \mid \cdots \mid X_n \mid X_ {n+1} \end{bmatrix}
44
44
$$
45
45
46
- 其中对于 $ t = 1, \ldots, n +1 $,$ m \times 1 $ 向量 $ X_t $ 由 {eq}`eq:Xvector` 给出。
46
+ 其中对于 $ t = 1, \ldots, n +1 $时 ,$ m \times 1 $ 的向量 $ X_t $ 由 {eq}`eq:Xvector` 给出。
47
47
48
48
因此,我们想要估计一个系统 {eq}`eq:VARfirstorder`,它由 $ m $ 个最小二乘回归组成,将**所有变量**对**所有变量**的一阶滞后值进行回归。
49
49
50
50
{eq}`eq:VARfirstorder` 的第 $i$ 个方程是将 $X_{i,t+1}$ 对向量 $X_t$ 进行回归。
51
51
52
52
我们按如下步骤进行。
53
53
54
- 从 $ \tilde X $ 中,我们形成两个 $m \times n$ 矩阵
54
+ 从 $ \tilde X $ 中,我们构造以下两个 $m \times n$ 矩阵
55
55
56
56
$$
57
57
X = \begin{bmatrix} X_1 \mid X_2 \mid \cdots \mid X_ {n}\end{bmatrix}
63
63
X' = \begin{bmatrix} X_2 \mid X_3 \mid \cdots \mid X_ {n+1}\end{bmatrix}
64
64
$$
65
65
66
- 这里的 $ ' $ 是矩阵 $ X' $ 名称的一部分 ,并不表示矩阵转置。
66
+ 这里的 $ ' $ 是矩阵 $ X' $ 的名称的一部分 ,并不表示矩阵转置。
67
67
68
68
我们使用 $\cdot^\top $ 来表示矩阵转置或其在复矩阵中的扩展。
69
69
70
- 在构造 $ X $ 和 $ X' $ 时,我们在每种情况下都从 $ \tilde X $ 中删除了一列,对于 $ X $ 是删除最后一列,对于 $ X' $ 是删除第一列 。
70
+ 在构造 $ X $ 和 $ X' $ 的过程中,我们都从 $ \tilde X $ 中删除了某一列, $ X $ 是删除最后一列,$ X' $ 则是删除第一列 。
71
71
72
- 显然,$ X $ 和 $ X' $ 都是 $ m \times n $ 矩阵 。
72
+ 显然,$ X $ 和 $ X' $ 都是 $ m \times n $ 的矩阵 。
73
73
74
74
我们用 $ p \leq \min(m, n) $ 表示 $ X $ 的秩。
75
75
76
76
我们感兴趣的两种情况是:
77
77
78
- * $ n > > m $,即时间序列观测值数量 $n$ 远大于变量数量 $m$
79
- * $ m > > n $,即变量数量 $m$ 远大于时间序列观测值数量 $n$
78
+ * $ n > > m $,即时间序列观测值的数量 $n$ 远大于变量的数量 $m$
79
+ * $ m > > n $,即变量的数量 $m$ 远大于时间序列观测值的数量 $n$
80
80
81
- 在包含这两种特殊情况的一般层面上,有一个共同的公式描述了 $A$ 的最小二乘估计量 $\hat A$。
81
+ 在考虑了这两种特殊情况的一般情况中,有一个通用的公式描述了 $A$ 的最小二乘估计量 $\hat A$。
82
82
83
83
但重要的细节有所不同。
84
84
85
- 这个共同的公式是 :
85
+ 这个通用的公式是 :
86
86
87
87
$$
88
88
\hat A = X' X^+
89
89
$$ (eq:commonA)
90
90
91
- 其中 $X^+$ 是 $X$ 的伪逆 。
91
+ 其中 $X^+$ 是 $X$ 的广义逆矩阵,或伪逆 。
92
92
93
- 关于**Moore-Penrose伪逆 **的详细信息,请参见[Moore-Penrose伪逆 ](https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse)
93
+ 关于**穆尔-彭罗斯广义逆矩阵 **的详细信息,请参见[穆尔-彭罗斯广义逆矩阵 ](https://baike.baidu.com/item/穆尔-彭罗斯广义逆矩阵/22770999?fr=aladdin)<!-- 中文语境下使用广义逆矩阵的语料远多于伪逆,所以后文统一使用广义逆矩阵 -->
94
94
95
- 伪逆的适用公式在我们的两种情况下有所不同 。
95
+ 在我们的两种情况下,广义逆矩阵适用的公式有所不同 。
96
96
97
97
**短胖情况:**
98
98
99
- 当$n >> m$时,即时间序列观测值 $n$远多于变量 $m$,且当$X$具有线性独立的**行**时,$X X^\top$有逆矩阵,伪逆 $X^+$为
99
+ 当$n >> m$时,即时间序列的观测值 $n$远多于变量的数量 $m$,且当$X$具有线性独立的**行**时,$X X^\top$的逆矩阵存在,且广义逆矩阵 $X^+$为
100
100
101
101
$$
102
102
X^+ = X^\top (X X^\top )^{-1}
103
103
$$
104
104
105
- 这里$X^+$是一个**右逆**,满足 $X X^+ = I_{m \times m}$。
105
+ 这里$X^+$是一个满足 $X X^+ = I_{m \times m}$的**右逆**, 。
106
106
107
- 在这种情况下,我们用于估计总体回归系数矩阵$A$的最小二乘估计量的公式{eq}`eq:commonA`变为
107
+ 在这种情况下,我们用于估计总体回归系数矩阵$A$的最小二乘估计量的公式{eq}`eq:commonA`就变为
108
108
109
109
$$
110
110
\hat A = X' X^\top (X X^\top )^{-1}
111
111
$$ (eq:Ahatform101)
112
112
113
- 这个最小二乘回归系数的公式在计量经济学中被广泛使用 。
113
+ 这个计算最小二乘回归系数的公式在计量经济学中被广泛地使用 。
114
114
115
- 它被用于估计向量自回归 。
115
+ 它也被用于估计向量自回归 。
116
116
117
- 公式{eq}`eq:Ahatform101`右边与 $X_{t+1}$和$X_t$的经验交叉二阶矩矩阵成正比,并乘以 $X_t$二阶矩矩阵的逆 。
117
+ 公式{eq}`eq:Ahatform101`的右边,正比于 $X_{t+1}$和$X_t$的经验交叉二阶矩矩,乘以 $X_t$二阶矩阵的逆矩阵 。
118
118
119
119
**高瘦型情况:**
120
120
121
- 当$m > > n$时,即属性数量$m$远大于时间序列观测值 $n$,且当$X$的**列**线性独立时,$X^\top X$有逆矩阵,伪逆 $X^+$为
121
+ 当$m > > n$时,即属性数量$m$远大于时间序列的观测值 $n$,且当$X$的**列**线性独立时,$X^\top X$的逆矩阵存在,且广义逆矩阵 $X^+$为
122
122
123
123
$$
124
124
X^+ = (X^\top X)^{-1} X^\top
125
125
$$
126
126
127
- 这里$X^+$是一个**左逆**,满足 $X^+ X = I_{n \times n}$。
127
+ 这里$X^+$是一个满足 $X^+ X = I_{n \times n}$的**左逆**, 。
128
128
129
129
在这种情况下,我们用于估计$A$的最小二乘估计公式{eq}`eq:commonA`变为
130
130
131
131
$$
132
132
\hat A = X' (X^\top X)^{-1} X^\top
133
133
$$ (eq:hatAversion0)
134
134
135
- 请比较公式 {eq}`eq:Ahatform101`和{eq}`eq:hatAversion0`中的 $\hat A$。
135
+ 请比较 {eq}`eq:Ahatform101`和{eq}`eq:hatAversion0`中 $\hat A$的表达式 。
136
136
137
137
这里我们特别关注公式{eq}`eq:hatAversion0`。
138
138
139
- $\hat A$的第$i$行是一个$m \times 1$向量,包含了 $X_{i,t+1}$对$X_{j,t}, j = 1, \ldots, m$回归的系数。
139
+ $\hat A$的第$i$行是一个$m \times 1$的向量,其中包含了 $X_{i,t+1}$对$X_{j,t}, j = 1, \ldots, m$回归的系数。
140
140
141
141
如果我们使用公式{eq}`eq:hatAversion0`来计算$\hat A X$,我们发现
142
142
143
143
$$
144
144
\hat A X = X'
145
145
$$
146
146
147
- 因此回归方程**完美拟合 **。
147
+ 因此回归方程**完全拟合 **。
148
148
149
- 这是**欠定最小二乘**模型中的典型结果 。
149
+ 这是**欠定最小二乘**模型中典型的结果 。
150
150
151
- 重申一下,在 **高瘦**情况下(在 {doc}`奇异值分解<svd_intro>`中描述),即观测数量 $n$相对于向量$X_t$中出现的属性数量 $m$较小时,我们想要拟合方程{eq}`eq:VARfirstorder`。
151
+ 再次重申, **高瘦**情况(见 {doc}`奇异值分解<svd_intro>`)指观测的数量 $n$相对于向量$X_t$属性的数量 $m$较小时,我们想要拟合方程{eq}`eq:VARfirstorder`。
152
152
153
153
我们面临着最小二乘估计量是欠定的,且回归方程完美拟合的事实。
154
154
155
- 要继续,我们需要高效地计算伪逆 $X^+$。
155
+ 接下来,我们想要更加高效地计算广义逆矩阵 $X^+$。
156
156
157
- 伪逆 $X^+$将是我们$A$估计量的一个组成部分。
157
+ 广义逆矩阵 $X^+$将是我们$A$估计量的一个组成部分。
158
158
159
- 作为我们对 $A$的估计量$\hat A$,我们想要形成一个$m \times m$矩阵,它解决最小二乘最佳拟合问题
159
+ 作为对 $A$的估计量$\hat A$,我们想要形成一个$m \times m$的矩阵,来解决最小二乘最佳拟合问题
160
160
161
161
$$
162
162
\hat A = \textrm{argmin}_ {\check A} || X' - \check A X ||_ F
171
171
||A||_ F = \sqrt{ \sum_ {i=1}^m \sum_ {j=1}^m |A_ {ij}|^2 }
172
172
$$
173
173
174
- 方程{eq}`eq:ALSeqn`右侧的最小化解为
174
+ 方程{eq}`eq:ALSeqn`右侧的最小值解为
175
175
176
176
$$
177
177
\hat A = X' X^{+}
178
178
$$ (eq:hatAform)
179
179
180
- 其中(可能巨大的 )$ n \times m $ 矩阵 $ X^{+} = (X^\top X)^{-1} X^\top $ 再次是 $ X $ 的伪逆 。
180
+ 其中(可能是巨大的 )$ n \times m $ 的矩阵 $ X^{+} = (X^\top X)^{-1} X^\top $ 同样是 $ X $ 的广义逆矩阵 。
181
181
182
- 对于我们感兴趣的某些情况 ,$X^\top X $ 可能接近奇异,这种情况会使某些数值算法变得不准确。
182
+ 对于我们感兴趣的一些情况 ,$X^\top X $ 可能接近奇异,这种情况会使某些数值算法变得不准确。
183
183
184
184
为了应对这种可能性,我们将使用高效的算法来构建公式{eq}`eq:hatAversion0`中 $\hat A$ 的**降秩近似**。
185
185
186
- 这种对我们的向量自回归的近似将不再完全拟合 。
186
+ 这种近似方式,让我们的向量自回归估计不再完全拟合 。
187
187
188
188
$ \hat A $ 的第 $ i $ 行是一个 $ m \times 1 $ 的回归系数向量,表示 $ X_{i,t+1} $ 对 $ X_{j,t}, j = 1, \ldots, m $ 的回归。
189
189
190
- 计算伪逆 $X^+$的一个有效方法是从奇异值分解开始
190
+ 一种高效计算广义逆矩阵 $X^+$的方式是从奇异值分解开始
191
191
192
192
$$
193
193
X = U \Sigma V^\top
194
194
$$ (eq:SVDDMD)
195
195
196
- 这里我们需要提醒自己,对于**简化的**SVD ,$X$是一个$m \times n$的数据矩阵,$U$是一个$m \times p$的矩阵,$\Sigma$是一个$p \times p$的矩阵,而$V$是一个$n \times p$的矩阵。
196
+ 这里我们提醒自己,这个**简化**SVD中 ,$X$是一个$m \times n$的数据矩阵,$U$是一个$m \times p$的矩阵,$\Sigma$是一个$p \times p$的矩阵,而$V$是一个$n \times p$的矩阵。
197
197
198
- 通过认识到以下一系列等式,我们可以有效地构造相关的伪逆 $X^+$。
198
+ 通过以下一系列等式,我们可以有效地构造相关的广义逆矩阵 $X^+$。
199
199
200
200
$$
201
201
\begin{aligned}
@@ -207,9 +207,9 @@ X^{+} & = (X^\top X)^{-1} X^\top \\
207
207
\end{aligned}
208
208
$$ (eq:efficientpseudoinverse)
209
209
210
- (由于我们处在 $m > > n$的情况下 ,在简化SVD中$V^\top V = I_{p \times p}$,因此我们可以将前面的等式序列同时用于简化SVD和完整SVD 。)
210
+ (由于 $m > > n$,在简化SVD中$V^\top V = I_{p \times p}$,因此我们可以将前面的一系列等式同时用于简化SVD和完整SVD 。)
211
211
212
- 因此,我们将使用方程{eq}`eq:SVDDMD`中$X$的奇异值分解来构造$X$的伪逆 $X^+$,计算方法为:
212
+ 因此,我们将使用方程{eq}`eq:SVDDMD`中$X$的奇异值分解来构造$X$的广义逆矩阵 $X^+$,计算方法为:
213
213
214
214
$$
215
215
X^{+} = V \Sigma^{-1} U^\top
@@ -219,37 +219,37 @@ $$ (eq:Xplusformula)
219
219
220
220
我们可以将公式{eq}`eq:Xplusformula`与公式{eq}`eq:hatAform`结合使用来计算回归系数矩阵$\hat A$。
221
221
222
- 因此,我们对$m \times m$系数矩阵 $A$的估计量$\hat A = X' X^+$为:
222
+ 因此,我们对$m \times m$的系数矩阵 $A$的估计量$\hat A = X' X^+$为:
223
223
224
224
$$
225
225
\hat A = X' V \Sigma^{-1} U^\top
226
226
$$ (eq:AhatSVDformula)
227
227
228
228
## 动态模态分解(DMD)
229
229
230
- 我们转向与 **动态模态分解**相关的$m >>n$**高瘦型**情况。
230
+ 我们继续关注与 **动态模态分解**相关的$m >>n$**高瘦型**情况。
231
231
232
- 这里,一个 $m \times n+1$数据矩阵 $\tilde X$包含了比时间周期 $n+1$多得多的属性(或变量)$m$。
232
+ 假设有一个 $m \times n+1$的数据矩阵 $\tilde X$,它包含了比时间周期 $n+1$多得多的属性(或变量)$m$。
233
233
234
- 动态模态分解由{cite}`schmid2010`引入 ,
234
+ 动态模态分解由{cite}`schmid2010`首次提出 ,
235
235
236
- 你可以阅读有关动态模态分解的内容 {cite}`DMD_book` 和 {cite}`Brunton_Kutz_2019`(第7.2节)。
236
+ 你可以在 {cite}`DMD_book` 和 {cite}`Brunton_Kutz_2019`(第7.2节)中阅读有关动态模态分解的内容 。
237
237
238
- **动态模态分解**(DMD)计算公式 {eq}`eq:AhatSVDformula`中描述的最小二乘回归系数 $\hat A$的秩为$r < p$的近似。
238
+ 如公式 {eq}`eq:AhatSVDformula`所描述的,**动态模态分解**(DMD)的最小二乘回归系数 $\hat A$的秩为$r < p$的近似。<!-- 这句话没太想明白怎么翻译通顺 -->
239
239
240
- 我们将逐步构建一个在应用中有用的表述 。
240
+ 我们将逐步构建一种适合应用的表述 。
241
241
242
- 我们将通过描述一阶线性动态系统 (即我们的向量自回归)的三种替代表示来实现这一点 。
242
+ 我们将通过三种不同的表示方式来描述一阶线性动态系统 (即我们的向量自回归),从而实现这一点 。
243
243
244
- **三种表示的指南:**在实践中,我们主要关注表示3。
244
+ **三种表示的指南:** 在实践中,我们主要关注表示3。
245
245
246
- 我们使用前两种表示来呈现一些有用的中间步骤,这些步骤有助于我们理解表示3的内部原理 。
246
+ 我们使用前两种表示来呈现一些有用的中间推导,这些步骤有助于我们理解表示3的内在原理 。
247
247
248
248
在应用中,我们将只使用**DMD模态**的一小部分子集来近似动态。
249
249
250
250
我们使用这样一个小的DMD模态子集来构建对$A$的降秩近似。
251
251
252
- 为此,我们需要使用与表示法3相关的**简化**SVD,而不是与表示法1和2相关的**完全 **SVD。
252
+ 为此,我们需要使用与表示法3相关的**简化**SVD,而不是与表示法1和2相关的**完整 **SVD。
253
253
254
254
**给急躁读者的指南:** 在我们的应用中,我们将使用表示法3。
255
255
@@ -259,9 +259,9 @@ $$ (eq:AhatSVDformula)
259
259
260
260
## 表示法1
261
261
262
- 在这个表示法中,我们将使用$X$的**完全 **SVD。
262
+ 在这个表示法中,我们将使用$X$的**完整 **SVD。
263
263
264
- 我们使用$U$的$m$个**列**,因此也就是 $U^\top$的$m$个**行**,来定义一个$m \times 1$向量 $\tilde b_t$:
264
+ 我们使用$U$的$m$个**列**,即 $U^\top$的$m$个**行**,来定义一个$m \times 1$的向量 $\tilde b_t$:
265
265
266
266
$$
267
267
\tilde b_t = U^\top X_t .
@@ -277,33 +277,33 @@ $$ (eq:Xdecoder)
277
277
278
278
由于我们现在使用的是**完全**SVD,$U U^\top = I_{m \times m}$。
279
279
280
- 因此从方程{eq}`eq:tildeXdef2`可以得出,我们可以从 $\tilde b_t$重构 $X_t$。
280
+ 因此从方程{eq}`eq:tildeXdef2`可以得出,我们可以用 $\tilde b_t$重新构造 $X_t$。
281
281
282
282
特别地,
283
283
284
- * 方程 {eq}`eq:tildeXdef2` 作为一个**编码器**,将 $m \times 1$ 向量 $X_t$ **旋转**成一个 $m \times 1$ 向量 $\tilde b_t$
284
+ * 方程 {eq}`eq:tildeXdef2` 作为一个**编码器**,将 $m \times 1$ 向量 $X_t$ **旋转**成一个 $m \times 1$ 的向量 $\tilde b_t$
285
285
286
- * 方程 {eq}`eq:Xdecoder` 作为一个**解码器**,通过旋转 $m \times 1$ 向量 $\tilde b_t$ 来**重构 ** $m \times 1$ 向量 $X_t$
286
+ * 方程 {eq}`eq:Xdecoder` 作为一个**解码器**,通过旋转 $m \times 1$ 向量 $\tilde b_t$ 来**重新构造 ** $m \times 1$ 的向量 $X_t$
287
287
288
- 为 $m \times 1$ 基向量 $\tilde b_t$ 定义一个转移矩阵:
288
+ 为 $m \times 1$ 的基向量 $\tilde b_t$ 定义一个转移矩阵:
289
289
290
290
$$
291
291
\tilde A = U^\top \hat A U
292
292
$$ (eq:Atilde0)
293
293
294
- 我们可以通过以下方式恢复 $\hat A$:
294
+ 我们可以通过以下方式表示 $\hat A$:
295
295
296
296
$$
297
297
\hat A = U \tilde A U^\top
298
298
$$
299
299
300
- $m \times 1$ 基向量 $\tilde b_t$ 的动态由以下方程支配:
300
+ $m \times 1$ 的基向量 $\tilde b_t$ 的动态由以下方程支配:
301
301
302
302
$$
303
303
\tilde b_ {t+1} = \tilde A \tilde b_t
304
304
$$
305
305
306
- 为了构建基于 $X_1$ 条件的 $X_t$ 未来值的预测 $\overline X_t$,我们可以对这个方程的两边应用解码器(即旋转器),从而推导出:
306
+ 为了构建基于 $X_1$ 的 $X_t$ 未来值的预测 $\overline X_t$,我们可以对这个方程的两边应用解码器(即旋转器),从而推导出:
307
307
308
308
$$
309
309
\overline X_ {t+1} = U \tilde A^t U^\top X_1
@@ -758,4 +758,3 @@ $$ (eq:checkXevoln2)
758
758
你可以在这里找到DMD的Python实现:
759
759
760
760
https://mathlab.sissa.it/pydmd
761
-
0 commit comments