周末煲一锅老火汤,汤面浮着油花、汤里沉着肉块、汤底藏着药料——一口下去,层次分明却混在一起。如果想把每种味道单独研究,就得先分层:熬出主味的是汤底,固定出现的时令菜是周期,偶尔多放的一撮盐是意外。时间序列也是这样一锅“数据汤”。一家奶茶店的日销量里,有稳步上涨的招牌趋势,有周末爆单的七天节奏,还有一次暴雨导致的外卖尖峰。季节性分解要做的,就是把这一锅混合汤按味道拆成三碗:趋势、季节、残差。拆完之后,每一碗都更容易看清、更容易建模。本文带你认识三种主流“筛子”——STL、CEEMDAN、X-13ARIMA-SEATS,学会按菜选勺,把数据汤炖得清亮见底。

岗位关联

对 AI 从业者而言,季节性分解是时间序列预测前的“必修预处理课”。掌握它,你就能把杂乱信号拆成趋势、周期和噪声,显著提升销量、电力、客流等预测任务的精度与可解释性,是简历上“时序分析能力”的硬核证明。

目录
  1. 可视化演示
  2. 分解思想:一锅老火汤的三层味道
  3. STL方法:用细网漏勺反复过滤
  4. CEEMDAN分解:分子料理的离心分离机
  5. X-13ARIMA-SEATS:官方中央厨房的标准流程
  6. 方法对比:三把筛子怎么选
  7. 实操流程:从一锅汤到三碗清汤
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示编码器逐步处理输入序列生成隐状态,解码器基于隐状态逐步生成输出序列的完整流程,支持编码与解码模式切换。

本节配有交互动效(进入视口后自动加载,约 3KB)。

编码阶段 编码器逐步读取输入序列,生成上下文隐状态向量 h_t = f(x_t, h_{t-1}) 编码完成后隐状态传递给解码器作为初始状态

分解思想:一锅老火汤的三层味道

一锅老火汤,汤面浮油、汤中沉肉、汤底藏药料,一口下去层次分明却混为一体。如果想把每种味道单独研究,就得先分层——熬出主味的是汤底,固定出现的时令菜是周期,偶尔手抖多放的盐是意外。时间序列正是这样一锅“数据汤”:一家奶茶店的日销量里,有稳步上涨的招牌趋势,有周末爆单的七天节奏,还有一次暴雨导致的外卖尖峰。季节性分解要做的,就是把这一锅混合汤拆成三碗:趋势、季节、残差。

技术上讲,这三个成分合起来就是原始序列。最常用的加法模型写成 $Y_t = T_t + S_t + R_t$,把 t 时刻的观测值拆成三项:T 是长期走向,S 是固定周期的重复模式,R 是随机扰动。什么情况下能直接相加?当季节波动的幅度不随趋势变化时,比如月销量无论淡季旺季波动幅度都差不多,加法就成立。反之,如果销量基数变大后旺季的波动也等比放大,就得改用乘法模型,或者先取对数再套加法。

验证分解好坏的标准也统一:残差应当接近白噪声——没有周期残留、没有明显趋势,就像过滤后的清汤里不该再有肉渣。所以,理解分解思想是学会三把筛子的第一步:你得先接受“一锅汤能分成三层”,才有动力去学不同筛子的用法。

Yt=Tt+St+Rt\displaystyle Y_t = T_t + S_t + R_t
加法模型是分解思想的“公理”:把观测值拆成趋势、季节、残差三项之和。理解它,就理解了后面三种方法共同的输出目标。
  1. 观测值$Y_t$ 是第 $t$ 个时刻的原始观测值,就像从锅里舀出的一勺汤,还没分层。
    Yt\displaystyle Y_t
  2. 趋势项$T_t$ 刻画长期上升或下降的方向,是汤底慢慢熬出的醇厚基调。
    Tt\displaystyle T_t
  3. 季节项$S_t$ 按固定周期起伏,每个周期重复相似形态,像定期加入的时令食材。
    St\displaystyle S_t
  4. 残差项$R_t$ 是扣除前两者后的随机波动,是偶尔手抖多加的调味料。
    Rt\displaystyle R_t
  5. 相加还原$Y_t = T_t + S_t + R_t$ 表示三者直接相加回到原始值,适合季节波动幅度稳定的序列。
    Yt=Tt+St+Rt\displaystyle Y_t = T_t + S_t + R_t

