@@ -4,54 +4,54 @@ jupytext:
44 extension : .md
55 format_name : myst
66 format_version : 0.13
7- jupytext_version : 1.10.3
7+ jupytext_version : 1.16.7
88kernelspec :
9- display_name : Python 3
9+ display_name : Python 3 (ipykernel)
1010 language : python
1111 name : python3
1212---
1313
1414# 向量自回归和动态模态分解
1515
16- 本讲座应用我们在 {doc}` 奇异值分解 <svd_intro> ` 讲座中学到的计算方法来研究 :
16+ 本节讲座中,我们将应用在 {doc}` 奇异值分解 <svd_intro> ` 中学到的计算方法来研究 :
1717
1818* 一阶向量自回归(VARs)
1919* 动态模态分解(DMDs)
20- * DMDs和一阶VARs之间的联系
20+ * 一阶向量自回归和动态模态分解之间的联系
2121
2222## 一阶向量自回归
2323
24- 我们要拟合一个 ** 一阶向量自回归**
24+ 我们想要拟合一个 ** 一阶向量自回归**
2525
2626$$
2727X_{t+1} = A X_t + C \epsilon_{t+1}, \quad \epsilon_{t+1} \perp X_t
2828$$ (eq:VARfirstorder)
2929
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 $ 是 :
3131
3232$$
3333X_t = \begin{bmatrix} X_ {1,t} & X_ {2,t} & \cdots & X_ {m,t} \end{bmatrix}^\top
3434$$ (eq:Xvector)
3535
36- 其中 $\cdot ^\top $ 再次表示复数转置, $ X_{i,t} $ 是时间 $ t $ 的变量 $ i $。
36+ 其中 $\cdot ^\top $ 表示复数转置<!-- 原文是“complex transpose”,似乎不是惯常表达,这里是想要表达“共轭转置”嘛?需不需要进一步解释 -->, $ X_{i,t} $ 是时间 $ t $ 时的变量 $ i $。
3737
3838我们想要拟合方程 {eq}`eq:VARfirstorder`。
3939
40- 我们的数据组织在一个 $ m \times (n+1) $ 矩阵 $ \tilde X $ 中
40+ 我们的数据则组织在一个 $ m \times (n+1) $ 的矩阵 $ \tilde X $ 中
4141
4242$$
4343\tilde X = \begin{bmatrix} X_1 \mid X_2 \mid \cdots \mid X_n \mid X_ {n+1} \end{bmatrix}
4444$$
4545
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` 给出。
4747
4848因此,我们想要估计一个系统 {eq}`eq:VARfirstorder`,它由 $ m $ 个最小二乘回归组成,将**所有变量**对**所有变量**的一阶滞后值进行回归。
4949
5050{eq}`eq:VARfirstorder` 的第 $i$ 个方程是将 $X_{i,t+1}$ 对向量 $X_t$ 进行回归。
5151
5252我们按如下步骤进行。
5353
54- 从 $ \tilde X $ 中,我们形成两个 $m \times n$ 矩阵
54+ 从 $ \tilde X $ 中,我们构造以下两个 $m \times n$ 矩阵
5555
5656$$
5757X = \begin{bmatrix} X_1 \mid X_2 \mid \cdots \mid X_ {n}\end{bmatrix}
6363X' = \begin{bmatrix} X_2 \mid X_3 \mid \cdots \mid X_ {n+1}\end{bmatrix}
6464$$
6565
66- 这里的 $ ' $ 是矩阵 $ X' $ 名称的一部分 ,并不表示矩阵转置。
66+ 这里的 $ ' $ 是矩阵 $ X' $ 的名称的一部分 ,并不表示矩阵转置。
6767
6868我们使用 $\cdot^\top $ 来表示矩阵转置或其在复矩阵中的扩展。
6969
70- 在构造 $ X $ 和 $ X' $ 时,我们在每种情况下都从 $ \tilde X $ 中删除了一列,对于 $ X $ 是删除最后一列,对于 $ X' $ 是删除第一列 。
70+ 在构造 $ X $ 和 $ X' $ 的过程中,我们都从 $ \tilde X $ 中删除了某一列, $ X $ 是删除最后一列,$ X' $ 则是删除第一列 。
7171
72- 显然,$ X $ 和 $ X' $ 都是 $ m \times n $ 矩阵 。
72+ 显然,$ X $ 和 $ X' $ 都是 $ m \times n $ 的矩阵 。
7373
7474我们用 $ p \leq \min(m, n) $ 表示 $ X $ 的秩。
7575
7676我们感兴趣的两种情况是:
7777
78- * $ n > > m $,即时间序列观测值数量 $n$ 远大于变量数量 $m$
79- * $ m > > n $,即变量数量 $m$ 远大于时间序列观测值数量 $n$
78+ * $ n > > m $,即时间序列观测值的数量 $n$ 远大于变量的数量 $m$
79+ * $ m > > n $,即变量的数量 $m$ 远大于时间序列观测值的数量 $n$
8080
81- 在包含这两种特殊情况的一般层面上,有一个共同的公式描述了 $A$ 的最小二乘估计量 $\hat A$。
81+ 在考虑了这两种特殊情况的一般情况中,有一个通用的公式描述了 $A$ 的最小二乘估计量 $\hat A$。
8282
8383但重要的细节有所不同。
8484
85- 这个共同的公式是 :
85+ 这个通用的公式是 :
8686
8787$$
8888\hat A = X' X^+
8989$$ (eq:commonA)
9090
91- 其中 $X^+$ 是 $X$ 的伪逆 。
91+ 其中 $X^+$ 是 $X$ 的广义逆矩阵,或伪逆 。
9292
93- 关于**Moore-Penrose伪逆 **的详细信息,请参见[Moore-Penrose伪逆 ](https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse)
93+ 关于**穆尔-彭罗斯广义逆矩阵 **的详细信息,请参见[穆尔-彭罗斯广义逆矩阵 ](https://baike.baidu.com/item/穆尔-彭罗斯广义逆矩阵/22770999?fr=aladdin)<!-- 中文语境下使用广义逆矩阵的语料远多于伪逆,所以后文统一使用广义逆矩阵 -->
9494
95- 伪逆的适用公式在我们的两种情况下有所不同 。
95+ 在我们的两种情况下,广义逆矩阵适用的公式有所不同 。
9696
9797**短胖情况:**
9898
99- 当$n >> m$时,即时间序列观测值 $n$远多于变量 $m$,且当$X$具有线性独立的**行**时,$X X^\top$有逆矩阵,伪逆 $X^+$为
99+ 当$n >> m$时,即时间序列的观测值 $n$远多于变量的数量 $m$,且当$X$具有线性独立的**行**时,$X X^\top$的逆矩阵存在,且广义逆矩阵 $X^+$为
100100
101101$$
102102X^+ = X^\top (X X^\top )^{-1}
103103$$
104104
105- 这里$X^+$是一个**右逆**,满足 $X X^+ = I_{m \times m}$。
105+ 这里$X^+$是一个满足 $X X^+ = I_{m \times m}$的**右逆**, 。
106106
107- 在这种情况下,我们用于估计总体回归系数矩阵$A$的最小二乘估计量的公式{eq}`eq:commonA`变为
107+ 在这种情况下,我们用于估计总体回归系数矩阵$A$的最小二乘估计量的公式{eq}`eq:commonA`就变为
108108
109109$$
110110\hat A = X' X^\top (X X^\top )^{-1}
111111$$ (eq:Ahatform101)
112112
113- 这个最小二乘回归系数的公式在计量经济学中被广泛使用 。
113+ 这个计算最小二乘回归系数的公式在计量经济学中被广泛地使用 。
114114
115- 它被用于估计向量自回归 。
115+ 它也被用于估计向量自回归 。
116116
117- 公式{eq}`eq:Ahatform101`右边与 $X_{t+1}$和$X_t$的经验交叉二阶矩矩阵成正比,并乘以 $X_t$二阶矩矩阵的逆 。
117+ 公式{eq}`eq:Ahatform101`的右边,正比于 $X_{t+1}$和$X_t$的经验交叉二阶矩矩,乘以 $X_t$二阶矩阵的逆矩阵 。
118118
119119**高瘦型情况:**
120120
121- 当$m > > n$时,即属性数量$m$远大于时间序列观测值 $n$,且当$X$的**列**线性独立时,$X^\top X$有逆矩阵,伪逆 $X^+$为
121+ 当$m > > n$时,即属性数量$m$远大于时间序列的观测值 $n$,且当$X$的**列**线性独立时,$X^\top X$的逆矩阵存在,且广义逆矩阵 $X^+$为
122122
123123$$
124124X^+ = (X^\top X)^{-1} X^\top
125125$$
126126
127- 这里$X^+$是一个**左逆**,满足 $X^+ X = I_{n \times n}$。
127+ 这里$X^+$是一个满足 $X^+ X = I_{n \times n}$的**左逆**, 。
128128
129129在这种情况下,我们用于估计$A$的最小二乘估计公式{eq}`eq:commonA`变为
130130
131131$$
132132\hat A = X' (X^\top X)^{-1} X^\top
133133$$ (eq:hatAversion0)
134134
135- 请比较公式 {eq}`eq:Ahatform101`和{eq}`eq:hatAversion0`中的 $\hat A$。
135+ 请比较 {eq}`eq:Ahatform101`和{eq}`eq:hatAversion0`中 $\hat A$的表达式 。
136136
137137这里我们特别关注公式{eq}`eq:hatAversion0`。
138138
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$回归的系数。
140140
141141如果我们使用公式{eq}`eq:hatAversion0`来计算$\hat A X$,我们发现
142142
143143$$
144144\hat A X = X'
145145$$
146146
147- 因此回归方程**完美拟合 **。
147+ 因此回归方程**完全拟合 **。
148148
149- 这是**欠定最小二乘**模型中的典型结果 。
149+ 这是**欠定最小二乘**模型中典型的结果 。
150150
151- 重申一下,在 **高瘦**情况下(在 {doc}`奇异值分解<svd_intro>`中描述),即观测数量 $n$相对于向量$X_t$中出现的属性数量 $m$较小时,我们想要拟合方程{eq}`eq:VARfirstorder`。
151+ 再次重申, **高瘦**情况(见 {doc}`奇异值分解<svd_intro>`)指观测的数量 $n$相对于向量$X_t$属性的数量 $m$较小时,我们想要拟合方程{eq}`eq:VARfirstorder`。
152152
153153我们面临着最小二乘估计量是欠定的,且回归方程完美拟合的事实。
154154
155- 要继续,我们需要高效地计算伪逆 $X^+$。
155+ 接下来,我们想要更加高效地计算广义逆矩阵 $X^+$。
156156
157- 伪逆 $X^+$将是我们$A$估计量的一个组成部分。
157+ 广义逆矩阵 $X^+$将是我们$A$估计量的一个组成部分。
158158
159- 作为我们对 $A$的估计量$\hat A$,我们想要形成一个$m \times m$矩阵,它解决最小二乘最佳拟合问题
159+ 作为对 $A$的估计量$\hat A$,我们想要形成一个$m \times m$的矩阵,来解决最小二乘最佳拟合问题
160160
161161$$
162162\hat A = \textrm{argmin}_ {\check A} || X' - \check A X ||_ F
171171 ||A||_ F = \sqrt{ \sum_ {i=1}^m \sum_ {j=1}^m |A_ {ij}|^2 }
172172$$
173173
174- 方程{eq}`eq:ALSeqn`右侧的最小化解为
174+ 方程{eq}`eq:ALSeqn`右侧的最小值解为
175175
176176$$
177177\hat A = X' X^{+}
178178$$ (eq:hatAform)
179179
180- 其中(可能巨大的 )$ n \times m $ 矩阵 $ X^{+} = (X^\top X)^{-1} X^\top $ 再次是 $ X $ 的伪逆 。
180+ 其中(可能是巨大的 )$ n \times m $ 的矩阵 $ X^{+} = (X^\top X)^{-1} X^\top $ 同样是 $ X $ 的广义逆矩阵 。
181181
182- 对于我们感兴趣的某些情况 ,$X^\top X $ 可能接近奇异,这种情况会使某些数值算法变得不准确。
182+ 对于我们感兴趣的一些情况 ,$X^\top X $ 可能接近奇异,这种情况会使某些数值算法变得不准确。
183183
184184为了应对这种可能性,我们将使用高效的算法来构建公式{eq}`eq:hatAversion0`中 $\hat A$ 的**降秩近似**。
185185
186- 这种对我们的向量自回归的近似将不再完全拟合 。
186+ 这种近似方式,让我们的向量自回归估计不再完全拟合 。
187187
188188$ \hat A $ 的第 $ i $ 行是一个 $ m \times 1 $ 的回归系数向量,表示 $ X_{i,t+1} $ 对 $ X_{j,t}, j = 1, \ldots, m $ 的回归。
189189
190- 计算伪逆 $X^+$的一个有效方法是从奇异值分解开始
190+ 一种高效计算广义逆矩阵 $X^+$的方式是从奇异值分解开始
191191
192192$$
193193X = U \Sigma V^\top
194194$$ (eq:SVDDMD)
195195
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$的矩阵。
197197
198- 通过认识到以下一系列等式,我们可以有效地构造相关的伪逆 $X^+$。
198+ 通过以下一系列等式,我们可以有效地构造相关的广义逆矩阵 $X^+$。
199199
200200$$
201201\begin{aligned}
@@ -207,9 +207,9 @@ X^{+} & = (X^\top X)^{-1} X^\top \\
207207\end{aligned}
208208$$ (eq:efficientpseudoinverse)
209209
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 。)
211211
212- 因此,我们将使用方程{eq}`eq:SVDDMD`中$X$的奇异值分解来构造$X$的伪逆 $X^+$,计算方法为:
212+ 因此,我们将使用方程{eq}`eq:SVDDMD`中$X$的奇异值分解来构造$X$的广义逆矩阵 $X^+$,计算方法为:
213213
214214$$
215215X^{+} = V \Sigma^{-1} U^\top
@@ -219,37 +219,37 @@ $$ (eq:Xplusformula)
219219
220220我们可以将公式{eq}`eq:Xplusformula`与公式{eq}`eq:hatAform`结合使用来计算回归系数矩阵$\hat A$。
221221
222- 因此,我们对$m \times m$系数矩阵 $A$的估计量$\hat A = X' X^+$为:
222+ 因此,我们对$m \times m$的系数矩阵 $A$的估计量$\hat A = X' X^+$为:
223223
224224$$
225225\hat A = X' V \Sigma^{-1} U^\top
226226$$ (eq:AhatSVDformula)
227227
228228## 动态模态分解(DMD)
229229
230- 我们转向与 **动态模态分解**相关的$m >>n$**高瘦型**情况。
230+ 我们继续关注与 **动态模态分解**相关的$m >>n$**高瘦型**情况。
231231
232- 这里,一个 $m \times n+1$数据矩阵 $\tilde X$包含了比时间周期 $n+1$多得多的属性(或变量)$m$。
232+ 假设有一个 $m \times n+1$的数据矩阵 $\tilde X$,它包含了比时间周期 $n+1$多得多的属性(或变量)$m$。
233233
234- 动态模态分解由{cite}`schmid2010`引入 ,
234+ 动态模态分解由{cite}`schmid2010`首次提出 ,
235235
236- 你可以阅读有关动态模态分解的内容 {cite}`DMD_book` 和 {cite}`Brunton_Kutz_2019`(第7.2节)。
236+ 你可以在 {cite}`DMD_book` 和 {cite}`Brunton_Kutz_2019`(第7.2节)中阅读有关动态模态分解的内容 。
237237
238- **动态模态分解**(DMD)计算公式 {eq}`eq:AhatSVDformula`中描述的最小二乘回归系数 $\hat A$的秩为$r < p$的近似。
238+ 如公式 {eq}`eq:AhatSVDformula`所描述的,**动态模态分解**(DMD)的最小二乘回归系数 $\hat A$的秩为$r < p$的近似。<!-- 这句话没太想明白怎么翻译通顺 -->
239239
240- 我们将逐步构建一个在应用中有用的表述 。
240+ 我们将逐步构建一种适合应用的表述 。
241241
242- 我们将通过描述一阶线性动态系统 (即我们的向量自回归)的三种替代表示来实现这一点 。
242+ 我们将通过三种不同的表示方式来描述一阶线性动态系统 (即我们的向量自回归),从而实现这一点 。
243243
244- **三种表示的指南:**在实践中,我们主要关注表示3。
244+ **三种表示的指南:** 在实践中,我们主要关注表示3。
245245
246- 我们使用前两种表示来呈现一些有用的中间步骤,这些步骤有助于我们理解表示3的内部原理 。
246+ 我们使用前两种表示来呈现一些有用的中间推导,这些步骤有助于我们理解表示3的内在原理 。
247247
248248在应用中,我们将只使用**DMD模态**的一小部分子集来近似动态。
249249
250250我们使用这样一个小的DMD模态子集来构建对$A$的降秩近似。
251251
252- 为此,我们需要使用与表示法3相关的**简化**SVD,而不是与表示法1和2相关的**完全 **SVD。
252+ 为此,我们需要使用与表示法3相关的**简化**SVD,而不是与表示法1和2相关的**完整 **SVD。
253253
254254**给急躁读者的指南:** 在我们的应用中,我们将使用表示法3。
255255
@@ -259,9 +259,9 @@ $$ (eq:AhatSVDformula)
259259
260260## 表示法1
261261
262- 在这个表示法中,我们将使用$X$的**完全 **SVD。
262+ 在这个表示法中,我们将使用$X$的**完整 **SVD。
263263
264- 我们使用$U$的$m$个**列**,因此也就是 $U^\top$的$m$个**行**,来定义一个$m \times 1$向量 $\tilde b_t$:
264+ 我们使用$U$的$m$个**列**,即 $U^\top$的$m$个**行**,来定义一个$m \times 1$的向量 $\tilde b_t$:
265265
266266$$
267267\tilde b_t = U^\top X_t .
@@ -277,33 +277,33 @@ $$ (eq:Xdecoder)
277277
278278由于我们现在使用的是**完全**SVD,$U U^\top = I_{m \times m}$。
279279
280- 因此从方程{eq}`eq:tildeXdef2`可以得出,我们可以从 $\tilde b_t$重构 $X_t$。
280+ 因此从方程{eq}`eq:tildeXdef2`可以得出,我们可以用 $\tilde b_t$重新构造 $X_t$。
281281
282282特别地,
283283
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$
285285
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$
287287
288- 为 $m \times 1$ 基向量 $\tilde b_t$ 定义一个转移矩阵:
288+ 为 $m \times 1$ 的基向量 $\tilde b_t$ 定义一个转移矩阵:
289289
290290$$
291291\tilde A = U^\top \hat A U
292292$$ (eq:Atilde0)
293293
294- 我们可以通过以下方式恢复 $\hat A$:
294+ 我们可以通过以下方式表示 $\hat A$:
295295
296296$$
297297\hat A = U \tilde A U^\top
298298$$
299299
300- $m \times 1$ 基向量 $\tilde b_t$ 的动态由以下方程支配:
300+ $m \times 1$ 的基向量 $\tilde b_t$ 的动态由以下方程支配:
301301
302302$$
303303\tilde b_ {t+1} = \tilde A \tilde b_t
304304$$
305305
306- 为了构建基于 $X_1$ 条件的 $X_t$ 未来值的预测 $\overline X_t$,我们可以对这个方程的两边应用解码器(即旋转器),从而推导出:
306+ 为了构建基于 $X_1$ 的 $X_t$ 未来值的预测 $\overline X_t$,我们可以对这个方程的两边应用解码器(即旋转器),从而推导出:
307307
308308$$
309309\overline X_ {t+1} = U \tilde A^t U^\top X_1
@@ -758,4 +758,3 @@ $$ (eq:checkXevoln2)
758758你可以在这里找到DMD的Python实现:
759759
760760https://mathlab.sissa.it/pydmd
761-
0 commit comments