2019独角兽企业重金招聘Python工程师标准>>>

#差分运算

#差分示例

#ARIMA模型

#Box-Jenkins建模流程

#案例

实际上我们经常会遇到一些非平稳时间序列,往往会呈现明显的趋势性或周期性,可以通过适当差分等手段,将它化为平稳时间序列,再采用ARMA模型建模

  • 差分运算

差分运算公式

一阶差分 

二阶差分 

d 阶差分  ,其中 B 表示后移算子,

季节差分 

D阶季节差分  

差分示例

有时候差分还是不能够让序列平稳,那么我就可以使用对数转换等方式,然后再进行差分

  • ARIMA模型

  • 差分方式的选择

序列蕴含着显著的线性趋势,一阶差分就可以实现趋势平稳

序列蕴含着曲线趋势,通常低阶(二阶或三阶)差分可以提取出曲线趋势的影响,有时则需要对序列做非线性变换

对于蕴含着固定周期的序列进行步长为周期长度s的差分运算(季节差分),可以较好地提取周期信息

  • Box-Jenkins建模流程

模型识别

自相关系数 偏

自相关系数

模型估计

最小化残差平方和

最小化AIC等等

模型验证

一些诊断方法会被用于检测模型的有效性

残差白噪声检验,模型系数显著性检验

用验证集数据来验证

模型预测

模型确定,用于预测

案例

> plot(tsdata)  #做时序图观察,是否为平稳的序列,其实可以直接adf.test() 检测,如果显著则满足平稳,如下图

> log_tsdata<-log(tsdata)  #因为数据变化幅度大,恐直接差分可能无法平稳,所以非线性变换,如进行log变换
> plot.ts(log_tsdata) #再绘制图形如下,发现变化幅度减小了

> log_tsdata_diff1=diff(log_tsdata,lag=12,differences=1)#lay=12表示差分周期(步长)12,differences=1表示一阶
> par(mfrow=c(3,1))
> plot.ts(log_tsdata_diff1)
> acf(log_tsdata_diff1)  #绘制 acf、pacf确定p、q的值
> pacf(log_tsdata_diff1)
> adfTest(log_tsdata_diff1,type='nc') #平稳性检验Title:Augmented Dickey-Fuller TestTest Results:PARAMETER:Lag Order: 1STATISTIC:Dickey-Fuller: -1.3524P VALUE:0.1828    #不显著,结果并不平稳,在进行处理一次Description:Wed Oct 18 09:47:53 2017 by user: Xu> log_tsdata_diff2=diff(log_tsdata_diff1,lag=1,differences=1)#步长为1的普通差分
> par(mfrow=c(3,1))
> plot.ts(log_tsdata_diff2)
> acf(log_tsdata_diff2)
> pacf(log_tsdata_diff2)
> adfTest(log_tsdata_diff2,type='nc')Title:Augmented Dickey-Fuller TestTest Results:PARAMETER:Lag Order: 1STATISTIC:Dickey-Fuller: -9.3424P VALUE:0.01   #显著表示平稳
 #建立模型并评价模型
> arima.mod=arima(log(tsdata), c(0, 1, 1),seasonal = list(order = c(0, 1, 1), period = 12)) #preiod周期为12#第一个c(0,1,1)表示一阶普通差分#第二个seasonal = list(order = c(0, 1, 1), period = 12)表示按照周期12的步长,进行季节性差分
> arima.modCall:
arima(x = log(tsdata), order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))Coefficients:ma1     sma1-0.4018  -0.5569
s.e.   0.0896   0.0731sigma^2 estimated as 0.001348:  log likelihood = 244.7,  aic = -483.4> resid=arima.mod$residuals  #模型进行评价
> Box.test(resid)Box-Pierce testdata:  resid
X-squared = 0.03, df = 1, p-value = 0.8624> par(mfrow=c(1,1))
> qqnorm(resid)
> qqline(resid)
#预测数据
> library(forecast)
> arima.pred<-forecast(arima.mod,h=5*12) #预测5年的目标
> plot.forecast(arima.pred)
> ts.plot(tsdata,exp(arima.pred$mean), lty = c(1,3))
> AIC(arima(log(tsdata), c(0, 1, 1),seasonal = list(order = c(0, 1, 1), period = 12)))#通过AIC判断那个模型参数最好,可手动设置c(p,d,q)中的参数进行尝试,选取AIC最小的
[1] -483.3991
> AIC(arima(log(tsdata), c(0, 1, 2),seasonal = list(order = c(0, 1, 1), period = 12)))
[1] -481.6165

自动选择模型

