【Python算法】--非平稳时间序列分析

1.非平稳时间序列分析

上节介绍了对平稳时间序列进行分析的方法。实际上,在自然界中绝大部分序列都是非平稳的。因而对非平稳序列的分析更普遍、更重要,创造出来的分析方法也更多。

对非平稳时间序列的分析方法可以分为确定性因素分解的时序分析和随机时序分析两大类。

确定性因素分解的方法把所有序列的变化都归结为4个因素(长期趋势、季节变动、循环变动和随机波动)的综合影响,其中长期趋势和季节变动的规律性信息通常比较容易提取,而由随机因素导致的波动则非常难确定和分析,对随机信息浪费严重,会导致模型拟合精度不够理想。

随机时序分析法的发展就是为了弥补确定性肉素分解方法的不足。根据时间序列的不同特点,随机时序分析可以建立的模型有ARIMA模型、残差自回归模型、季节模型、异方差模型等。 本节重点介绍使用ARIMA模型对非平稳时间序列进行建模的方法。

2.差分运算

1.p阶差分

相距一期的两个序列值之间的减法运算称为一阶差分运算。

2.步差分

相距k期的两个序列值之间的减法运算称为k步差分运算。

3.ARIMA模型

差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后会显示出平稳序列的性质,这时称这个非平稳序列为差分平稳序列。对差分平稳序列可以使用 ARMA 模型进行拟合。ARIMA 模型的实质就是差分运算与 ARMA 模型的组合,掌握了 ARMA 模型的建模方法和步骤以后,对序列建立 ARIMA 模型是比较简单的。

差分平稳时间序列建模步骤如图所示:

例:就餐饮企业而言,经常会碰到如下问题: 由于餐饮行业是生产和销售同时进行的,因此销售预测对于餐饮企业十分必要。如何基于菜品历史销售数据,做好餐饮销售预测,以便减少莱品脱销现象和避免因备料不足而造成的生产延误,从而减少菜品生产等待时间,提供给客户更优质的服务,同时可以减少安全库存量,做到生产准时制,降低物流成本。

餐饮销售预测可以看作是基于时间序列的短期数据预测,预测对象为具体菜品销售量。 常用按时间顺序排列的一组随机变量X1, X2, … , Xt来表示一个随机事件的时间序列,简记为{Xt};用x1,x2, … , xn或{xt , t = 1,2, … , n}表示该随机序列的 n 个有序观察值,称之为序列长度为 n 的观察值序列。 称之为序列长度为n的观察值序列。

应用上述理论,可对2015/1/1~2015/2/6某餐厅的销售数据进行建模。

具体数据如图所示:

1.检验序列的平衡性

①原始序列的时序图:

时序图显示该序列具有明显的单调递增趋势,可以判断为是非平稳序列。

② 原始序列的自相关图:

自相关图显示自相关系数长期大于零,说明序列间具有很强的长期相关性。

③ 原始序列的单位根检验,如图所示:

单位根检验统计量对应的p值显著大于0.05,最终将该序列判断为非平稳序列(非平稳序列一定不是白噪声序列)。

2.对一阶差分后的序列再次做平稳性判断

① 一阶差分之后序列的时序图:

② 一阶差分之后序列的自相关图:

一阶差分之后序列的单位根检验,如图所示:

结果显示,一阶差分之后的序列的时序图在均值附近比较平稳的波动、自相关图有很强的短期相关性、单位根检p值小于0.05,所以一阶差分之后的序列是平稳序列。

对一阶差分后的序列做自噪声检验,如图所示:

输出的p值远小于0.05,所以一阶差分之后的序列是平稳非白噪声序列。

3.对一阶差分之后的平稳非白噪声序列拟合ARMA模型

下面进行模型定阶。模型定阶就是确定p和q。 第一种方法:人为识别。经过一节差分后自相关图显示出一阶截尾,偏自相关图显示出拖尾性,所以可以考虑用MA(1)模型拟合一阶差分后的序列,即对原始序列建立 ARIMA(0,1,1)模型。

第二种方法:相对最优模型识别。 计算ARMA(p,q),当p和q均小于等于3的所有组合的BIC信息量,取其中BIC信息

量达到最小的模型阶数。计算完成BIC矩阵如下:432.068472   422.510082  426.088911     426.595507

423.628276   426.073601  NaN            NaN

426.774824   427.395787  430.709154     NaN

430.317524   NaN         NaN            436.478109

p值为0、q 值为1时最小BIC 值为:430.1374。p、q 定阶完成。 用AR(1)模型拟合一阶差分后的序列,即对原始序列建立ARIMA(0,1,1)模型。虽然两种方法建立的模型是一样的,但模型是非唯一的,可以检验 ARIMA(1,1,0)和 ARIMA(1,1,1),这两个模型也能通过检验。