STL方法:用细网漏勺反复过滤

老厨师手里有一把细网漏勺,专治浑浊的汤:把汤倒进去,反复摇、反复滤,每过一次杂质就少一些,直到汤清见底。STL(基于局部加权回归的季节性分解)就是时序分析里的这把漏勺。它不改变配方,也不挑汤底,直接用局部加权回归把趋势和季节一层层“滤”出来,灵活到可以对任意周期的季节做平滑。

STL 的核心是一个叫 Loess 的平滑技术。Loess 的思想很朴素:估计某个时刻的取值时,不用整段数据,只看它附近一个小窗口内的数据,按距离远近赋予权重——离得近的多参考,离得远的少参考——拟合出一条局部曲线。这个窗口在整条序列上滑动,就得到平滑趋势。权重由三次核函数决定,公式如下:

光有平滑还不够,STL 把平滑动作编成了内循环和外循环:内循环负责在“估计趋势”和“估计季节”之间交替迭代,让两个估计互相校正;外循环根据残差大小调整样本权重,残差大的点(异常值)权重被压低,这就是 STL 稳健性的来源。使用时只需指定季节周期、趋势窗口和季节窗口三个参数。就像漏勺网眼粗细决定滤出汤渣的多少,STL 的窗口参数决定趋势与季节的“粗细”——窗口太长会滤掉真实起伏,窗口太短会把季节成分误吞进趋势,需要根据业务周期谨慎选择。

wk(x)=(1−∣x−xkd(x)∣3)3\displaystyle w_k(x) = \left(1 - \left|\frac{x - x_k}{d(x)}\right|^3\right)^3
这是 Loess 的权重函数:距离目标点越近的观测,权重越高;超出窗口半径 d(x) 的观测,权重直接降为 0。就像漏勺的网眼只让近处的汤液通过。
  1. 目标点$x$ 是当前要平滑的位置,代表汤勺要捞取的那一格。
    x\displaystyle x
  2. 邻近点$x_k$ 是窗口内第 $k$ 个邻近观测点,是附近的食材颗粒。
    xk\displaystyle x_k
  3. 归一化距离$\left|\frac{x - x_k}{d(x)}\right|$ 计算邻近点离目标点的远近占窗口半径的比例。
    ∣x−xkd(x)∣\displaystyle \left|\frac{x - x_k}{d(x)}\right|
  4. 三次核收缩$(1 - u^3)^3$ 让远的点权重迅速衰减为零,只有近处的点参与平均。
    (1−u3)3\displaystyle (1 - u^3)^3
  5. 加权回归每个目标点都用窗口内的加权数据拟合局部曲线,逐点滑动形成平滑趋势线。
    wk(x)\displaystyle w_k(x)

CEEMDAN分解:分子料理的离心分离机

如果 STL 是网眼固定的漏勺,CEEMDAN 就是分子料理工作台上的离心分离机——你不需要告诉它汤里有什么成分,它靠自身的旋转把不同密度的物质一层层甩开。CEEMDAN 的全称很长,但思想是一条清晰的演进线:先有 EMD(经验模态分解),再升级到 EEMD(集合经验模态分解),最后才是 CEEMDAN(自适应噪声完备集合经验模态分解)。

EMD 的做法很特别:用三次样条依次连接局部极大值、局部极小值,得到上下包络;取包络均值作为“临时趋势”,原始信号减掉它,得到一层“本征模态函数”IMF;反复操作,直到残余成为单调趋势。EEMD 把白噪声加入原信号再分解多次取平均,解决了模态混叠;CEEMDAN 更进一步,在每次筛分时也自适应地加噪声,保证分解结果可复现且更稳定。最终输出可以写成:

