正在加载中...

展开本页目录
算法教程STL_SSA-STL和SSA分解

STL_SSA-STL和SSA分解

No.058 · 在线教程

STLSSA 是将 STL(Seasonal-Trend decomposition using LOESS)与 SSA(Singular Spectrum Analysis)结合的时间序列分解与去噪方法。其核心思想是:先通过 STL 拆分出趋势项与季节项,再对残差项进行 SS…

STL_SSA-STL和SSA分解

1. 方法概述

STL_SSA 是将 STL(Seasonal-Trend decomposition using LOESS)与 SSA(Singular Spectrum Analysis)结合的时间序列分解与去噪方法。其核心思想是:先通过 STL 拆分出趋势项与季节项,再对残差项进行 SSA 分解与重构,以提升噪声抑制与结构提取能力。

设单变量时间序列为

$$ \{y_t\}_{t=1}^{N},\quad y_t\in\mathbb{R}. \tag{1} $$

系统支持三种模式:

  • stl:仅做 STL 分解;
  • ssa:仅做 SSA 分解;
  • stl_ssa:先 STL,再对残差做 SSA(默认)。

2. STL 分解模型

STL 将序列分解为趋势、季节与残差三部分:

$$ y_t=T_t+S_t+R_t,\quad t=1,\ldots,N. \tag{2} $$

其中 \(T_t\) 为趋势项,\(S_t\) 为季节项,\(R_t\) 为残差项。
在程序中,季节周期由 period 指定,平滑窗口 seasonal/trend/low_pass 可选,robust=True 时采用稳健加权降低异常值影响。

3. SSA 分解模型

3.1 轨迹矩阵构造

给定窗口长度 \(L\)(满足 \(2\le L\le N-1\)),令

$$ K=N-L+1. \tag{3} $$

构造轨迹矩阵(Hankel 结构):

$$ \mathbf{X}= \begin{bmatrix} y_1 & y_2 & \cdots & y_K\\ y_2 & y_3 & \cdots & y_{K+1}\\ \vdots & \vdots & \ddots & \vdots\\ y_L & y_{L+1} & \cdots & y_N \end{bmatrix}\in\mathbb{R}^{L\times K}. \tag{4} $$

3.2 奇异值分解

对 \(\mathbf{X}\) 做 SVD:

$$ \mathbf{X}=\sum_{i=1}^{r}\sigma_i\,\mathbf{u}_i\mathbf{v}_i^\top,\quad \sigma_1\ge \sigma_2\ge\cdots\ge \sigma_r>0, \tag{5} $$

其中 \(r=\mathrm{rank}(\mathbf{X})\)(程序中取前 components=r 个分量用于重构)。

3.3 方差贡献率

第 \(i\) 个奇异分量的贡献率定义为

$$ \eta_i=\frac{\sigma_i^2}{\sum_{j=1}^{r_{\max}}\sigma_j^2}, \tag{6} $$

累计贡献率为

$$ \mathrm{Cum}_m=\sum_{i=1}^{m}\eta_i. \tag{7} $$

3.4 分组重构与对角平均

设分组索引集合为 \(G_g\subseteq\{1,\ldots,r\}\),则第 \(g\) 组对应矩阵

$$ \mathbf{X}^{(g)}=\sum_{i\in G_g}\sigma_i\,\mathbf{u}_i\mathbf{v}_i^\top. \tag{8} $$

对 \(\mathbf{X}^{(g)}\) 做对角平均(Hankelization)得到重构分量 \(\tilde y_t^{(g)}\)。
总重构序列为

$$ \hat y_t=\sum_{g}\tilde y_t^{(g)}. \tag{9} $$

4. STL_SSA 组合模型

在组合模式中,先由式(2)得到 \(R_t\),再对 \(\{R_t\}\) 做 SSA。若将 SSA 分组中的“残差组”记为 \(g=\text{residual}\),则去噪残差可写为

$$ \tilde R_t=\sum_{g\neq \text{residual}}\tilde y_t^{(g)}. \tag{10} $$

最终重构序列为

$$ \hat y_t^{\,(\mathrm{final})}=T_t+S_t+\tilde R_t. \tag{11} $$

5. 误差与评价指标

程序中给出重构误差(可用于论文结果表):

$$ \mathrm{RMSE}=\sqrt{\frac{1}{N}\sum_{t=1}^{N}\left(y_t-\hat y_t\right)^2}. \tag{12} $$

stl_ssa 模式下,对应 \(\hat y_t=\hat y_t^{\,(\mathrm{final})}\);在 ssa 模式下可对比去噪序列与原序列。

6. 参数与符号说明

