时间序列时域分析
时域分析的核心是围绕时间序列数据(按时间先后排列的数据),从“时间维度”提取数据的特征(如趋势、周期、关联性、异常等)。其方法体系可按“分析目标”分为几大类,每类包含具体的分析技术和工具,以下是完整的分类与说明:
一、描述性时域分析(基础:观察数据基本特征)
这类分析是时域分析的“第一步”,目的是直观呈现数据的表层特征,为后续深入分析(如趋势、周期)奠定基础,核心是“用统计量或图形描述数据”。
1. 核心目标
快速掌握数据的“基本规律”:如数据的集中程度、波动大小、是否有极端值等。
2. 常用方法
-
时域图(时间序列图):
最直观的工具——横轴为“时间”(如日、月、年),纵轴为“数据值”(如销量、股价),直接绘制数据随时间的变化曲线。
例:绘制某超市2024年每日客流量曲线,可快速发现“周末客流量高于工作日”“春节期间客流量骤降”等表层规律。 -
基础统计量分析:
通过量化指标描述数据的统计特征,常用指标包括:- 集中趋势:均值(数据的平均水平,如“月均销量1000件”)、中位数(避免极端值干扰,如“月销量中位数980件”);
- 离散程度:方差/标准差(数据的波动大小,如“销量标准差150件”,值越大波动越剧烈)、极差(最大值-最小值,如“日客流量极差500人”);
- 分布特征:分位数(如“90%的日销量低于1200件”)、偏度(判断数据是否对称,如“股价收益偏度为负,说明下跌幅度大于上涨幅度”)。
二、趋势分析(核心:提取长期变化方向)
这类分析聚焦于数据在“长期时间尺度”上的整体变化趋势,过滤短期随机波动(如日常噪声、突发异常),是时域分析中最常用的类型之一。
1. 核心目标
判断数据是“上升”“下降”“平稳”还是“非线性变化”(如先增后稳、周期性上升)。
2. 常用方法
- 平滑法:通过“平均”或“加权”消除短期波动,凸显趋势:
- 移动平均(MA):取连续(n)个数据的平均值(如3日移动平均、12月移动平均),(n)越大平滑效果越强;
- 指数平滑(ES):对近期数据赋予更高权重(如α=0.3,近期数据权重0.3,历史数据权重递减),适合非线性趋势(如增长放缓的产品销量)。
- 拟合方法:用数学函数拟合数据,量化趋势:
- 线性回归:用直线(y=ax+b)拟合,通过斜率(a)判断趋势((a>0)上升,(a<0)下降);
- 非线性拟合:用多项式(如(y=ax2+bx+c))、指数函数(如(y=ae{bx}))拟合非线性趋势(如“用户增长初期快速上升,后期趋于平稳”)。
3. 实例
分析某新能源汽车品牌2019-2024年的年销量,用“5年移动平均”平滑后,发现销量从2019年的5万辆逐步上升至2024年的30万辆,线性回归斜率(a=5),说明“年均增长5万辆”的长期趋势。
三、周期性与季节性分析(核心:识别重复波动规律)
很多时间序列会随“固定时间间隔”重复波动(如季节、周度、月度),这类分析的目的是提取“周期性特征”,区分“趋势”和“周期波动”。
1. 核心目标
- 周期性:数据按“固定间隔”重复(如经济周期3-5年、设备运行周期12小时);
- 季节性:与“自然季节”或“人为周期”相关的固定波动(如夏季冰淇淋销量高、周末外卖订单多)。
2. 常用方法
-
自相关分析(ACF):
通过“自相关系数(ACF)”检测周期——若滞后期(k=T)(如(k=12)个月、(k=7)天)时,ACF值显著为正(超出置信区间),说明数据存在周期为(T)的波动。
例:某服装店的月销量ACF图中,(k=12)时ACF=0.8(强正相关),说明存在“12个月的年度季节性”(每年12月销量高,2月销量低)。 -
季节分解法:
将时间序列拆分为3个部分:趋势项(长期变化)+ 季节项(周期性波动)+ 残差项(随机噪声),常用方法包括:- STL分解(基于局部加权回归的季节分解):适合非线性趋势和不规则周期;
- X-12-ARIMA分解:常用于经济数据(如GDP、CPI)的季节性调整。
例:将某电商平台的日订单量分解后,“趋势项”显示订单量逐年上升,“季节项”显示每周六订单量最高(周度周期),“残差项”为随机波动(如突发促销的异常值)。
四、自相关与互相关分析(核心:衡量时间关联性)
这类分析聚焦于“数据在不同时间点的关联性”,分为“同一序列的自相关”和“不同序列的互相关”两类。
1. 自相关分析(ACF与PACF)
- 自相关函数(ACF):衡量“当前时刻(t)的数据”与“滞后(k)期数据((t-k))”的整体相关性(如今天股价与昨天、前天股价的关联);
- 偏自相关函数(PACF):排除“中间滞后期(1~k-1)”的干扰,衡量“(t)与(t-k)的直接相关性”,常用于AR(自回归)模型的阶数识别(如PACF在(k=2)时截尾,说明适合AR(2)模型)。
例:某城市的日降雨量ACF图中,(k=1)时ACF=0.6(正相关,说明“今天下雨,明天更可能下雨”),(k=7)时ACF≈0(无相关,说明“本周与上周降雨量无关联”)。
2. 互相关分析(CCF)
- 互相关函数(CCF):衡量“两个不同时间序列”在不同滞后期的关联性(如“气温”与“冰淇淋销量”、“广告投入”与“产品销售额”)。
例:计算“日最高气温”与“冰淇淋销量”的CCF,发现当“气温滞后0期”(即当天气温)时,CCF=0.9(强正相关),说明“当天气温越高,销量越高”,可用于销量预测(用当天气温预估当天销量)。
五、平稳性与非平稳性分析(核心:验证数据建模前提)
很多时域建模方法(如ARMA、ARIMA)要求数据满足“平稳性”(即均值、方差不随时间变化,自协方差仅与滞后期有关),这类分析的目的是判断数据是否平稳,若不平稳则进行转换。
1. 核心目标
区分“平稳序列”(如每日心率数据)和“非平稳序列”(如股价、GDP,均值随时间上升),并将非平稳序列转换为平稳序列(如差分、对数变换)。
2. 常用方法
- 图形判断:观察时域图(平稳序列波动围绕固定均值,非平稳序列均值随时间变化)、ACF图(平稳序列ACF快速衰减至0,非平稳序列ACF缓慢衰减);
- 统计检验:通过假设检验判断平稳性,常用方法包括:
- ADF检验(增广迪基-富勒检验):原假设“序列非平稳”,若p值<0.05则拒绝原假设,认为序列平稳;
- PP检验(菲利普斯-佩伦检验):适用于存在异方差的序列。
例:某股票的日收盘价是“非平稳序列”(均值随时间上升),对其进行“一阶差分”(当天收盘价-前一天收盘价)后,ADF检验p值=0.02<0.05,转换为平稳序列,可用于后续ARIMA建模。
六、异常值与突变点检测(核心:识别数据中的“异常波动”)
时间序列中常存在“异常值”(如设备故障导致的突发数据飙升)或“突变点”(如政策调整导致的数据趋势突然改变),这类分析的目的是定位异常,排除干扰或预警风险。
1. 核心目标
区分“随机噪声”和“有意义的异常”(如故障、突发事件),或识别“趋势突然改变的时间点”(如2020年疫情导致的消费数据突变)。
2. 常用方法
- 统计方法:
- 3σ原则:若数据超出“均值±3×标准差”,判定为异常值(适用于正态分布数据);
- 滑动窗口法:计算滑动窗口内的均值/方差,若当前数据与窗口均值差异过大,判定为异常(如用7天窗口分析日销量,某一天销量是窗口均值的3倍,判定为异常)。
- 模型方法:
- CUSUM检验(累积和检验):通过累积数据与均值的偏差,检测“突变点”(如某工厂的产品合格率从99%突然降至90%,CUSUM曲线在突变点处显著上升);
- 基于ARIMA的残差检验:用ARIMA模型拟合数据,若残差(实际值-预测值)超出置信区间,判定为异常值(如用ARIMA预测电网负荷,某时刻残差超出±2σ,对应突发用电高峰)。
3. 实例
某工厂的设备振动数据中,2024年5月10日的振动值突然从均值5mm/s飙升至20mm/s(超出3σ范围),通过异常检测定位该时间点,排查后发现是设备轴承磨损,及时维修避免故障。
七、时域建模与预测(核心:利用时域特征预测未来)
这是时域分析的“最终应用”——基于前面提取的趋势、周期、自相关等特征,建立数学模型,预测未来数据走势。
1. 核心目标
利用历史时间序列数据,预测未来短期或长期的数值(如预测下周销量、明年GDP增速)。
2. 常用模型
- AR模型(自回归模型):基于“数据的自相关性”,用历史(p)期数据预测当前数据(如AR(2):用前2期销量预测当期销量);
- MA模型(移动平均模型):基于“历史预测误差”,用前(q)期误差预测当前数据;
- ARMA模型(自回归移动平均模型):结合AR和MA,适用于平稳序列;
- ARIMA模型(差分自回归移动平均模型):对非平稳序列进行差分转换后,用ARMA模型预测(如股价、销量等非平稳数据常用ARIMA( p,d,q ));
- SARIMA模型(季节性ARIMA模型):在ARIMA基础上加入“季节项”,适用于有季节性的序列(如月度零售数据常用SARIMA)。
3. 实例
某奶茶店用2023年1-12月的月销量数据(有12个月季节性),建立SARIMA(1,1,1)(1,1,1)12模型,预测2024年1月销量为8000杯(实际销量8200杯,误差2.5%),为备货提供依据。
总结:时域分析的方法体系框架
分析类别 | 核心目标 | 常用方法/工具 | 典型应用场景 |
---|---|---|---|
描述性时域分析 | 呈现数据基本统计特征与表层规律 | 时域图、均值/标准差、分位数 | 数据初步探索 |
趋势分析 | 提取长期变化方向 | 移动平均、指数平滑、线性/非线性拟合 | 判断业务增长/下降趋势 |
周期性与季节性分析 | 识别固定间隔的重复波动 | ACF、STL分解、X-12-ARIMA | 零售销量季节备货、经济周期分析 |
自相关与互相关分析 | 衡量时间关联性(同一/不同序列) | ACF、PACF、CCF | 模型阶数识别、变量关联分析 |
平稳性与非平稳性分析 | 验证建模前提,转换非平稳序列 | ADF检验、PP检验、差分/对数变换 | ARIMA建模前的数据预处理 |
异常值与突变点检测 | 定位异常波动或趋势突变点 | 3σ原则、CUSUM检验、ARIMA残差检验 | 设备故障预警、数据异常排查 |
时域建模与预测 | 利用历史特征预测未来数据 | AR、MA、ARMA、ARIMA、SARIMA | 销量预测、股价短期预测、负荷预测 |
综上,时域分析是一个“从描述到深入、从特征提取到应用预测”的完整体系,所有方法均围绕“时间维度”展开,核心是挖掘数据随时间变化的内在规律,解决实际场景中的“趋势判断、周期识别、异常预警、未来预测”问题。
奶茶店月度销量SARIMA建模与预测完整案例
一、业务背景与目标
某连锁奶茶品牌(以下简称“XX奶茶”)在2023年通过线下门店扩张和新品推广,销量逐步增长,但面临“备货失衡”问题——夏季因备货不足导致爆款产品售罄,冬季因备货过多导致原料过期浪费。为解决这一问题,品牌计划通过时域建模预测月度销量,为2024年的原料采购、库存管理提供数据支撑,核心目标是:基于2023年1-12月的历史销量数据,预测2024年1月销量,确保备货误差控制在5%以内。
二、步骤1:数据准备与预处理
1.1 数据收集
首先整理XX奶茶2023年1-12月的全部门店月度总销量(单位:杯),数据来源于门店POS系统与库存管理系统,确保数据真实、连续(无断档),原始数据如下:
月份(2023) | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
销量(杯) | 5800 | 5200 | 6300 | 7100 | 7800 | 9500 | 10200 | 9800 | 8500 | 8200 | 7500 | 6800 |
1.2 数据预处理
- 缺失值检查:2023年1-12月数据完整,无缺失值(若存在缺失,可通过“线性插值法”或“移动平均法”补全);
- 异常值检测:用“3σ原则”验证——计算销量均值(7650杯)、标准差(1580杯),均值±3σ范围为(7650-4740, 7650+4740)即(2910, 12390),所有月份销量均在范围内,无异常值(若存在异常,如某月因设备故障销量骤降,可标记为“特殊事件”,暂不剔除,避免影响季节性规律);
- 数据格式转换:将“月份-销量”数据转换为时间序列格式(索引为“2023-01”“2023-02”…“2023-12”,值为销量),便于后续建模工具(如Python的
pandas
库)处理。
三、步骤2:数据探索性分析(EDA)——识别趋势与季节性
时域建模的核心是先挖掘数据规律,因此需通过可视化与统计方法分析销量的趋势性和季节性:
3.1 趋势分析
绘制2023年1-12月销量“时间序列图”(横轴为月份,纵轴为销量),观察到两个特征:
- 短期波动:2月(春节假期门店停业2天)销量最低(5200杯),7月(夏季高温+学生假期)销量最高(10200杯);
- 长期趋势:从1月(5800杯)到7月(10200杯)呈上升趋势,7月后逐步回落至12月(6800杯),整体呈现“先升后降”的年度波动,但全年均值(7650杯)较1月(5800杯)仍有增长,说明品牌整体呈“小幅扩张趋势”。
3.2 季节性分析
通过“自相关函数(ACF)图”判断季节性:
- 横轴为“滞后期k”(1-15个月),纵轴为ACF值(范围[-1,1]),标注±1.96/√n(n=12,置信区间≈±0.566);
- 观察到:滞后期k=12时,ACF值=0.82(远超置信区间),说明“2023年1月销量”与“假设的2022年1月销量”(虽无数据,但规律可推)高度正相关;k=6时,ACF值=-0.75(负相关),说明“夏季销量”与“冬季销量”反向波动;
- 结论:销量存在12个月的强季节性(符合奶茶消费规律:夏季解渴需求高,冬季需求低),需用“季节性时间序列模型(SARIMA)”而非普通ARIMA模型。
四、步骤3:平稳性检验与数据转换
SARIMA模型的前提是“数据平稳”(均值、方差不随时间变化,自协方差仅与滞后期有关),需先检验原始数据的平稳性:
4.1 原始数据平稳性检验(ADF检验)
使用“增广迪基-富勒检验(ADF检验)”,原假设为“序列非平稳”,检验结果:
- ADF统计量:-1.85,p值=0.35(大于0.05);
- 结论:无法拒绝原假设,原始数据非平稳,需通过“差分”转换为平稳序列。
4.2 差分转换(关键步骤)
SARIMA模型的“差分”分为“非季节差分(d)”和“季节差分(D)”:
- 一阶非季节差分:计算“当期销量-前一期销量”,消除短期趋势(如1月差分=5800-无(设为0),2月差分=5200-5800=-600,…,12月差分=6800-7500=-700);
- 一阶季节差分(周期s=12):对“一阶非季节差分后的数据”,再计算“当期差分-12期前差分”(因季节性周期为12个月),消除年度季节性;
- 再次平稳性检验:对“一阶非季节+一阶季节差分后的数据”做ADF检验,结果为:ADF统计量=-3.92,p值=0.002(小于0.05);
- 结论:差分后数据平稳,确定SARIMA模型的“差分参数”为d=1(非季节差分阶数)、D=1(季节差分阶数)、s=12(季节周期)。
五、步骤4:模型识别——确定SARIMA参数(p,q,P,Q)
SARIMA模型的完整形式为SARIMA(p,d,q)(P,D,Q)s
,其中:
- (p,q):非季节部分的“自回归阶数(p)”和“移动平均阶数(q)”;
- (P,Q):季节部分的“自回归阶数(P)”和“移动平均阶数(Q)”;
- 已确定d=1、D=1、s=12,需通过“ACF图”和“偏自相关函数(PACF)图”确定(p,q,P,Q):
5.1 非季节部分(p,q)识别
观察“差分后数据的ACF/PACF图”:
- ACF图:在滞后期k=1时,ACF值=0.65(超出置信区间),k=2时ACF值=0.12(落入置信区间)——ACF在k=1阶截尾,提示q=1;
- PACF图:在滞后期k=1时,PACF值=0.72(超出置信区间),k=2时PACF值=0.08(落入置信区间)——PACF在k=1阶截尾,提示p=1;
- 结论:非季节部分参数为p=1、q=1。
5.2 季节部分(P,Q)识别
观察“差分后数据的ACF/PACF图”中“季节滞后期(k=12,24…)”:
- ACF图:在k=12时,ACF值=0.58(超出置信区间),k=24时无数据(仅12个月数据)——季节ACF在k=12阶截尾,提示Q=1;
- PACF图:在k=12时,PACF值=0.63(超出置信区间),k=24时无数据——季节PACF在k=12阶截尾,提示P=1;
- 结论:季节部分参数为P=1、Q=1。
最终确定模型为:SARIMA(1,1,1)(1,1,1)12。
六、步骤5:模型拟合与残差检验
6.1 模型拟合
使用Python的statsmodels.tsa.statespace.sarimax.SARIMAX
库,以2023年1-12月销量为训练数据,拟合SARIMA(1,1,1)(1,1,1)12
模型,核心代码逻辑(简化):
import pandas as pd
from statsmodels.tsa.statespace.sarimax import SARIMAX# 加载数据(time_series为2023年1-12月销量时间序列)
model = SARIMAX(time_series, order=(1,1,1), seasonal_order=(1,1,1,12))
result = model.fit(disp=False) # disp=False隐藏迭代日志
拟合后输出模型关键参数(如自回归系数、移动平均系数),确保系数显著(p值<0.05),此处模型系数均通过显著性检验,拟合效果初步合格。
6.2 残差检验(验证模型有效性)
模型的“残差”是“实际销量-模型拟合销量”,若残差为“白噪声”(无自相关性、平稳),说明模型已提取所有规律,无遗漏信息:
- 残差ACF图:所有滞后期的ACF值均落入置信区间,无显著自相关;
- 残差ADF检验:ADF统计量=-4.21,p值=0.001(<0.05),残差平稳;
- 残差正态性检验(Shapiro检验):p值=0.38(>0.05),残差符合正态分布;
- 结论:残差为白噪声,模型拟合效果良好,可用于预测。
七、步骤6:销量预测与误差评估
7.1 预测2024年1月销量
用拟合好的模型预测“2024年1月销量”,调用result.get_forecast(steps=1)
函数(steps=1表示预测1期),得到预测结果:
- 点预测值(最可能的销量):8000杯;
- 95%置信区间:[7500, 8500]杯(表示有95%的概率,实际销量在7500-8500杯之间)。
7.2 实际销量对比与误差计算
2024年1月结束后,统计实际销量为8200杯,计算预测误差:
- 绝对误差=|预测值-实际值|=|8000-8200|=200杯;
- 相对误差(百分比误差)=(绝对误差/实际值)×100%=(200/8200)×100%≈2.5%;
- 误差评估:2.5%<5%(预设目标),且实际销量(8200杯)落在95%置信区间内,预测结果可靠。
八、步骤7:业务应用与模型迭代
8.1 备货决策落地
根据预测结果,XX奶茶制定2024年1月备货方案:
- 基础备货量:8000杯(点预测值);
- 弹性备货量:额外准备200杯原料(应对实际销量超预期的情况),总备货量控制在8200杯左右;
- 结果:1月未出现缺货或原料过期,库存周转率提升15%,减少浪费成本约3000元。
8.2 模型迭代优化
为提升后续预测准确性,计划:
- 数据扩充:加入“气温”“促销活动”“新品上市”等外部变量(如夏季气温每升高1℃,销量增加50杯),升级为“SARIMAX模型”(带外部变量的SARIMA);
- 滚动更新:每月结束后,将新的实际销量加入训练数据,重新拟合模型,调整参数(如2024年2月预测时,用2023年1月-2024年1月共13个月数据建模);
- 误差监控:建立“误差预警机制”,若某月度预测误差超过5%,分析原因(如突发疫情、竞品促销),更新模型假设。
九、案例总结
本案例通过“数据准备→探索分析→平稳性处理→模型识别→拟合检验→预测应用”的完整流程,验证了SARIMA模型在季节性时间序列预测中的有效性。核心亮点在于:
- 精准捕捉“12个月季节性”,避免普通模型忽略季节规律导致的预测偏差;
- 严格的残差检验确保模型无遗漏信息,预测误差可控;
- 紧密结合业务需求,将预测结果直接转化为备货决策,解决实际痛点。
该流程可复用于其他季节性行业(如冰淇淋、羽绒服)的销量预测,只需根据行业特点调整“季节周期s”(如冰淇淋s=6,半年周期;羽绒服s=12,年度周期)即可。