CEEMDAN 最大的优势是自适应:不需要预设周期、不需要数据平稳,适合非线性非平稳序列。它输出的 IMF 按频率从高到低排列,高频 IMF 对应细节波动和噪声,低频 IMF 和残差对应趋势。不少实践者会把前几个高频 IMF 当作噪声剔除,再用剩余部分重建去噪信号。就像离心机甩出的分层由食材自身密度决定,CEEMDAN 分离出的模态由数据自身形态决定。正因如此,它的结果有时在不同参数下略有波动,用的时候要记得:自适应不等于全自动,关键步骤仍要靠人判断。

X(t)=∑k=1KIMFk(t)+rK(t)\displaystyle X(t) = \sum_{k=1}^{K} IMF_k(t) + r_K(t)
CEEMDAN 的分解公式:原始信号等于若干本征模态函数之和,再加上一个残差趋势项。层数和形态都由数据自己决定,不需要预设周期。
  1. 原始信号$X(t)$ 是待分解的混合序列,是刚端上桌的杂乱汤料。
    X(t)\displaystyle X(t)
  2. 本征模态$IMF_k(t)$ 是第 $k$ 层分离出的分量,代表汤里不同粒径的颗粒。
    IMFk(t)\displaystyle IMF_k(t)
  3. 叠加求和$\sum_{k=1}^{K}$ 把 $K$ 个模态累加起来,表示逐层拆解后可以重组回原信号。
    ∑k=1K\displaystyle \sum_{k=1}^{K}
  4. 残差趋势$r_K(t)$ 是剥离所有模态后的剩余项,往往对应整体走向。
    rK(t)\displaystyle r_K(t)
  5. 自适应分解模态的层数和形态由数据自身决定,不需要预设趋势或周期函数。
    X(t)=∑k=1KIMFk(t)+rK(t)\displaystyle X(t) = \sum_{k=1}^{K} IMF_k(t) + r_K(t)

X-13ARIMA-SEATS:官方中央厨房的标准流程

如果说上面两位是家常厨具,那 X-13ARIMA-SEATS 就是国家质检总局认证的“中央厨房标准流程”。它由美国人口普查局与西班牙央行联合开发,被各国统计局用于 CPI、GDP、失业率的季节调整——凡是要对外公布的官方数据,都默认用这套流程把关。

X-13 的历史可以追溯到 1960 年代的 X-11,经过 X-12-ARIMA 再到今天的 X-13ARIMA-SEATS。它内部先拟合一个 ARIMA 模型来外推序列两端、修正边缘效应,然后按经典移动平均把趋势和季节拆开,最后 SEATS 模块用信号提取法把不可观测成分分离。这套流程还额外处理两件“调味”:交易日效应(一个月中工作日天数不同)和移动节假日(春节、复活节这类日期不固定的节日)。其中 ARIMA 模型写成:

比起 STL 和 CEEMDAN,X-13 最大的价值是标准化和可解释。它对数据的要求也最严格:月度或季度数据通常至少需要 2-3 年,少于一个完整季节周期就无法分离季节成分;纯随机序列用它反而不适合。但只要你手头是干净的官方统计口径数据,X-13 给出的分解结果可以直接用于发布和决策。正因为是“官方标准流程”,X-13 不像家用漏勺那样随意——它需要足够长的备料时间、标准切配,但产出的每一碗汤都经过质检,可以直接端上决策者的餐桌。

