SuperAPI AI 工具集

time-series-analyst

数据与分析

查看项目

更新于 10-15 09:43

技能介绍

Time Series Analyst 是一个面向时间序列数据分析与预测的技能,提供分析时间数据、识别模式并构建预测模型的指导。

用途

该技能用于处理时间序列数据,帮助识别数据中的模式、趋势、季节性和异常,并基于统计方法与机器学习方法进行预测。

主要能力

核心能力包括:

  • 分解:趋势、季节性、残差分析
  • 统计方法:ARIMA、SARIMA、指数平滑
  • 机器学习方法:Prophet、LSTM、基于 Transformer 的模型
  • 异常检测:统计与机器学习方法

时间序列基础

分析前需要评估数据特征,包括平稳性(均值/方差是否恒定,影响方法选择)、季节性(是否存在重复模式,影响模型组件)、趋势(是否存在长期方向,影响差分需求)、频率(采样率,影响聚合选择)和缺失值(是否存在缺口,影响插补需求)。

平稳性检验可使用 Augmented Dickey-Fuller(ADF)检验和 KPSS 检验。ADF 检验的原假设为非平稳,p < 0.05 提示平稳;KPSS 检验的原假设为平稳,p > 0.05 提示平稳。

使序列平稳的方法包括:差分处理趋势、季节性差分、对数变换处理变化的方差,以及 Box-Cox 最优变换。

时间序列分解

经典分解模型包括加法模型(原始 = 趋势 + 季节性 + 残差)和乘法模型(原始 = 趋势 × 季节性 × 残差)。可使用 statsmodels 的 seasonal_decompose 进行经典分解,或使用更稳健的 STL 分解。分解后可分别访问趋势、季节性和残差组件。

统计预测方法

ARIMA 模型选择:ARIMA(p, d, q) 中,p 为自回归阶数(基于 ACF/PACF),d 为差分阶数(基于平稳性),q 为移动平均阶数(基于 ACF)。可使用 pmdarima 的 auto_arima 自动选择参数,或手动指定 ARIMA 模型。

SARIMA 用于季节性数据:SARIMA(p, d, q)(P, D, Q, m) 中,小写为非季节性组件,大写为季节性组件,m 为季节周期。可使用 statsmodels 的 SARIMAX 建模,并获取带置信区间的预测。

指数平滑:可使用 statsmodels 的 ExponentialSmoothing 实现 Holt-Winters 方法(趋势 + 季节性)。

基于机器学习的预测

Facebook Prophet:需要数据包含 'ds' 和 'y' 列。支持年度、周度、日度季节性配置,可添加自定义季节性(如月度)和回归变量(如节假日标志、促销)。

LSTM 用于序列预测:需要准备序列数据,构建包含 LSTM、Dropout 和 Dense 层的模型,使用 adam 优化器和 mse 损失进行编译和训练。

异常检测

统计方法包括:Z-score 方法(阈值默认 3)、IQR 方法(乘数默认 1.5)、滚动统计方法(窗口和阈值可配置)。

Isolation Forest:需要为时间序列进行特征工程(如值、小时、星期几、滚动均值、滚动标准差),使用 contamination 参数配置异常比例,输出 -1 表示异常,1 表示正常。

模型评估

评估指标包括:MAE(平均绝对误差,可解释的误差)、RMSE(均方根误差,惩罚大误差)、MAPE(平均绝对百分比误差)、SMAPE(对称 MAPE,更好地处理零值)。

时间序列交叉验证:可使用 sklearn 的 TimeSeriesSplit 进行交叉验证,按时间顺序划分训练集和测试集。回测模式展示了多个折叠中训练集和测试集的时间顺序划分方式。

参考资料

技能包含以下参考文件:references/arima-guide.md(ARIMA 模型选择与诊断)、references/prophet-tuning.md(Prophet 配置与自定义季节性)、references/anomaly-patterns.md(异常检测技术与阈值)。