ARIMA模型简介

1. 数据平稳性

了解ARIMA模型就要先了解数据的平稳性,样本数据获得的时间序列,在未来一段时间沿着一个“趋势”发展下去,只有具有平稳性的数据才可以做预测

  • 平稳性的数据均值和方差不发生明显变化
    方差越大数据的波动越大

  • 平稳性分为严平稳和弱平稳

    严平稳:严平稳表示的分布不随时间的改变而改变,如:白噪声,无论怎么取,都是期望为0,方差为1;
    弱平稳:期望与相关系数不变,未来某时刻的t值Xt就要依赖于它的过去信息,所以需要依赖性;

2. 差分法

  • 时间序列在t与t-1时刻的差值
fig = plt.figure(figsize=(12, 8))
diff1 = data.diff(1)
diff1.plot()
  • 在一阶差分的基础上进行二阶差分,看数据是否趋于平稳,一般一阶差分后就开始趋于平稳

3. 自回归模型(AR)

  • 描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测

  • 自回归模型必须满足平稳性的要求
    p阶自回归过程的公式定义:

  • 自回归模型的局限性
    自动回归模型是根据自身的历史数据进行预测,数据必须具有平稳性和自相关性,如果自相关系数太小则不宜采用

3.移动平均模型(MA)

  • 移动平均模型关注的是自回归模型中误差项的累加

  • q阶自回归过程的公式定义:

4.差分自回归移动平均模型(ARIMA)

  • AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。

  • 原理:将非平稳时间序列转换为平稳时间序列。然后将因变量仅对它滞后值(阶数)以及随机误差项的现值和滞后值进行回归所建立的模型。

5.ARIMA建模过程

  1. 数据预处理,将数据处理成Series格式
  2. 画图观察数据平稳性,若不平稳,可用差分法或指数平滑法对数据进行平稳化处理
  3. 非白噪声检验
  p_value = acorr_ljungbox(timeseries, lags=1) print (p_value)
  1. 模型定阶
    定阶的方法有ACF PACF 图定阶、信息准则定阶(AIC、BIC、HQIC)、热力图定阶。
    (1)ACF和PACF定阶
    (2)信息准则定阶
    AIC = sm.tsa.arma_order_select_ic(timeseries,\max_ar=6,max_ma=4,ic='aic')['aic_min_order']#BICBIC = sm.tsa.arma_order_select_ic(timeseries,max_ar=6,\max_ma=4,ic='bic')['bic_min_order']#HQICHQIC = sm.tsa.arma_order_select_ic(timeseries,max_ar=6,\max_ma=4,ic='hqic')['hqic_min_order']print('the AIC is{},\nthe BIC is{}\n the HQIC is{}'.format(AIC,BIC,HQIC))

(3)热力图定阶

    p_min = 0q_min = 0p_max = 5q_max = 5d_min = 0d_max = 5# 创建Dataframe,以BIC准则results_aic = pd.DataFrame(index=['AR{}'.format(i) \for i in range(p_min,p_max+1)],\columns=['MA{}'.format(i) for i in range(q_min,q_max+1)])# itertools.product 返回p,q中的元素的笛卡尔积的元组for p,d,q in itertools.product(range(p_min,p_max+1),\range(d_min,d_max+1),range(q_min,q_max+1)):if p==0 and q==0:results_aic.loc['AR{}'.format(p), 'MA{}'.format(q)] = np.nancontinuetry:model = sm.tsa.ARIMA(timeseries, order=(p, d, q))results = model.fit()#返回不同pq下的model的BIC值results_aic.loc['AR{}'.format(p), 'MA{}'.format(q)] = results.aicexcept:continueresults_aic = results_aic[results_aic.columns].astype(float)#print(results_bic)fig, ax = plt.subplots(figsize=(10, 8))ax = sns.heatmap(results_aic,#mask=results_aic.isnull(),ax=ax,annot=True, #将数字显示在热力图上fmt='.2f',)ax.set_title('AIC')plt.show()