ϕ(B)(1−B)dXt=θ(B)εt\displaystyle \phi(B)(1-B)^d X_t = \theta(B) \varepsilon_t
ARIMA 是 X-13 的“发动机”:用过去的序列值和误差来预测当前值,核心思想是“昨天的汤色推断今天,上次的调味失误这次修正”。
  1. 延迟算子$B$ 是延迟算子,$B X_t = X_{t-1}$,表示“回看一步”。
    B\displaystyle B
  2. 差分阶数$(1-B)^d$ 对序列做 $d$ 次差分,把趋势抹平,像给汤“去浮油”。
    (1−B)d\displaystyle (1-B)^d
  3. 自回归部分$\phi(B)$ 用过去自身的值解释当前值,像用昨天的汤色推断今天。
    ϕ(B)\displaystyle \phi(B)
  4. 移动平均部分$\theta(B) \varepsilon_t$ 用过去的误差修正预测,像根据上次调味不足微调这次。
    θ(B)εt\displaystyle \theta(B) \varepsilon_t
  5. 模型含义整个公式刻画序列在差分后的平稳过程,是 X-13 建模预测的基础。
    ϕ(B)(1−B)dXt=θ(B)εt\displaystyle \phi(B)(1-B)^d X_t = \theta(B) \varepsilon_t

方法对比:三把筛子怎么选

去厨房挑工具,得先看要做什么菜:细网勺适合滤清汤,离心机适合分离悬浊液,中央厨房的流水线适合大批量标准出品。三种分解方法没有绝对的优劣,只有合不合适。

STL 是三兄妹里最灵活的:任意周期的季节都支持,还能通过外循环抵抗异常值,适合电商销量、App 日活跃这类周期稳定、偶有尖峰的数据。CEEMDAN 最“自适应”:不需要预设周期、不怎么挑数据的平稳性,适合气象、金融这类非线性非平稳序列,但也因此每次分解结果会有轻微波动。X-13ARIMA-SEATS 最“官方”:标准统一、能处理交易日和节假日,但要求至少两年的月度或季度数据,适合统计局、央行和大型企业的规范报表。

挑方法时可以看三个维度:一看季节周期是否已知且固定(已知选 STL 或 X-13,未知或变化选 CEEMDAN);二看数据量是否充足(多年月度数据选 X-13,短序列选 STL);三看是否需要官方可比口径(对外发布选 X-13)。工具没有高下,关键在于你能不能说出这锅汤要滤到什么程度。把需求说清楚,筛子自然好选。

实操流程:从一锅汤到三碗清汤

选好筛子之后,真正上手还要按 SOP 走:洗菜、切件、下锅、撇沫、试味——每一步草率不得。分解实操同样有固定步骤。

第一步,数据准备。确认频率(日/周/月/季)、检查缺失值和异常值,确定季节周期长度(周数据周期 7,月度数据周期 12)。第二步,选方法设参数。用 STL 时设定周期、趋势窗口(越大约平滑)、季节窗口(必须为奇数);用 CEEMDAN 时设定噪声幅值和最大迭代次数;用 X-13 时要指定 ARIMA 阶数和回归变量。第三步,跑分解看结果。重点检验残差是否接近白噪声,残差若有明显周期性说明季节周期设错,若有孤立大尖峰说明有外部事件被剥离到了残差里。判断分解质量时,残差应满足:

一锅汤炖到清亮见底、尝不出杂味,才算炖好了;一个序列分解到残差白噪声、不再藏周期,才算拆干净了。把分解当成一门手艺,反复练习参数手感,你就能从“乱炖”进步到“庖丁解牛”。

Rt∼iid(0,σ2)\displaystyle R_t \sim \text{iid}(0, \sigma^2)
残差检验标准:分解后的残差应当近似独立同分布,均值为零、方差恒定、互不相关。就像炖好的汤清亮见底、尝不出杂味一样。
  1. 残差序列$R_t$ 是分解过后剩余的残差成分,是滤完汤渣后剩下的清液。
    Rt\displaystyle R_t
  2. 独立同分布$\text{iid}$ 表示残差彼此独立、服从同一分布,没有隐藏的周期性或趋势。
    iid\displaystyle \text{iid}
  3. 零均值$0$ 表示残差整体不偏不倚,没有系统性偏差,汤底没有残留的“主味”。
    0\displaystyle 0
  4. 恒定方差$\sigma^2$ 表示波动幅度稳定,没有忽大忽小的异常区间。
    σ2\displaystyle \sigma^2
  5. 检验意义残差越接近这个标准,说明分解越充分,可以放心进入预测建模。
    Rt∼iid(0,σ2)\displaystyle R_t \sim \text{iid}(0, \sigma^2)