4.对一阶差分后的序列拟合AR(1)模型进行分析 模型检验。残差为白噪声序列,p 值为:0.627016。 参数检验和参数估计如图所示:

5.ARIMA模型预测 应用 ARIMA(0,1,1)对表某餐厅的销售数据做为期5天的预测,结果如图所示:

需要说明的是,利用模型向前预测的时期越长,预测误差将会越大,这是时间预测的典型特点。

python处理时间序列非平稳_【Python算法】--非平稳时间序列分析相关推荐

  1. 线性回归算法数学原理_线性回归算法-非数学家的高级数学

    线性回归算法数学原理 内部AI (Inside AI) Linear regression is one of the most popular algorithms used in differen ...

  2. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  3. 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集

    python教程,求一套比较好的python教程 好不好主要先看你自己,理解能力样,有没有接触过编程,有没础,这很重要: 看教程,能不能先给你建立起知识体系框架,许多教程一上来就直接给你灌输知识很让人 ...

  4. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境

    一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...

  5. python小软件制作教程_[Python]手把手教程:Python制作番茄钟

    这篇文章是根据Udacity的免费课程 编程基础:Python所做的笔记,适合零基础学习Python 我们先了解这个番茄钟的概念,就是每隔一段固定的时间就提醒你休息一下,可能是播放一段音乐, 弹出一个 ...

  6. python如何检验显著性差异_[Python] 如何证明两组样本有显著性差异(t-test假设检验) | 学步园...

    现有两组样本数据,假如它们分别基于两套不同的方法,或者测于不同的设备,又或是出自两个人之手,如何证明它们有或没有显著性差别呢?当然可以拿个Excel表把数据画个图,然后找一堆人来投票,看觉得差不多还是 ...

  7. python方差分析模型的预测结果中endog表示_python时间序列分析

    题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下.在此也要特别 ...

  8. 为什么印度盛产码农_印度农产品价格的时间序列分析

    为什么印度盛产码农 Agriculture is at the center of Indian economy and any major change in the sector leads to ...

  9. python任务调度系统面试题_经典算法题 :任务调度算法(美团校招笔试题)

    小贴士:返回上一级搜索"算法题"挑战更多题目. 备注: 1.不定期将从留言区选出认真答题的1名朋友,赠与书籍<算法详解(卷1)>一本(兑奖方法跟获奖者私下沟通) 请留言 ...

  10. python图片截取斜四边形_【算法趣题】Q16 3根绳子折成四边形

    引言 [算法趣题]是来自图灵程序设计丛书绝云译的<程序员的算法趣题>,书中是用Ruby实现的.这里是用python来实现. 问题描述 假设分别3根长度相同的绳子摆成3个四边形.其中2根摆成 ...

最新文章

  1. 比特币交易追踪溯源技术介绍
  2. Spring的7种事务传播行为类型
  3. vue2移动端使用vee-validate进行表单验证
  4. research button control usage in WebIDE
  5. cass怎么把块打散命令_分解cass高程点即属性块
  6. .net分页控件webdiyer:AspNetPager
  7. js基础知识温习:构造函数与原型
  8. html 插入本地视频,win7系统中Word文档插入本地视频的方法【图文】
  9. mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)...
  10. Oracle--替代触发器(INSTEAD OF)
  11. 盘点8个高效方法提高睾酮水平
  12. 接收上一页提交参数的书包pPage
  13. addEventListener 的event事件列表
  14. 1056: 幸运数字 Java
  15. 【WordPress报错】cURL error 52: Empty reply from server(http_request_failed)
  16. tkMapper 简记
  17. 【HDOJ】1493 QQpet exploratory park
  18. soul源码阅读 启动soul应用
  19. vue: Invalid prop: type check failed for prop “action“. Expected String with valu
  20. ctf刷题 攻防世界【流量分析1】

热门文章

  1. php 到处excel 乱码,php 导出excel乱码怎么办
  2. slickedit背景颜色和当前关键字高亮
  3. 秦时明月更新了?青春回来了
  4. List转JSON格式方法
  5. 如果IE浏览器是IE11以下版本跳转到升级页面
  6. KALI 2020 软件集成清单——逆向工程(七)
  7. rx560d linux 图形设计,RX560D与560区别对比:RX 560D和RX 560哪个好
  8. 在Windows上安装FFmpeg程序
  9. 10分钟教你从零开始python_10分钟教你从零开始学python入门
  10. 商务与经济统计++原书第12版+[(美)安德森著][机械工业出版社][2015.07][515页][13854037]第一章读书笔记