> arima.new<-auto.arima(log(tsdata))#直接通过auto.arima来判断参数最合适
> arima.new
Series: log(tsdata)
ARIMA(0,1,1)(0,1,1)[12]                    Coefficients:ma1     sma1-0.4018  -0.5569
s.e.   0.0896   0.0731sigma^2 estimated as 0.001371:  log likelihood=244.7
AIC=-483.4   AICc=-483.21   BIC=-474.77

转载于:https://my.oschina.net/u/1785519/blog/1572619

非平稳时间序列及建模相关推荐

  1. python 白噪声检验-利用python实现平稳时间序列的建模方式

    假如某个观察值序列通过序列预处理可以判定为平稳非白噪声序列,就可以利用ARMA模型对该序列进行建模.建模的基本步骤如下: (1)求出该观察值序列的样本自相关系数(ACF)和样本偏自相关系数(PACF) ...

  2. python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列

    简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...

  3. 数据挖掘算法之时间序列算法(平稳时间序列模型,AR(p),MA(q),(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)学习笔记梳理

    时间序列算法 一.时间序列的预处理 二.平稳时间序列模型 (一).自回归模型AR( p ) (二).移动平均模型MA(q) (三).自回归移动平均模型ARMA(p,q) 三.非平稳时间序列模型 四.确 ...

  4. 手把手教你用Python处理非平稳时间序列(附代码)

    作者:AISHWARYA SINGH 翻译:陈之炎 校对:丁楠雅 本文约3600字,建议阅读10分钟. 本文将重点介绍时间序列数据的平稳性检验方法. 简介 预测一个家庭未来三个月的用电量,估计特定时期 ...

  5. python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列(附代码)...

    本文约3600字,建议阅读10分钟. 本文将重点介绍时间序列数据的平稳性检验方法. 简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问 ...

  6. 手把手教你用Python处理非平稳时间序列

    简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...

  7. 通过R语言实现平稳时间序列的建模--基础(ARMA模型)

    目录 1. 建模流程 2. 序列平稳性检验和纯随机性检验 2.1 图检验 2.2 单位根检验 3. 模型选择 ​ 4. 参数估计 5. 模型检验 5.1 模型显著性检验 5.2 参数显著性检验 6. ...

  8. python平稳性检验_Python中非平稳时间序列的处理

    以下应用有什么共同点:预测未来三个月的一个家庭的电力消耗:估计在一定时期内道路的交通量:以及预测一个股票在纽约证券交易所上交易的价格. 以上都涉及时间序列数据的概念!如果没有"时间" ...

  9. 为什么序列存在单位根是非平稳时间序列?

    作者:五雷 链接:https://www.zhihu.com/question/22385598/answer/21221607 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  10. 时间序列研(part5)--四种典型的非平稳随机过程

    学习笔记,仅供参考,有错必纠 文章目录 时间序列 四种典型的非平稳随机过程 随机游走过程 随机趋势非平稳过程或差分平稳过程.有漂移项的非平稳过程 趋势平稳过程或退势平稳过程 确定性趋势非平稳过程 看图 ...

最新文章

  1. spring-boot2
  2. Visdom数据可视化工具绘制Loss曲线
  3. mysql 预留一个自定义字段_mysql-预留字段
  4. vue js前端根据所需参数生成二维码并下载
  5. 购物商城Web开发第二十三天
  6. Java中大数值是什么?数值想存多大存多大
  7. GCAlloc 问题一则
  8. verilog全加器、全减器和乘法器及溢出判断
  9. linux环境下,集群中Hadoop版本更换
  10. 4.4 数据的寻址方式(立即寻址、直接寻址、间接寻址、寄存器寻址、相对地址)
  11. java 实现邮箱验证注册
  12. 【CGAL_多面体】3D多面体表面
  13. 深度学习为图片人物换装【python代码教程】 1
  14. DW1000学习之路(三)--------DW1000的中断处理问题
  15. 图书馆信息管理系统文档
  16. tensorflow入门教程(二十六)人脸识别(上)
  17. 你手机里有哪些堪称神器的 App?
  18. mysql gis 空间分析_【ArcGIS操作】4 空间分析篇
  19. 音频合并的软件有哪些?这几个软件分享给你
  20. 解决FLASHCS5代码提示无效的方法_…

热门文章

  1. Himall商城枚举帮助类EnumHelper(3)
  2. Tomcat8zip版本安装与配置
  3. Ue4升级chrome内核
  4. ofd文件的查看、打印、下载、上传
  5. c语言程序基础设计题,《C语言程序设计基础》习题集(含答案)
  6. java完成登录页面+连接数据库
  7. cad数字签名制作制作_电影制作部门按数字变化
  8. dojo实现省份地市级联报错(二)
  9. 水系图一般在哪里找得到_厦大赵金保团队EnSM:新型聚阴离子锌盐水凝胶电解质实现具有高择优取向沉积的超稳定、高可逆水系锌金属负极...
  10. QImage、QPainter绘图