AI 应用场景

电力负荷预测的数据预处理

阶段:数据预处理

解决的问题:电力负荷受温度周期、工作日/周末、季节变化多重影响,直接建模会被季节性波动干扰,模型难以学到真实趋势和突发事件规律。用 X-13ARIMA-SEATS 先把负荷拆成趋势、季节、残差,再对残差建模捕捉异常事件,预测精度显著提升。

具体案例:某省级电网公司用 X-13ARIMA-SEATS 对过去 5 年的月度用电量做分解,识别出夏季空调负荷的固定贡献(季节成分)与经济增长带来的趋势成分,再结合气温数据预测夏季高峰负荷,将预测误差降低了 18%。

零售销量预测的特征工程

阶段:特征工程

解决的问题:电商平台销量有周内、年内双周期,双十一等大促还会产生脉冲尖峰。用 STL 分解后,残差中的尖峰正好对应大促事件,可以单独构造“促销脉冲”特征,避免事件信号淹没在季节模式中。

具体案例:某连锁超市用 STL(period=7) 分解 SKU 日销量,把“补货量基线”(趋势+季节)和“促销增量”(残差尖峰)分开建模,补货准确率提升,缺货率下降 12%。

交通客流预测的信号分离

阶段:数据预处理

解决的问题:节假日客流暴涨会污染常规预测模型,CEEMDAN 能把高频节假日脉冲从周期波动中自适应剥离,无需人工标注每个节假日。

具体案例:某地铁公司对进站客流用 CEEMDAN 分解,将 IMF1(高频波动)识别为节假日事件信号,与日期特征一起输入 GBDT 模型,节假日当天客流预测平均误差从 22% 降到 8%。

Python 演示

python46 行
import numpy as npimport matplotlib.pyplot as pltfrom statsmodels.tsa.seasonal import STL def generate_demo_data(n=120, seed=42):    rng = np.random.default_rng(seed)    t = np.arange(n)    trend = 0.03 * t + 5    season = 2.0 * np.sin(2 * np.pi * t / 12)    noise = rng.normal(0, 0.4, n)    return t, trend + season + noise def main():    t, y = generate_demo_data()     # 第1步: STL分解, robust=True开启稳健模式    result = STL(y, period=12, robust=True).fit()    trend, season, resid = result.trend, result.seasonal, result.resid     # 第2步: 对趋势做线性外推, 预测未来12个月    k, b = np.polyfit(t, trend, 1)    future_t = np.arange(120, 132)    trend_forecast = k * future_t + b     # 第3步: 季节成分按最近一个周期复制到未来    one_cycle = season[-12:]    season_forecast = np.tile(one_cycle, 2)[:12]     # 第4步: 最终预测 = 未来趋势 + 未来季节    forecast = trend_forecast + season_forecast    print("未来12个月预测值:", np.round(forecast, 2))     fig, axes = plt.subplots(4, 1, figsize=(10, 9))    axes[0].plot(t, y, color="#818CF8")    axes[0].set_title("Original")    axes[1].plot(t, trend, color="#10B981")    axes[1].set_title("Trend")    axes[2].plot(t, season, color="#F43F5E")    axes[2].set_title("Season")    axes[3].plot(t, resid, color="#C7D2E4")    axes[3].set_title("Residual")    plt.tight_layout()    plt.show() if __name__ == "__main__":    main()
目的:演示用 STL 对合成月销量序列做季节性分解,将趋势与季节分别预测后合成未来 12 个月的预测值,体现“分而治之”的分解思想。
  1. result = STL(y, period=12, robust=True).fit()一行完成分解,period 指定季节周期,robust 开启异常值稳健处理
  2. trend, season, resid = result.trend, result.seasonal, result.resid从结果中取出分解后的三成分
  3. np.polyfit(t, trend, 1)对趋势做一阶线性拟合,得到斜率和截距
  4. one_cycle = season[-12:]取最近 12 个月的季节模式作为未来季节的模板
  5. np.tile(one_cycle, 2)[:12]把季节模式复制拼接,再截取未来 12 个月的季节值
  6. forecast = trend_forecast + season_forecast把未来趋势和未来季节相加,完成最终预测

