奇异谱分析(SSA)的matlab实现
时间:2023-04-10 15:07:00
SSA
- 前言
- 一、SSA(Singular Spectrum Analysis)
- 二、二。代码实现和案例显示
- 总结
前言
??奇异谱分析(SSA)它是主要成分分析的一个特例。特别适用于分析一维时间序列。它能有效提取趋势项、周期项、半周期项等有用信息,实现数据的去噪、插值和外推。它是一种应用广泛的时间序列分析方法。SSA总结实现过程:
一、SSA(Singular Spectrum Analysis)
??SSA作为一种应用广泛的算法,网上有很多详细的信息可供参考。这里简单总结一下步骤。
(1)构建轨迹矩阵
??选择合适的窗长M,M根据经验选择应在范围内(1)N在/2)内,最好是周期的整数倍,这里N是一维时间序列的长度,构建形式如下:
原始序列: X i = [ X 1 , X 2 , X 3 , … , X n ] X_i = \left[ X_1,X_2,X_3,{\ldots} ,X_n \right] Xi=[X1,X2,X3,…,Xn/span>]
轨迹矩阵: X M K = [ X 1 , X 2 , X 3 , … , X K ] = [ X 1 X 2 … X N − M + 1 X 2 X 3 … X N − M + 2 ⋮ ⋮ ⋱ ⋮ X M X M + 1 … X N ] X_{MK} = \left[ X_1,X_2,X_3,{\ldots} ,X_K \right] \\ \qquad\qquad\qquad\ \ \ \ = \begin{bmatrix} X_1&X_2&{\ldots} &X_{N-M+1}\\ X_2&X_3&{\ldots} &X_{N-M+2}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ X_M&X_{M+1}&{\ldots} &X_N \end{bmatrix} XMK=[X1,X2,X3,…,XK] =⎣⎢⎢⎢⎡X1X2⋮XMX2X3⋮XM+1……⋱…XN−M+1XN−M+2⋮XN⎦⎥⎥⎥⎤
其中: K = N − M + 1 K = N-M+1 K=N−M+1
(2)奇异值分解
构造矩阵S,然后对S进行SVD分解,获得S的特征值E和特征向量U,E是对角阵要按从大到小的顺序排列。
S M M = X M K ∗ X K M T = U M M E M M V 1 S_{MM} = X_{MK} * X^T_{KM} = U_{MM}E_{MM}V_1 SMM=XMK∗XKMT=UMMEMMV1
求轨迹矩阵X对应的V值,其中d为X的秩:
V d m ⟹ V i = X T ∗ U i / E ( i , i ) ( i = 1 , 2 , … , d ) V_{dm}\ \ \ {\Longrightarrow}\ \ V_i = X^T*U_i/\sqrt {E(i,i)}\ \ (i=1,2,{\ldots},d) Vdm ⟹ Vi=XT∗Ui/E(i,i) (i=1,2,…,d)
计算对应的d个初等矩阵,轨迹矩阵可以由d个初等矩阵X_i线性表示:
X 轨 迹 = ∑ 1 d X i X_{轨迹} ={ \sum_1^dX_i} X轨迹=1∑dXi
X i = λ i U i / V i T λ i = E ( i , i ) X_i =\sqrt { \lambda_i}U_i/V_i^T\ \ \ \ \ \lambda_i=\sqrt {E(i,i)} Xi=λiUi/ViT λi=E(i,i)
(3)分组重构
初等矩阵的维度和轨迹矩阵的维度一样,因此可以重构出d个一维矩阵,表示原始一维序列的趋势项、周期项、噪声等信号,从而实现对有用信号的分离。重构原理公式如下:
y i = { 1 i ∑ M = 1 K X M , i − M + 1 1 ≤ i < M 1 M ∑ M = 1 L X M , i − M + 1 M ≤ i < K 1 N − i + 1 ∑ M = i − K + 1 N − K + 1 X M , i − M + 1 K ≤ i < N y_i = \begin{cases} \frac {1}{i}\displaystyle \sum^{ K}_{M = 1}{X_{M,i-M+1} \qquad\qquad\qquad 1\leq{i}\lt{M}}\\ \frac {1}{M}\displaystyle \sum^{ L}_{M = 1}{X_{M,i-M+1} \qquad\qquad\quad\ \ M\leq{i}\lt{K}}\\ \frac {1}{N-i+1}\displaystyle \sum^{N-K+1}_{M = i-K+1}{X_{M,i-M+1} \qquad K\leq{i}\lt{N}} \end{cases} yi=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧i1M=1∑KXM,i−M+11≤i<MM1M=1∑LXM,i−M+1 M≤i<KN−i+11M=i−K+1∑N−K+1X<