符号/参数 含义
\(N\) 序列长度
\(L\) SSA 嵌入窗口(ssa_window
\(K\) 轨迹列数,\(K=N-L+1\)
\(\sigma_i\) 第 \(i\) 个奇异值
stl_period STL 季节周期
stl_robust STL 是否稳健拟合
ssa_components 参与重构的前 \(r\) 个分量数
ssa_group_mode 分组方式(simple/manual)
ssa_input SSA 输入(originalstl_resid

7. 与程序输出对应关系

程序导出的 Decomposition 表中,关键列与理论量对应如下:

  • y:原始序列 \(y_t\)
  • stl_trend:\(T_t\)
  • stl_seasonal:\(S_t\)
  • stl_resid:\(R_t\)
  • ssa_input:SSA 输入序列
  • ssa_recon:SSA 全分组重构 \(\hat y_t\)
  • ssa_denoised:SSA 去噪分量 \(\tilde R_t\) 或对应信号分量
  • final_reconstructed:组合重构 \(\hat y_t^{\,(\mathrm{final})}\)

SSA_SingularValues 表对应式(6)–式(7),SSA_Groups 表对应式(8)的分组定义。

8. 论文写作模板

8.1 方法段模板

“本文采用 STL_SSA 组合分解方法对时间序列进行结构提取与去噪。首先,利用 STL 将原序列分解为趋势项、季节项与残差项(式(2));其次,对残差项构造轨迹矩阵并进行奇异值分解(式(4)–(5)),依据奇异谱贡献率(式(6)–(7))进行分组重构(式(8)–(9));最后将去噪后的残差与 STL 趋势、季节项叠加得到最终重构序列(式(11))。”

8.2 结果段模板

“结果表明,STL 能有效分离趋势与周期结构,而 SSA 对残差中的随机扰动具有较好的抑制能力。根据 RMSE 指标(式(12)),组合模型在保留主要结构信息的同时降低了重构误差。奇异值贡献率与累计贡献率分析进一步验证了前若干主分量对序列信息的主导作用。”

9. 实现说明与注意事项

  1. stl_period 应与数据季节周期一致(如月度序列常取 12)。
  2. ssa_window 通常取 \(N/4\sim N/2\) 或略大于主要周期;过小会削弱分解能力。
  3. ssa_components 过大可能把噪声也纳入重构,建议结合累计贡献率与结果图调参。
  4. 若用于论文复现,请在文中明确软件版本(尤其 statsmodels)与参数设置。

附录 A:英文摘要段落模板(可直接使用)

A.1 通用英文摘要模板

“This study proposes an STL_SSA decomposition framework for time-series structure extraction and noise reduction. First, the observed series is decomposed by STL into trend, seasonal, and residual components. Then, Singular Spectrum Analysis (SSA) is applied to the residual sequence via trajectory matrix embedding, singular value decomposition, grouping, and diagonal averaging reconstruction. The denoised residual is finally combined with the STL trend and seasonal terms to obtain the final reconstructed signal. Experimental results indicate that the hybrid approach improves reconstruction quality and preserves major temporal patterns, providing an interpretable and reproducible solution for decomposition-based analysis.”

A.2 强调方法贡献版本

“Compared with single-stage decomposition, the proposed STL_SSA strategy separates deterministic structures (trend/seasonality) and stochastic fluctuations in two steps. STL captures low-frequency trend and periodic components, while SSA further filters irregular residual dynamics through spectral decomposition and grouped reconstruction. This design enhances robustness against nonstationary disturbances and improves signal clarity for downstream forecasting and interpretation.”

A.3 强调工程复现版本

“The implemented system supports three modes (STL, SSA, and STL+SSA), exports multi-sheet Excel results, figures, and reproducible scripts, and records all configuration parameters for replication. Such a standardized output pipeline facilitates transparent reporting and direct reuse in empirical studies.”

附录 B:中文图表题注模板(可直接替换变量名)

B.1 原始序列图

  • 图 B1 原始时间序列图。
    注:展示样本在观测区间内的整体变化趋势及波动特征。

B.2 STL 分解图

  • 图 B2 STL 分解结果图(Observed/Trend/Seasonal/Residual)。
    注:由上至下依次为原序列、趋势项、季节项和残差项,对应式(2)。

B.3 SSA 奇异值图

  • 图 B3 SSA 奇异值谱图。
    注:横轴为分量编号,纵轴为奇异值,用于识别主导结构分量。

B.4 SSA 方差贡献率图

  • 图 B4 SSA 方差贡献率及累计贡献率图。
    注:柱状表示单分量贡献率,折线表示累计贡献率,对应式(6)–式(7)。

B.5 SSA 去噪对比图

  • 图 B5 SSA 输入序列与去噪序列对比图。
    注:用于展示 SSA 分组重构后的降噪效果。

B.6 组合重构对比图

  • 图 B6 原始序列与 STL_SSA 最终重构序列对比图。
    注:最终重构序列由趋势项、季节项与去噪残差叠加得到(式(11))。

B.7 论文正文常用图注句式

  1. “如图 B2 所示,STL 有效分离了趋势与季节结构,残差项主要反映高频扰动。”
  2. “图 B3–B4 表明前若干奇异分量贡献率较高,能够解释序列的主体信息。”
  3. “从图 B5 可见,SSA 去噪后序列波动显著收敛。”
  4. “图 B6 显示最终重构序列与原序列在主趋势和周期结构上具有较高一致性。”

10. 单篇终审补充

10.1 图题与表题对齐建议

  • 本文档应优先对应真实算法目录 具体的算法2/STL_SSA-STL和SSA分解
  • 代表性结果目录建议绑定 具体的算法2/STL_SSA-STL和SSA分解/results/STL_SSA分析结果_20260329_165440
  • 表题应直接对应 STL_SSA分析结果_20260329_165440.xlsx 的真实工作表:RawData_PreviewDecompositionParametersSTL_ParamsSSA_SingularValuesSSA_GroupsCharts_Index
  • 图题应优先绑定该目录下真实图:series_20260329_165440.pngstl_components_20260329_165440.pngssa_singular_values_20260329_165440.pngssa_variance_20260329_165440.pngssa_denoised_20260329_165440.pngfinal_reconstructed_20260329_165440.png

10.2 终审说明

  • 当前 STL_SSA 的正式结果目录已经形成“xlsx + 图”闭环。
  • 复现脚本可对应 baseline 目录 results/window3_baseline_test_window3_timeseries_dynami3_stl_ssa/stl_ssa_baseline_20260329_165438/repro_stl_ssa_20260329_165439.py,其 SRC_FILE 实际写为 results/window3_baseline_test_window3_timeseries_dynami3_stl_ssa/repro_inputs/stl_ssa_input.csv,属于“模块根目录相对路径 + repro_inputs”口径。
  • 因此论文中若写复现方式,应说明正式分析目录与 baseline 复现目录是两套相关证据,而不是单一目录一次性导出。

10.3 全量强化补充

  • 当前 STL_SSA 文档应绑定真实算法目录 具体的算法2/STL_SSA-STL和SSA分解,正式主结果目录为 具体的算法2/STL_SSA-STL和SSA分解/results/STL_SSA分析结果_20260329_165440
  • 该主目录内工作簿为 STL_SSA分析结果_20260329_165440.xlsx,真实工作表为 RawData_PreviewDecompositionParametersSTL_ParamsSSA_SingularValuesSSA_GroupsCharts_Index
  • 主图文件与主工作簿同层放置,分别为 series_20260329_165440.pngstl_components_20260329_165440.pngssa_singular_values_20260329_165440.pngssa_variance_20260329_165440.pngssa_denoised_20260329_165440.pngfinal_reconstructed_20260329_165440.png
  • 当前主结果目录本身未看到 repro 脚本和输入副本;真实复现入口位于 baseline 路径 具体的算法2/STL_SSA-STL和SSA分解/results/window3_baseline_test_window3_timeseries_dynami3_stl_ssa/stl_ssa_baseline_20260329_165438/repro_stl_ssa_20260329_165439.py
  • 该脚本关键输入写法为 SRC_FILE = 'results/window3_baseline_test_window3_timeseries_dynami3_stl_ssa/repro_inputs/stl_ssa_input.csv',说明 STL_SSA 的复现链是“模块根目录相对路径回指 baseline 目录内的 repro_inputs”,而不是主结果目录内自带 repro_inputs
  • 因此论文或附录如果要证明可复现性,应将 STL_SSA分析结果_20260329_165440/window3_baseline_test_window3_timeseries_dynami3_stl_ssa/... 这两套相关目录分开写:前者用于主结果图表引用,后者用于脚本与输入快照复现。
  • 当前主工作簿中的 Charts_Index 已经能为图号和路径提供索引,因此正文建议优先按 Charts_Index 与同层图片文件名对照,不要再套用其他算法常见的 Charts图表清单 命名。

11. 软件实现核查补充(2026-07)

  • 当前实现的主结果目录应写作 具体的算法2/STL_SSA-STL和SSA分解/results/STL_SSA分析结果_20260329_165440,主工作簿为 STL_SSA分析结果_20260329_165440.xlsx
  • 正文应围绕 RawData_PreviewDecompositionParametersSTL_ParamsSSA_SingularValuesSSA_GroupsCharts_Index 来写,图证则对应 series_20260329_165440.pngstl_components_20260329_165440.pngssa_singular_values_20260329_165440.pngssa_variance_20260329_165440.pngssa_denoised_20260329_165440.pngfinal_reconstructed_20260329_165440.png
  • baseline 路径下的 repro_stl_ssa_20260329_165439.py + repro_inputs/stl_ssa_input.csv 是复现证据,不应写成主结果目录自带复现脚本。
  • 如果附录需要写复现链路,应明确说明主结果目录与 baseline 复现目录分离。