【开发者必看】用Python选对时间序列模型:SARIMAX、VARMAX实战指南
时间序列模型选择指南,按模型类型、适用场景、选择标准分类,帮助快速决策:
一、模型分类与选择标准
二、模型选择决策流程图
-
确定数据特征
- 平稳性:
- 非平稳 → 选择ARIMA/SARIMA/SARIMAX
- 平稳 → 选择AR/MA/ARMA
- 季节性:
- 存在季节性 → SARIMA/SARIMAX/HWES
- 无季节性 → ARIMA/AR/MA
- 多变量关系:
- 存在多变量交互 → VAR/VARMA/VARMAX
- 无多变量关系 → 单变量模型(ARIMA/SARIMA/SES/HWES)
- 外生变量影响:
- 存在 → SARIMAX/VARMAX
- 无 → 其他模型
- 平稳性:
-
确定预测目标
- 短期预测:SES/AR/MA/HWES(简单高效)
- 中长期预测:ARIMA/SARIMA/VAR/VARMA(复杂但稳定)
- 长期预测(依赖外生变量):SARIMAX/VARMAX(需外生变量预测)
-
资源限制
- 计算资源有限:SES/AR/MA(低计算量)
- 计算资源充足:VARMAX/VARMA(高精度但耗时)
-
解释性需求
- 高解释性:AR/ARIMA(线性模型,参数易解释)
- 性能优先:VARMAX/HWES(复杂模型,需验证)
三、模型对比表(关键指标)
四、典型应用场景
-
零售销售预测
- 无外生变量:SARIMA(季节性强)
- 有促销数据:SARIMAX(外生变量=促销活动)
- 多产品关联:VARMAX(多变量交互)
-
金融市场收益率
- 单变量:ARIMA(波动率建模)
- 多变量:VARMA(资产间动态关系)
- 加入宏观经济指标:VARMAX(外生变量=GDP/利率)
-
能源需求预测
- 季节性+趋势:HWES(短期)或SARIMA(中长期)
- 多变量(温度、电价):VARMAX
-
制造业设备维护
- 简单故障预测:SES(短期)
- 复杂系统故障:VAR(多变量动态分析)
五、模型选择建议
- 新手入门:从SES/HWES开始(简单直观),逐步过渡到ARIMA/SARIMA。
- 复杂场景:优先尝试VARMAX(多变量+外生变量),但需验证数据平稳性和参数稳定性。
- 资源受限:使用SES/AR/MA(低计算量),避免高维模型。
- 高解释性需求:选择AR/ARIMA(参数意义明确),避免非线性模型(如VARMAX)。
六、模型验证与评估
- 残差检验:
- 白噪声检验(Ljung-Box)→ 残差无自相关
- 正态性检验(Shapiro-Wilk)→ 残差服从正态分布
- 预测误差指标:
- MAE(平均绝对误差)→ 稳定性评估
- MAPE(平均绝对百分比误差)→ 相对误差评估
- 模型选择准则:
- AIC/BIC → 选择信息准则更优的模型
- 交叉验证 → 评估模型泛化能力(尤其对VARMAX)
七、工具推荐
- Python库:
statsmodels
(ARIMA/SARIMA/SES/HWES)pmdarima
(自动ARIMA)VAR
(statsmodels.tsa.vector_ar
)
- 可视化工具:
plotly
(动态预测结果展示)matplotlib
(残差分析图)