4、时间序列基础:时间序列的构成(趋势、季节、周期、随机)、平稳性与差分

活动需求预测中,我们面对的数据绝大多数是按时间顺序记录的观测值序列,例如每日活动报名人数、每周场馆使用率、每月会员活跃度等。这类数据统称为时间序列(Time Series)。与普通横截面数据不同,时间序列的相邻观测值之间存在先后依赖关系,这种顺序性决定了我们不能简单套用均值或回归模型,而必须先理解其内部结构。本章将系统拆解时间序列的四大构成要素,并重点讲解平稳性这一核心概念及差分处理方法,为后续使用移动平均、指数平滑、ARIMA 等预测模型打下坚实基础。

时间序列构成与平稳性处理框架 原始时间序列 Y(t) 趋势 T(t) 长期方向 季节 S(t) 固定周期 周期 C(t) 非固定循环 随机 R(t) 不可控噪声 Y = T + S + C + R 加法模型(常用) 平稳性检验 均值/方差恒定 差分处理 d阶差分 步骤1:可视化分解 观察趋势/季节/异常 步骤2:ADF检验 p<0.05 平稳 步骤3:差分/变换 消除趋势/方差稳定 建模 ARIMA等 核心:将非平稳序列转化为平稳序列,是时间序列建模的前提 活动需求预测 · 第4章

上图展示了时间序列分析的整体框架:原始序列可分解为趋势、季节、周期和随机四个部分,通过加法模型组合后,我们需要判断序列是否平稳,若不平稳则通过差分等手段进行处理,最终才能进入模型构建阶段。下面逐一展开。

4.1 时间序列的四大构成要素

任何时间序列都可以视为四种成分的叠加或耦合。理解这些成分,是选择预测模型的第一步。

4.1.1 趋势(Trend)

趋势是序列在较长时期内呈现的持续上升、下降或持平的方向性变化。它反映了活动需求的长期演变规律,例如某健身工作室的月均团课报名人数在过去三年中逐年递增,这背后可能是品牌知名度提升、周边社区人口增长或健康意识增强等因素。趋势可以是线性的(如每年增加 500 人次),也可以是非线性的(如指数增长或对数增长)。识别趋势的常用方法包括移动平均平滑、时间散点图观察以及线性回归拟合。

4.1.2 季节性(Seasonality)

季节性是指序列在固定时间间隔内重复出现的规律性波动,周期长度固定且已知。对于活动运营而言,季节性非常常见:工作日晚间与周末的客流差异、寒暑假与开学季的培训需求变化、年末与年初的预算消耗节奏等。季节性的关键特征是周期固定(如日、周、月、季度),且波动幅度通常相对稳定。例如,某博物馆的参观人数在每周六达到峰值、每周一为低谷,这就是以“周”为单位的季节性。

4.1.3 周期性(Cyclicality)

周期性与季节性容易混淆,但两者有本质区别:周期性波动的周期长度不固定,通常与经济或行业大环境相关,持续时间较长(如 2-5 年)。例如,会展行业的兴衰周期受宏观经济景气度影响,繁荣期可能持续 2 年,衰退期可能持续 1.5 年,没有固定频率。在活动需求预测中,周期性往往难以精确建模,通常需要结合外部经济指标或行业指数进行辅助判断。

4.1.4 随机性(Irregular / Random)

随机性(又称不规则波动)是序列中无法被趋势、季节和周期解释的剩余部分,由突发事件、天气变化、政策调整、个体行为差异等偶然因素引起。随机成分没有规律可循,在预测模型中通常被视为“噪声”。例如,一场突如其来的暴雨可能导致某户外音乐节当天到场人数骤降 30%,这种波动无法提前通过历史数据预测。

加法模型 vs 乘法模型:当四种成分相互独立、波动幅度不随趋势变化时,使用加法模型 Y = T + S + C + R;当季节波动幅度随趋势水平成比例变化(如旺季波动大、淡季波动小)时,使用乘法模型 Y = T × S × C × R。实际业务中,活动数据常呈现乘法特征,可先做对数变换再按加法模型处理。
构成要素 周期特征 可预测性 活动需求示例 处理方式
趋势 T 无固定周期 高(长期) 会员基数逐年增长 回归拟合、差分
季节 S 固定周期(日/周/月/季) 高(短期) 周末客流高于工作日 季节指数、虚拟变量
周期 C 不固定(2-5年) 中 行业景气循环 外部指标辅助
随机 R 无规律 低 天气、突发事件 作为误差项处理

4.2 平稳性:时间序列建模的前提

平稳性(Stationarity)是时间序列分析中最核心的概念之一。一个严格平稳的序列要求其统计性质(均值、方差、自协方差)不随时间变化。但在实际应用中,我们通常使用弱平稳(宽平稳)的定义:序列的均值恒定、方差恒定,且任意两个时点之间的协方差只依赖于时间间隔而非具体时间点。

4.2.1 为什么需要平稳性

绝大多数时间序列预测模型(如 ARIMA、指数平滑的某些形式)都建立在平稳性假设之上。原因在于:如果序列的均值或方差随时间漂移,模型无法从历史数据中提取稳定的规律,预测结果将不可靠。例如,若某活动报名人数从年初的日均 100 人增长到年末的日均 300 人,直接用历史均值预测下个月就会产生系统性偏差。平稳性保证了模型可以“以史为鉴”,因为过去的数据分布与未来的数据分布是一致的。

4.2.2 平稳性的判断方法

