SSA时间序列分解
时间:2023-04-10 16:07:00
奇异谱分析(SSA)轨迹矩阵是根据观到的时间序列构建,轨迹矩阵分解和重构,从而提取代表原始时间序列中不同成分的信号,如长期趋势信号、周期信号、噪声信号等,进一步分析分解信号。
算法流程
Step1:根据原始时间序列构建轨迹矩阵 X X X
Step2:分解矩阵X的奇异值: X = ∑ i = 1 r σ i U i V i T X=\sum_{i=1}^{r} \sigma_i U_i V_i^T X=∑i=1rσiUiViT
Step三、按奇异值生成 r r r个子矩阵: X i = σ i U i V i T X_i = \sigma_i U_i V_{i}^T Xi=σiUiViT
Step4:根据某一分组原则将子矩阵 X i X_i Xi分为 m m m个组
Step5:对子矩阵 X i X_i Xi进行对角均值化处理得到子序列 F i ~ \widetilde{F_i} Fi
Step6:对 m m m个组中的子序列相加得到分组子序列。
矩阵分解
时间序列嵌入形成轨迹矩阵
输入:原始时间序列 y y y,窗口长度 L ( 2 ≤ L ≤ N / 2 ) L (2 \le L \le N/2) L(2≤L≤N/2), N = l e n ( y ) N=len(y) N=len(y)
X = [ y 1 y 2 y 3 y 4 … y N − L + 1 y 2 y 3 y 4 y 5 … y N − L + 2 y 3 y 4 y 5 y 6 … y N − L + 3 ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ y L y L + 1 y L + 2 y L + 3 … y N ] (1) \mathbf{X} = \begin{bmatrix}\tag{1} y_1 & y_2 & y_3 & y_4 &\ldots & y_{N-L+1} \\ y_2 & y_3 & y_4 & y_5 &\ldots & y_{N-L+2} \\ y_3 & y_4 & y_5 & y_6 &\ldots & y_{N-L+3} \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ y_{L} & y_{L+1} & y_{L+2} & y_{L+3} & \ldots & y_{N} \\ \end{bmatrix} X=⎣⎢⎢⎢⎢⎢⎡y1y2y3⋮yLy2y3y4⋮yL+1y3y4y5⋮yL+2y4y5y6⋮yL+3………⋱…yN−L+1yN−L+2yN−L+3⋮yN⎦⎥⎥⎥⎥⎥⎤(1)
显然矩阵 X X X是一个汉克尔矩阵(每一条副对角线的元素都相等),矩阵的行数为窗口长度 L L L,矩阵的列数为 N − L + 1 N-L+1 N−L+1。
奇异值分解(SVD)
X = U Σ V T (2) X = U \Sigma V^T \tag{2} X=UΣVT(2)
其中:
-
U U U: L × L L \times L L×L酉矩阵
-
Σ \Sigma Σ: L × K L \times K L×K对角阵
-
V V V: K × K K \times K K×K酉矩阵
奇异值分解将轨迹矩阵 X X X分解为酉矩阵 U U U,对角阵 Σ \Sigma Σ和酉矩阵 V V V的线性组合。这意味着:
X = ∑ i = 1 r σ i U i V i T = ∑ i = 1 r X i (3) \begin{aligned}\tag{3} \mathbf{X} & = \sum_{i=1}^{r}\sigma_i U_i V_i^{\text{T}} \\ & = \sum_{i=1}^{r}\mathbf{X}_i \end{aligned} X=i=1∑rσiUiViT=i=1∑rXi(3)
r r r表示矩阵 X X X的非零特征根数也即矩阵的秩。
序列重构
特征分组
不妨设根据某一分组原则将子矩阵分为了trend、periodic、noise 3组,对应地矩阵 X X X分解得到的子序列将被组合为3部分。
X ~ (trend) = ∑ t ∈ t r e n d X ~ t ⟹ F ~ (trend) = ∑ t ∈ t r e n d F ~ t X ~ (periodic) = ∑ p ∈ p e r i o d i c X ~ p ⟹ F ~ (periodic) = ∑ p ∈ p e r i o d i c F ~ p X ~ (noise) = ∑ n ∈ n o i s e X ~ n ⟹ F ~ (noise) = s u m n ∈ n o i s e F ~ n (4) \begin{aligned}\tag{4} \tilde{\mathbf{X}}^{\text{(trend)}} & = \sum_{t \in trend}\tilde{\mathbf{X}}_t & \implies & \tilde{F}^{\text{(trend)}} = \sum_{t \in trend} \tilde{F}_t \\ \tilde{\mathbf{X}}^{\text{(periodic)}} & = \sum_{p \in periodic}\tilde{\mathbf{X}}_p & \implies & \tilde{F}^{\text{(periodic)}} = \sum_{p \in periodic} \tilde{F}_p\\ \tilde{\mathbf{X}}^{\text{(noise)}} & = \sum_{n \in noise}\tilde{\mathbf{X}}_n & \implies & \tilde{F}^{\text{(noise)}} = sum_{n \in noise} \tilde{F}_n \end{aligned} X~(trend)X~(periodic)X~(noise)=t∈trend∑X~t=p∈periodic∑X~