传统统计模型
传统统计模型是时序分析中最基础、应用最广泛的模型类型,具有较强的可解释性和数学理论基础。这类模型主要基于历史数据的统计特性进行预测。
ARIMA模型
ARIMA (AutoRegressive Integrated Moving Average) 是一种综合了自回归(AR)、差分(I)和移动平均(MA)的模型,适合处理无季节性的平稳时间序列。
- AR部分:当前值与历史值的线性组合
- I部分:通过差分使时间序列平稳化
- MA部分:当前值与历史误差项的线性组合
from statsmodels.tsa.arima.model import ARIMA
# (p,d,q)分别是AR阶数、差分次数和MA阶数
model = ARIMA(df['value'], order=(2,1,2))
results = model.fit()
forecast = results.forecast(steps=30)
SARIMA模型
SARIMA (Seasonal ARIMA) 在ARIMA基础上增加了季节性组件,适合处理具有明显周期性的时间序列。
from statsmodels.tsa.statespace.sarimax import SARIMAX
# (p,d,q)(P,D,Q,s)添加了季节性参数
model = SARIMAX(df['value'],
order=(1,1,1),
seasonal_order=(1,1,1,12))
results = model.fit()
forecast = results.forecast(steps=30)
Holt-Winters模型
Holt-Winters指数平滑法适合处理具有趋势和季节性的短周期业务数据。该方法包括三个平滑参数:水平项、趋势项和季节项。
from statsmodels.tsa.holtwinters import ExponentialSmoothing
model = ExponentialSmoothing(
df['value'],
trend='add', # 'add'或'mul'趋势
seasonal='add', # 'add'或'mul'季节性
seasonal_periods=7 # 季节周期
)
results = model.fit()
forecast = results.forecast(30)
适用场景与限制
-
适用场景:
- 数据量较小但有明显模式
- 需要强可解释性的业务指标
- 短期预测需求(如7-30天)
- 具有明显季节性的指标(如每周、每月周期)
-
限制:
- 难以处理非线性关系
- 无法直接使用外部变量(如天气、促销等)
- 对长期预测准确率下降较快
- 需要相对平稳的时间序列
模型选择与参数调优
-
确定参数:可使用AIC、BIC准则或网格搜索优化参数
import pmdarima as pm auto_arima = pm.auto_arima(df['value'], seasonal=True, m=7) print(auto_arima.summary())
-
交叉验证:使用时间序列交叉验证评估模型稳定性
与其他模块的关系
传统统计模型通常需要时序分析-数据预处理与趋势识别中的平稳化和季节性检测作为前置步骤。与时序分析-机器学习模型相比,传统模型更关注时间序列内部模式而非外部特征。在很多实践中,会将传统模型与其他模型组合,形成时序分析-混合方法,以获得更好的预测效果。在时序分析-应用场景中,传统模型尤其适合周期性明显的业务预测。