《R语言数据高…" /> 《R语言数据高…" />
绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
R语言时间序列分析(四):时滞图、自相关、白噪声
2019-10-18 17:03:22

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


时滞图

时滞图虽然以前就有所了解,但是没有觉得它效用特别大,但是可能是使用较少所以感悟不够深。fpp2包中的gglagplot可以完成这个任务。我们先画出来,再进行解释:

library(fpp2) 
beer2 <- window(ausbeer, start=1992)
gglagplot(beer2)

图中,X轴表示一个数据点在t时刻的数值,而Y轴表示这个时间点在前lag个时刻的数值,左上图lag就是1。可以看到中间有一条等值线,代表该时刻与前lag个时刻的值相等的情况。如果很多值都在等值线附近,说明t与t-lag时刻情况类似,可能存在长度为lag的周期。

本来我认为这种画散点图也能够说明,但是这里的点按照时间先后顺序分别连在了一起,但是却不知道哪里是前面的时刻,哪里是后面的时刻,因此我就提了建议(adding arrows to gglagplot · Issue #7 · robjhyndman/fpp2-package),后面这里的可视化可能会加上箭头。不过主要的作用还是看,多长时间可能存在自相关的关系,从而识别周期的长度。

自相关

同样一个指标,如果时间靠的比较近,那么它们的数值也可能相近。一个序列,与它的延时序列(t-n时刻的序列),所存在的相关关系,称之为自相关,一般使用相关系数来计算。

举一个简单的例子,基本包中可以用acf函数来对上面提到的beer2变量进行绘图:

acf(beer2)

如果想直接获得数值,把参数plot设置为F即可:

acf(beer2,plot = F)

Autocorrelations of series ‘beer2’, by lag

  0.00   0.25   0.50   0.75   1.00   1.25   1.50   1.75   2.00   2.25   2.50   2.75   3.00   3.25 
 1.000 -0.102 -0.657 -0.060  0.869 -0.089 -0.635 -0.054  0.832 -0.108 -0.574 -0.055  0.774 -0.080 
  3.50   3.75   4.00   4.25   4.50 
-0.568 -0.066  0.706 -0.065 -0.528 

可以看到,时滞为0的时候,两个序列的相关系数为1,即完全正相关。通过图片也可以看出来,延迟2或4的时候,相关性都非常大,存在很强的季节性特征。事实上,这是一份澳大利亚啤酒产量的数据,我们直接对这个数据进行可视化:

autoplot(beer2)

具有明显的季节特征。不过在fpp2包中,相对应来可视化ACF的函数是ggAcf,我们看看效果:

ggAcf(beer2)

但是显示时滞多长的数据是可以调节的,可以通过调整lag.max来进行设置。

白噪声

如果一个序列是完全随机的,就称之为白噪声,白噪声中已经没有更多有价值的信息可以提取。R语言中可以使用rnorm函数来生成一个随机序列,我们可以看看随机序列的样子:

set.seed(30)
y <- ts(rnorm(50))
autoplot(y) + ggtitle("White noise")

白噪声的话,数据的前后之间不存在任何相关性:

ggAcf(y)

参考资料:

Forecasting: Principles and Practice

分享好友

分享这个小栈给你的朋友们,一起进步吧。

R语言
创建时间:2020-06-15 11:46:51
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的工具。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~