多维奇异谱分析(Multivariate Singular Spectrum Analysis,MSSA)
在实际运用中,通常需要对多个时间序列进行分析,而每个时间序列都有内部结构,且序列之间也会存在一定的依赖关系。因此,基本的单变量奇异谱分析(SSA)可以扩展到多元情况,也就是多维奇异谱分析(MSSA)。
轨迹矩阵是求解SSA的主要工具,对于多变量情况,轨迹矩阵可以有不同的定义方式。主要可以分为水平和垂直两种方式。而每一种定义方式下,又可以有recurrent和vector两种预测方法,如下图所示:
下面就主要梳理一下MSSA的内容。和SSA一样,MSSA也由两个互补阶段组成:分解和重建。第一阶段对序列进行分解,第二阶段对无噪声序列进行重构。
1. HMSSA
1. 1 分解
1.1.1 第一步 嵌入
考虑M个时间序列,先根据SSA的方法,生成第 i ( i = 1 , . . . , M ) i(i=1,...,M) i(i=1,...,M)个序列的轨迹矩阵 X ( i ) X^{(i)} X(i),而后,水平地将这些轨迹矩阵拼接在一起:
X = [ X ( 1 ) : X ( 2 ) : . . . : X ( M ) ] X=[X^{(1)}:X^{(2)}:...:X^{(M)}] X=[X(1):X(2):...:X(M)]
要顺利的实现拼接,假设第 i i i个序列的轨迹矩阵 X ( i ) X^{(i)} X(i)是 L i ∗ K i L_i*K_i Li∗Ki的矩阵,其中, L i ( 2 ≤ L i ≤ N i − 1 ) L_i(2\le L_i\le N_i-1) Li(2≤Li≤Ni−1)是每个长度为 N i Ni Ni的时间序列的窗口长度, K i = N i − L i + 1 , i = 1 , . . . , M K_i=N_i-L_i+1, i=1,...,M Ki=Ni−Li+1,i=1,...,M,则有 L 1 = . . . = L M = L , L_1=...=L_M=L, L1=...=LM=L,而 K i , N i K_i,N_i Ki,Ni可以不同。
1.1.2 第二步 SVD
这一步,对前面得到的
X
H
X_H
XH进行SVD操作,用
λ
H
1
,
.
.
.
,
λ
H
L
\lambda_{H_1},...,\lambda_{H_L}
λH1,...,λHL表示
X
H
X
H
T
X_HX_H^T
XHXHT的特征值,同样,有
λ
H
1
≥
,
.
.
.
,
≥
λ
H
L
≥
0
\lambda_{H_1} \ge ,...,\ge\lambda_{H_L}\ge0
λH1≥,...,≥λHL≥0,
U
H
1
,
.
.
.
,
U
H
L
U_{H_1},...,U_{H_L}
UH1,...,UHL则表示对应的特征向量。
对
X
H
X_H
XH进行SVD的过程可以表示为:
X
H
=
X
H
1
+
.
.
.
+
X
H
L
X_H=X_{H_1}+...+X_{H_L}
XH=XH1+...+XHL,其中
因此,
X
H
X
H
T
X_HX_H^T
XHXHT的结构等价于:
1.2 重构
1.2.1 第三步 分组
与SSA类似,这个步骤相当于分解矩阵 X H 1 , . . . , X H L X_{H_1},...,X_{H_L} XH1,...,XHL分成几个不相交的组,并对每组中的矩阵求和。下标集合 1 , … , L {1,…,L} 1,…,L被划分成不相交的子集 I 1 , … … , I m I_1,……,I_m I1,……,Im,与 X H = X I 1 + . . . + X I m X_H=X_{I_1}+...+X_{I_m} XH=XI1+...+XIm相对应。
1.2.2 第四步 对角平均
对角平均的目的是将重构的hankel矩阵 X I j X_{I_j} XIj变换为一维的序列。对于每个重构的轨迹矩阵而言,这一步与SSA相同。
1.3 预测
1.3.1 recurrent forecast
-
对于固定的 L L L,为每个序列 Y N i ( i ) ( i = 1 , . . . , M ) Y^{(i)}_{N_i}(i=1,...,M) YNi(i)(i=1,...,M)分别构造轨迹矩阵 X ( i ) = [ X 1 ( i ) , . . . , X K ( i ) ] = ( x m n ) m , n = 1 L , K i X^{(i)}= [X^{(i)}_{1},...,X^{(i)}_{K}]=(x_{mn})^{L,K_i}_{m,n=1} X(i)=[X1(i),...,XK(i)]=(xmn)m,n=1L,Ki
-
构造块轨迹矩阵 X V X_V XV如下:
-
定义 U V j = ( U j ( 1 ) , … , U j ( M ) ) T , U_{V_j}=(U_{j}^{(1)},…,U_{j}^{(M)})^T, UVj=(Uj(1),…,Uj(M))T, 作为一个 X V X V T X_VX_V^T XVXVT的第 j j j个特征向量。其中 U j ( i ) U_{j}^{(i)} Uj(i)的长度为L,对应于序列 Y N i ( i ) ( i = 1 , . . . , M ) Y^{(i)}_{N_i}(i=1,...,M) YNi(i)(i=1,...,M)
-
定义 X ^ V = [ X ^ 1 : . . . : X ^ K ] = Σ i = 1 r U V i U V i T X V \hat{X}_V=[\hat{X}_1:...:\hat{X}_K]=\Sigma_{i=1}^{r}U_{V_i}U^T_{V_i}X_V X^V=[X^1:...:X^K]=Σi=1rUViUViTXV,即
-
考虑矩阵
作为从上一步中获得的矩阵 X ^ ( i ) \hat{X}^{(i)} X^(i)汉克尔化过程的结果 -
令 U j ( i ) ∇ U^{(i)\nabla}_{j} Uj(i)∇是特征向量 U j ( i ) U_{j}^{(i)} Uj(i)的前 L − 1 L-1 L−1个元素构成的向量。 π j ( i ) \pi_{j}^{(i)} πj(i)表示特征向量 U j ( i ) U_{j}^{(i)} Uj(i)的最后一个元素。 ( i = 1 , . . . , M ) (i=1,...,M) (i=1,...,M)
-
选择r个重建阶段的特征三元组用于预测。
-
定义矩阵 U ∇ M = ( U 1 ∇ M , . . . , U r ∇ M ) U^{\nabla M}=(U^{\nabla M}_1,...,U^{\nabla M}_r) U∇M=(U1∇M,...,Ur∇M),其中, U j ∇ M U^{\nabla M}_j Uj∇M为:
-
定义矩阵 W W W:
-
如果矩阵 ( I M × M − W W T ) − 1 (I_{M×M}−WW^T)^{−1} (IM×M−WWT)−1存在,且 r ≤ L s u m − M r≤L_{sum}−M r≤Lsum−M,则存在h步VMSA预测,公式如下:
其中, y ~ j i ( m ) \tilde{y}^{(m)}_{j_i} y~ji(m)是重构序列 m m m的第 j i j_i ji个观察值, m = 1 , . . . , M . m=1,...,M. m=1,...,M.
1.3.2 vector forecast
HMSSA-V的过程非常类似于它的单变量版本SSA-V和HMSSA-R.算法的第一部分与HMSSA-R一样,继续考虑以下矩阵:
- 定义向量
Z
j
(
i
)
,
(
i
=
1
,
.
.
.
M
)
Z_j^{(i)},(i=1,...M)
Zj(i),(i=1,...M)如下:
其中, X ~ j ( i ) \tilde{X}^{(i)}_{j} X~j(i)是分组并保留噪声分量后,第i个序列轨迹矩阵的重构列。 - 通过构造矩阵 Z ( i ) = [ Z 1 ( i ) , . . . , Z k i + h + L − 1 ( i ) ] Z^{(i)}= [Z^{(i)}_1,...,Z^{(i)}_{ k_i+h+L−1}] Z(i)=[Z1(i),...,Zki+h+L−1(i)],并求对角平均,我们可以得到一个新的序列 y ^ 1 ( i ) , . . . , y ^ N i + h ( i ) \hat{y}_1^{(i)},...,\hat{y}_{N_i+h}^{(i)} y^1(i),...,y^Ni+h(i),其中, y ^ N + 1 ( i ) , . . . , y ^ N + h ( i ) \hat{y}_{N+1}^{(i)},...,\hat{y}_{N+h}^{(i)} y^N+1(i),...,y^N+h(i)则是通过HMSSA-V方法获得的 h h h个预测值。
2. VMSSA
2.1 分解
2.1.1 第一步 嵌入
与HMSSA一样,考虑M个时间序列,先根据SSA的方法,生成第
i
(
i
=
1
,
.
.
.
,
M
)
i(i=1,...,M)
i(i=1,...,M)个序列的轨迹矩阵
X
(
i
)
X^{(i)}
X(i)
而后,垂直地将这些轨迹矩阵拼接在一起,得到
X
V
X_V
XV:
要顺利的实现拼接,假设第 i i i个序列的轨迹矩阵 X ( i ) X^{(i)} X(i)是 L i ∗ K i L_i*K_i Li∗Ki的矩阵,其中, L i ( 2 ≤ L i ≤ N i − 1 ) L_i(2\le L_i\le N_i-1) Li(2≤Li≤Ni−1)是每个长度为 N i Ni Ni的时间序列的窗口长度, K i = N i − L i + 1 , i = 1 , . . . , M K_i=N_i-L_i+1, i=1,...,M Ki=Ni−Li+1,i=1,...,M,与HMSSA不同的是,VMSSA要求 K 1 = . . . = K M = K , K_1=...=K_M=K, K1=...=KM=K,而 L i , N i L_i,N_i Li,Ni可以不同。
2.1.2 第二步 SVD
这一步,对前面得到的 X V X_V XV进行SVD操作,用 λ V 1 , . . . , λ V L \lambda_{V_1},...,\lambda_{V_L} λV1,...,λVL表示 X V X V T X_VX_V^T XVXVT的特征值,同样,有 λ V 1 ≥ , . . . , ≥ λ V L ≥ 0 \lambda_{V_1} \ge ,...,\ge\lambda_{V_L}\ge0 λV1≥,...,≥λVL≥0, U V 1 , . . . , U V L U_{V_1},...,U_{V_L} UV1,...,UVL则表示对应的特征向量。
X
V
X
V
T
X_VX_V^T
XVXVT的结构等价于:
2.2 重构
2.2.1 第三步 分组
与HMSSA类似,这个步骤相当于分解矩阵 X V 1 , . . . , X V L X_{V_1},...,X_{V_L} XV1,...,XVL分成几个不相交的组,并对每组中的矩阵求和。下标集合 1 , … , L {1,…,L} 1,…,L被划分成不相交的子集 I 1 , … … , I m I_1,……,I_m I1,……,Im,与 X V = X I 1 + . . . + X I m X_V=X_{I_1}+...+X_{I_m} XV=XI1+...+XIm相对应。
2.2.2 第四步 对角平均
对角平均的目的是将重构的hankel矩阵 X I j X_{I_j} XIj变换为一维的序列。对于每个重构的轨迹矩阵而言,这一步与SSA相同。
2.3 预测
2.3.1 recurrent forecast
考虑 M M M个序列 Y N i ( i ) = ( y 1 ( i ) , . . . , y N i ( i ) ) Y^{(i)}_{N_i}=(y^{(i)}_{1},...,y^{(i)}_{N_i}) YNi(i)=(y1(i),...,yNi(i))和对应的窗口长度 L i , 2 ≤ L i ≤ N i − 1 , i = 1... , M L_i,2≤Li≤Ni−1,i=1...,M Li,2≤Li≤Ni−1,i=1...,M,VMSSA-R预测算法如下所示。
-
对于固定的 K K K,为每个序列 Y N i ( i ) ( i = 1 , . . . , M ) Y^{(i)}_{N_i}(i=1,...,M) YNi(i)(i=1,...,M)分别构造轨迹矩阵 X ( i ) = [ X 1 ( i ) , . . . , X K ( i ) ] = ( x m n ) m , n = 1 L , K i X^{(i)}= [X^{(i)}_{1},...,X^{(i)}_{K}]=(x_{mn})^{L,K_i}_{m,n=1} X(i)=[X1(i),...,XK(i)]=(xmn)m,n=1L,Ki
-
构造块轨迹矩阵 X H X_H XH如下:
-
定义 U H j = ( u 1 j , … , u L j ) T , U_{H_j}=(u_{1j},…,u_{Lj})^T, UHj=(u1j,…,uLj)T, 长度为L,作为一个 X H X H T X_HX_H^T XHXHT的第 j j j个特征向量。
-
定义Hankel算子 X i ^ \hat{X_i} Xi^,考虑由r个分量获得的重构矩阵 X H ^ = Σ i = 1 r U H i U H i T X H \hat{X_H}=\Sigma_{i=1}^{r}U_{H_i}U^T_{H_i}X_H XH^=Σi=1rUHiUHiTXH
-
考虑矩阵
作为从上一步中获得的矩阵 X ^ ( i ) \hat{X}^{(i)} X^(i)汉克尔化过程的结果 -
令 U H j ∇ U^\nabla_{H_j} UHj∇是特征向量 U H j U_{H_j} UHj的前 L − 1 L-1 L−1个元素构成的向量。 π H j \pi_{H_j} πHj表示特征向量 U H j U_{H_j} UHj的最后一个元素。 ( j = 1 , . . . , r ) (j=1,...,r) (j=1,...,r)
-
定义 ν 2 = Σ j = 1 r π H j 2 \nu^2=\Sigma_{j=1}^{r}\pi_{H_j}^2 ν2=Σj=1rπHj2
-
定义线性系数向量:
-
如果 ν 2 < 1 \nu^2<1 ν2<1,则存在HMSSA的H步预测,计算公式如下:
其中, i = 1 , . . . , M . i=1,...,M. i=1,...,M.
2.3.2 vector forecast
此算法的前10部分与VMSSA-R相同,继续考虑矩阵:
其中,
可以证明,矩阵
Π
\Pi
Π是
U
∇
U^{\nabla}
U∇的列空间上的正交投影算子。令
其中,
Π
(
i
)
\Pi^{(i)}
Π(i)的维度为
(
L
i
−
1
)
×
(
L
s
u
m
−
M
)
(L_i−1)×(L_{sum}−M)
(Li−1)×(Lsum−M),而
R
(
i
)
(
i
=
1
,
.
.
.
,
M
)
\mathscr{R}^{(i)}(i=1,...,M)
R(i)(i=1,...,M)的长度为
L
s
u
m
−
M
L_{sum}−M
Lsum−M,对应于序列
Y
N
i
(
i
)
Y_{N_i}^{(i)}
YNi(i).然后,定义线性运算:
其中,
Y
Δ
T
=
(
Y
Δ
(
1
)
,
.
.
.
,
Y
Δ
(
M
)
)
Y_\Delta^T=(Y_\Delta^{(1)},...,Y_\Delta^{(M)})
YΔT=(YΔ(1),...,YΔ(M)),而
Y
Δ
(
i
)
,
(
i
=
1
,
.
.
.
,
M
)
Y_\Delta^{(i)},(i=1,...,M)
YΔ(i),(i=1,...,M)表示
Y
i
Y_i
Yi(长度为
L
i
L_i
Li)的最后
L
i
−
1
L_i-1
Li−1个元素。使用上面的符号,VMSSA-V预测算法如下:
- 定义向量
Z
i
Z_i
Zi如下:
其中,
X
~
i
\tilde{X}_{i}
X~i是分组并保留噪声分量后,第i个序列轨迹矩阵的重构列。
L
m
a
x
=
m
a
x
{
L
1
,
.
.
.
,
L
M
}
L_{max}=max\{L_1,...,L_M\}
Lmax=max{L1,...,LM}
2. 构造矩阵
Z
=
[
Z
1
,
.
.
.
,
Z
K
+
h
+
L
m
a
x
−
1
]
Z= [Z_1,...,Z_{ K+h+L_{max}−1}]
Z=[Z1,...,ZK+h+Lmax−1],并求对角平均,我们可以得到一个新的序列
y
^
1
(
i
)
,
.
.
.
,
y
^
N
+
h
+
L
m
a
x
(
i
)
(
i
=
1
,
.
.
.
,
M
)
\hat{y}_1^{(i)},...,\hat{y}_{N+h+L_{max}}^{(i)}(i=1,...,M)
y^1(i),...,y^N+h+Lmax(i)(i=1,...,M)
3. 元素
y
^
N
i
+
1
(
i
)
,
.
.
.
,
y
^
N
i
+
h
(
i
)
(
i
=
1
,
.
.
.
,
M
)
\hat{y}_{N_i+1}^{(i)},...,\hat{y}_{N_i+h}^{(i)}(i=1,...,M)
y^Ni+1(i),...,y^Ni+h(i)(i=1,...,M)则是通过VMSSA-V方法获得的
h
h
h个预测值。