时间序列预测---差分自回归移动平均模型(ARIMA模型)相关推荐

  1. ARIMA差分自回归移动平均模型--时间序列预测

    ARIMA差分自回归移动平均模型 1.ARIMA模型理论基础 2.ARIMA建模步骤 3.ARIMA建模实战 3.1 导入模块 3.2 加载数据 3.3 平稳性检验 3.4 单位根检验 3.4 白噪声 ...

  2. 时间序列模型--ARIMA模型

    1. 数据平稳性与差分法 平稳性: 平稳性就是要求经由样本时间序列所得到的拟合曲线,在未来的一段时间内仍然能顺着现有的形态"惯性"的延续下去 平稳性要求,序列的方差和均值不发生明显 ...

  3. 一文搞懂时间序列预测模型(2):ARIMA模型的理论与实践

    本文通过一段时间的长江流量数据集来实战演示ARIMA模型的理论.建模及调参选择过程,其中包括数据准备.随机性.稳定性检验.本文旨在通过实践的操作过程,完成ARIMA模型的分享,相信大家也会通过此文而有 ...

  4. 时间序列预测 | Python实现Prophet、ARIMA、LSTM时间序列数据预测

    时间序列预测 | Python实现Prophet.ARIMA.LSTM时间序列数据预测 目录 时间序列预测 | Python实现Prophet.ARIMA.LSTM时间序列数据预测 数据描述 特征工程 ...

  5. arima 预测模型_预测未来:学习使用Arima模型进行预测

    arima 预测模型 XTS对象 (XTS Objects) If you're not using XTS objects to perform your forecasting in R, the ...

  6. 多元时间序列预测之(一)DA-RNN模型

    文章目录 前言 DA-RNN论文解读 1. 问题定义 2. 模型解读 2.1 输入注意力机制 2.2 编码器 2.3 时间注意力层 2.4 解码器 前言 多元时间序列预测,又称多变量时间预测,指对一个 ...

  7. 时间序列预测——深度好文,ARIMA是最难用的(数据预处理过程不适合工业应用),线性回归模型简单适用,预测趋势很不错,xgboost的话,不太适合趋势预测,如果数据平稳也可以使用。...

    补充:https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-15-276 如果用arima的话,还不如使用随机森 ...

  8. 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...

    原文链接:http://tecdat.cn/?p=21773 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一(点击文末"阅读原文"获取完整代码数据). 视频: ...

  9. 理论加实践,终于把时间序列预测ARIMA模型讲明白了

    上篇我们一起学习了一些关于时间序列预测的知识.而本文将通过一段时间内电力负荷波动的数据集来实战演示完整的ARIMA模型的建模及参数选择过程,其中包括数据准备.随机性.稳定性检验.本文旨在实践中学习,在 ...

最新文章

  1. python编程题-100道Python编程题及答案(一)
  2. Java之Character类
  3. 用viewport进行布局,将页面分成了三分,我想实现弹出的window窗口在整个viewport上...
  4. 去除img之间的空白
  5. HTML-唯美二次元百度引导页面源码
  6. 第一章:React入门
  7. 导入,导出字符和数字的转换
  8. mysql 列换行 表设计 设计_MySql行转列、列转行
  9. Linux常用的挂载远程目录方案使用有感
  10. 网页内容若使用gzip压缩--获得页面源码
  11. 开源大数据周刊-第22期
  12. 摘抄和总结--确保搞砸人工智能项目的十种方法
  13. S7-200SMART案例分析——伺服选型(一)
  14. 第3章 Stata描述统计
  15. Jsp内置对象实验报告
  16. 【运动控制】梯形加减速 三角加减速 柔性S型加减速曲线的认识
  17. 我裂了,换领导后,竟然每天都要写日报
  18. 为什么开发效率这么低,时间都去哪了?
  19. 从苏炳添的学术论文中,看看如何写论文
  20. 李小璐JAVA,李小璐和马蓉为什么都会婚内出轨?

热门文章

  1. R语言polygon函数绘制多边形实战
  2. 广东省普通高中计算机会考,广东会考网
  3. postman 接口测试工具介绍
  4. R语言包_manipulate
  5. python中tk窗口刷新_80 行 Python 代码写个图形计算器
  6. 一、稀疏数组的实际应用和代码实现
  7. 飞机大战html游戏全代码js、jquery操作
  8. 五分钟理解yield在python中的简单用法,让你不再迷惑
  9. Python常用函数与技巧总结(一)
  10. openGL 入门 2--顶点数组对象 VAO 和 缓存对象 VBO