常见误区

误区“残差太小了,直接丢掉就行,反正对预测没用。STL 分解完我只保留趋势和季节,残差就是噪音。”

正解残差虽然小,但藏着异常事件、突变和模型遗漏的信号。就像汤里撒了把盐,盐粒虽小却改变了味道——残差中的孤立尖峰往往正是大促、故障、突发事件的指纹。丢弃残差会让预测模型完全失去对极端值的感知能力。

为何常见:残差占比小、看起来像“垃圾”,初学者容易把“小”等同于“没用”。

误区“STL 不是全自动吗?我把数据丢进去,它自己就能找到周期并分解。”

正解STL 需要人工指定 period 参数(如月度数据设为 12),它不会自动识别周期长度,但能自适应季节模式的缓慢变化。选错 period 会导致分解彻底失败——比如把周期设为 6,季节成分会错把半年当一年。

为何常见:“自动化”三个字让人误以为所有超参数都免调,忽略了周期是需要业务知识判断的关键输入。

误区“CEEMDAN 能自动分出很多层 IMF,层数越多说明信息提取越充分,全保留下来建模最保险。”

正解过多 IMF 会把有效信号拆得过于细碎,出现“过分解”——把本来连贯的模式切成碎片。就像筛面粉,筛子太细会把面粉和麸皮分得过度,反而难以重组。一般关注前几个能量大的 IMF,其余并入残差。

为何常见:“更多”常被等同于“更好”,忽略了分解的粒度要与业务解释性匹配。

误区“X-13ARIMA-SEATS 是官方统计工具,功能最强大,所以任何时间序列丢进去都能分解。”

正解X-13 一般要求至少 2-3 年的月度或季度数据,少于一个完整周期无法估计季节模式;日度或分钟级高频数据需要特殊处理甚至改用其他方法。选工具前先检查数据频率和长度。

为何常见:“官方”标签带来盲目信任,忽略了官方工具的适用前提是对标准口径的周期性数据。

误区“Y = T + S + R 就是分解公式,所有序列都能这样拆,直接套加法模型就行。”

正解当季节波动幅度随着趋势增大而增大时(如夏季销量是冬季的 5 倍,且销量逐年翻倍),加法模型会失效,残差会呈现明显的“喇叭形”波动。此时需要用乘法模型或先取对数再加法分解。

为何常见:教科书先教加法模型,容易成为思维定势,忽略了“季节波动是否随趋势变化”这一关键前提。

面试题

Q1. 季节性分解把时间序列拆成哪三部分?

单选题 · easy

  • A.均值、方差、协方差
  • B.趋势、季节、残差← 正确答案
  • C.输入、隐藏、输出
  • D.训练、验证、测试

答案:B。季节性分解的目标是把观测值拆成趋势 T、季节 S、残差 R 三部分,就像把一锅汤分成汤底、时令菜和零星佐料。均值/方差是统计量,输入/隐藏/输出是神经网络术语,训练/验证/测试是模型评估概念,都与分解无关。

Q2. STL 的核心平滑技术是什么?

单选题 · easy

  • A.深度学习网络
  • B.局部加权回归← 正确答案
  • C.贝叶斯推断
  • D.蒙特卡洛采样

答案:B。STL 使用 Loess(局部加权回归)在滑动窗口内逐点拟合平滑曲线,如同细网漏勺反复过滤汤渣。深度学习、贝叶斯推断、蒙特卡洛采样虽然都是机器学习/统计方法,但不是 STL 的核心机制。

Q3. 分解出三成分后,最合理的预测方式是什么?