判断序列是否平稳,通常采用以下三种方式:

  1. 时序图观察法:绘制序列折线图,观察均值是否围绕某一常数上下波动、波动幅度是否大致恒定。若序列呈现明显上升/下降趋势或波动幅度随时间扩大/缩小,则非平稳。
  2. 自相关图(ACF)检验:平稳序列的自相关系数通常随滞后阶数增加而快速衰减至零附近;非平稳序列的自相关系数衰减缓慢,且长期保持较高水平。
  3. 单位根检验(ADF 检验):这是最常用的统计检验方法。ADF 检验的原假设为“序列存在单位根(非平稳)”,若检验统计量对应的 p 值小于显著性水平(如 0.05),则拒绝原假设,认为序列平稳。
实操提示:在 Python 中可使用 statsmodels.tsa.stattools.adfuller() 进行 ADF 检验。当 p 值 > 0.05 时,序列非平稳,需要进一步处理。

4.3 差分:让非平稳序列“变平稳”的核心工具

差分(Differencing)是消除趋势和部分季节性最直接有效的方法。一阶差分计算相邻两个观测值之差:

Y'(t) = Y(t) - Y(t-1)

差分后的序列 Y'(t) 表示当前值相对于上一期的变化量。如果原始序列存在线性趋势,一阶差分后趋势基本被消除;若存在二次趋势,则可能需要二阶差分。对于季节性序列,可以使用季节差分:Y'(t) = Y(t) - Y(t-s),其中 s 为季节周期长度(如周数据 s=7,月数据 s=12)。

4.3.1 差分阶数的选择

差分阶数并非越多越好。过度差分会导致信息损失和方差膨胀。一般原则是:能用一阶差分解决就不用二阶,差分后需再次进行 ADF 检验确认平稳性。在实际操作中,可通过观察差分后序列的自相关图:若 ACF 在滞后 1 阶后迅速截尾,说明差分阶数合适;若 ACF 仍呈现缓慢衰减,则可能需要增加差分阶数。

4.3.2 差分与方差稳定

差分主要解决均值非平稳问题。若序列的方差也随时间变化(如波动幅度随均值增大而增大),可先进行对数变换或 Box-Cox 变换,再做差分。例如,某电商大促期间订单量波动远大于平日,直接差分后残差方差仍不均匀,此时先取对数再差分效果更佳。

常见误区:不要对已经平稳的序列盲目差分。平稳序列的差分会导致“过度差分”,引入不必要的自相关结构,反而降低模型精度。务必先检验、后差分。

4.4 案例拆解:某连锁咖啡品牌门店周度销售额预测

为帮助理解上述概念,我们以一个实际场景进行完整演练。

背景与目标:某连锁咖啡品牌在华东地区拥有 120 家门店,运营团队希望预测未来 4 周的周度总销售额,以便安排原料采购和兼职排班。历史数据为过去 104 周(两年)的周度销售额(单位:万元)。

初始观察:绘制时序图后发现:销售额整体呈缓慢上升趋势(从平均 850 万元/周增长到 950 万元/周);存在明显的以 52 周为周期的季节性(冬季热饮旺季销售额高于夏季);个别周(如春节前后)出现异常波动。

分析过程:

  1. 分解序列:使用 STL 分解(Seasonal-Trend decomposition using Loess)将序列拆分为趋势、季节和残差三部分。趋势项显示年均增长约 5%,季节项显示冬季(第 45-52 周)销售额比年均值高 8%-12%,夏季(第 20-30 周)低 6%-10%。
  2. 平稳性检验:对原始序列进行 ADF 检验,p 值为 0.32(>0.05),无法拒绝非平稳原假设。观察 ACF 图,自相关系数在滞后 1-10 阶均显著为正且衰减缓慢,确认非平稳。
  3. 差分处理:先做一阶差分(消除趋势),再次 ADF 检验 p 值为 0.01,序列已平稳。但 ACF 在滞后 52 阶处仍有显著峰值,提示存在季节性,因此再做 52 阶季节差分。最终序列通过平稳性检验。
  4. 建模与验证:基于差分后的序列拟合 SARIMA(1,1,1)(1,1,1)52 模型,使用前 96 周数据训练,后 8 周数据验证。预测结果平均百分比误差(MAPE)为 4.2%,优于未做差分的简单移动平均模型(MAPE 为 9.8%)。

结果与复盘:差分处理是模型成功的关键。若跳过差分直接建模,模型会将趋势和季节性误认为随机波动,导致预测系统性偏低。此外,春节周的异常值在建模前被识别并单独处理(作为哑变量),避免了异常值对差分计算的干扰。

步骤 操作 关键指标 结论
1 时序图 + STL 分解 趋势项斜率、季节幅度 存在趋势和 52 周季节
2 ADF 检验 p=0.32 非平稳
3 一阶差分 + ADF p=0.01 趋势消除,季节残留
4 季节差分 + ADF p<0.01 序列平稳
5 SARIMA 建模 MAPE=4.2% 预测精度达标

4.5 常见误区与总结复盘

在活动需求预测实践中,时间序列基础环节常出现以下问题:

  • 混淆季节性与周期性:将不固定周期的经济循环误认为季节性,导致季节差分阶数设置错误。记住:季节性周期固定,周期性不固定。
  • 忽略方差非平稳:只关注均值平稳而忽略方差异质性。当序列波动幅度随时间变化时,应先做对数变换或 Box-Cox 变换。
  • 过度差分:对原本平稳的序列进行差分,引入了不必要的负自相关,降低了预测精度。每次差分后都应进行平稳性检验。
  • 忽视异常值:极端值(如促销活动、突发事件)会严重影响差分计算和模型参数估计。建议在分解前先识别并处理异常值。
本章核心要点:① 时间序列 = 趋势 + 季节 + 周期 + 随机;② 平稳性是建模前提,均值/方差恒定且自相关结构稳定;③ 差分是消除趋势和季节性的利器,但需谨慎选择阶数;④ 先分解、再检验、后差分、终建模,是标准操作流程。