跳转至

2.时间序列预测模型#

小结#

常见的预测方式大致分为如下几种:

时间序列模型#

  • 简单方法: 直接平均法,滑动平均法,加权平均法,指数平滑法,多倍数指数平滑法,线性回归
  • 传统时间序列预测: ARIMA
  • Prophet(facebook的时间序列工具库)

监督学习-回归问题#

将时间序列问题转为回归问题,比如xgboost等

深度学习#

比如:
- LSTM
- LSTNet: 适用于自相关图表现出有明显周期的时间序列,否则与传统方法相当。LSTNet-Pytorch、LSTNet-Keras、LSTNet-Gluon(Mxnet)。
- TPA-LSTM: 改进了attention机制,侧重选择关键变量,而非选择时间步;实验效果说是对周期不明显的时间序列也能有不错效果。TPA-LSTM-Tensorflow

2.1.AR,MA,ARIMA系列#

建模前提: 平稳序列!!!! (去除周期、trend等趋势)
回顾一下时间序列建模流程:

  1. 平稳性检验:
  2. 判断序列是否平稳 如果不平稳,则需对序列进行变换(一般用差分);
  3. 判断平稳序列是否为白噪音 如平稳序列为白噪音,则不满足建模条件
  4. 模型估计:
  5. 判断p,q的值 由历史的文章得知,可通过自相关系数(ACF)及偏自相关系数(PACF)决定,AR(p)出现p阶截尾,MA(q)出现q阶截尾 ;
  6. 信息准则 如果ACF与PACF图看不出来明确的截尾,则采用信息准则进行判断,一般采用BICAIC
  7. 二者相结合
  8. 模型残差检验
  9. 残差是否是平均值为0且方差为常数的正态分布(正态性)
  10. 检验残差的相关性(相关性)

ARMA#

ARIMA(p,d,q)#

  • ARIMA是一种基于时间序列历史值和历史值上的预测误差来对当前做预测的模型。
  • ARIMA整合了自回归项AR和滑动平均项MA。
  • ARIMA可以建模任何存在一定规律的非季节性时间序列。
  • 如果时间序列具有季节性,则需要使用SARIMA(Seasonal ARIMA)建模,后续会介绍

SARIMA#

参考资料:
https://cloud.tencent.com/developer/article/1646121

2.GARCH系列#

https://arch.readthedocs.io/en/latest/univariate/introduction.html
-w681

python包 arch.arch_model
源代码 https://github.com/bashtage/arch/blob/master/arch/univariate/base.py

VAR#

https://zhuanlan.zhihu.com/p/87116384

学习系列

https://github.com/fitzgerald0/time_series_data_mining

https://blog.csdn.net/fitzgerald0/article/details/100823231

3.模型效果评估#

3.1 时间序列预测效果评估方式#

3.2 评估指标#

参考资料#

https://zhuanlan.zhihu.com/p/436684747