单选题 · easy

  • A.直接对原序列建模
  • B.分别预测后再合成← 正确答案
  • C.只使用季节成分
  • D.丢弃全部三成分

答案:B。分解的最终目的是“分而治之”:对趋势做外推、对季节做周期延续、对残差做波动估计,三者合成最终预测。直接对原序列建模等于没分解,只使用季节或丢弃所有成分更是浪费了分解的成果。

Q4. CEEMDAN 相比 EEMD 的关键改进是什么?

单选题 · mid

  • A.减少迭代次数
  • B.消除随机噪声
  • C.消除模态混叠← 正确答案
  • D.加快收敛速度

答案:C。CEEMDAN 在每次筛分时自适应添加噪声,解决了 EEMD 中噪声残留和模态混叠不彻底的问题,分解结果更稳定可复现。它并不是为了减少迭代或加快收敛,而是提高分解质量。

Q5. X-13ARIMA-SEATS 在统计界是什么定位?

单选题 · mid

  • A.深度学习框架
  • B.官方统计标配← 正确答案
  • C.通用编程语言
  • D.数据库管理系统

答案:B。X-13ARIMA-SEATS 由美国人口普查局与西班牙央行联合开发,是各国统计局进行季节调整的官方工具,用于 CPI、GDP 等数据的标准化处理。其他选项是无关的流行词干扰项。

Q6. 以下哪些属于季节性分解方法?

多选题 · mid

  • A.STL 局部加权回归法← 正确答案
  • B.CEEMDAN 自适应分解← 正确答案
  • C.X-13ARIMA 统计分解← 正确答案
  • D.KMeans 无监督聚类法

答案:ABC。STL、CEEMDAN、X-13ARIMA-SEATS 是三种主流季节性分解方法,分别对应灵活型、自适应型、官方标准型。KMeans 是无监督聚类算法,属于非时序分解方法,选它就像拿果汁机去滤高汤。

Q7. STL 的“稳健性”主要靠哪一步实现?

单选题 · mid

  • A.外部循环调整残差权重← 正确答案
  • B.内部循环加快迭代速度
  • C.随机采样降低计算量
  • D.直接删除全部异常点

答案:A。STL 的外循环根据残差大小计算稳健权重,残差大的异常点权重被压低,但不删除数据——这样既抵抗异常值又不丢失信息。内部循环负责分离趋势和季节,与稳健性无关。

Q8. STL 分解后残差出现孤立大尖峰,最可能说明什么?

单选题 · hard

  • A.季节周期识别有误
  • B.存在一次性事件冲击← 正确答案
  • C.趋势项设置过长
  • D.残差必然出现尖峰

答案:B。残差中的孤立尖峰通常表示有外部一次性事件(大促、故障、极端天气)被剥离到了残差里。周期识别错误会产生周期性残差而非孤立尖峰,趋势设置过长会让趋势失真但不会造成孤立尖峰。

Q9. X-13ARIMA-SEATS 的特点包括哪些?

多选题 · hard

  • A.支持交易日效应调整← 正确答案
  • B.处理节假日效应← 正确答案
  • C.仅支持月度季度数据
  • D.完全绕开ARIMA建模

答案:AB。X-13 的独特优势是能调整交易日效应(工作日天数差异)和移动节假日效应(春节、复活节等),这是 STL 和 CEEMDAN 不具备的。它支持多种频率数据且核心就是 ARIMA 建模基础上的信号分解,C 和 D 表述错误。

Q10. 当季节波动幅度随趋势增长而等比扩大时,最佳处理方式是什么?

单选题 · extreme

  • A.直接使用加法模型
  • B.取对数再做加法分解← 正确答案
  • C.丢弃季节成分再预测
  • D.随机抽样降低噪声

答案:B。季节波动随趋势等比扩大,说明数据更接近乘法模型。对数变换可以把乘法变加法:log(Y)=log(T)+log(S)+log(R),之后就能安全套用加法分解。直接加法和丢弃季节都会丢失有用信息,随机抽样与问题无关。