首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

时间序列分析这件小事(六)--非平稳时间序列与差分

1.非平稳时间序列

之前我们说明了怎么样的时间序列是序列平稳的,但是世界并不是那么美好,很多时间序列都不是平稳序列,所以这里就要求我们做一些处理了。

首先我们来看一下非平稳时间序列长什么样。在AR模型中,只要自回归系数都绝对值都是小于1的,那么序列就是平稳的,所以这样一个序列,自回归系数等于1,就是不平稳的序列了。

yt = yt-1 + c

c是一个服从正态分布的噪音。

代码语言:javascript
复制
#example 10
set.seed(12345)
ut = rnorm(50,0,1.5)
xt = cumsum(ut)
plot(xt,type = 'o');abline(h = 0)

其中,cumsum是一个计算累计数的函数。比如cumsum(c(1,2,3,4,5))=(1,1+2,1+2+3,1+2+3+4.....)=(1,3,6,10......)

这就是对非平稳序列的一个直观的感受了。

2.非平稳序列的平稳方法--差分

非平稳序列往往一次到两次差分之后,就会变成平稳序列。什么是差分呢?就是后一时间点的值减去当前时间点,也就是yt-yt-1。

代码语言:javascript
复制
#example 11
x = 1:10
diff(x,d=1)
diff(x,d=2)

这里,我们对1,2,3,4,5......这个序列做了两次差分,都是后一个数减去前一个数。

值得注意的一点是,每一次差分之后,都会少一个序列值。

代码语言:javascript
复制
#example 12
plot(diff(xt,d = 1),type = 'o');abline(h = 0)
plot(diff(xt,d = 2),type = 'o');abline(h = 0)

我们用之前的序列试一下水,可以看到,一阶差分和二阶差分后,看上去都平稳了呢!

3.判断序列是否平稳

前面我们用肉眼看了序列的平稳性,但是作为一个时间序列分析者,竟然用眼睛主观判断,这有点不合逻辑。很幸运的是,我们根据单位根过程(有兴趣的读者查找相关资料),可以进行假设检验,譬如DF与ADF检验。

adf检验函数包含在tseries这个包中,使用前我们要先引用它。

代码语言:javascript
复制
#example 13
adf.test(xt)
adf.test(diff(xt))
adf.test(diff(xt,d=2))

大家注意看哦,当没有做差分的时候,p-value是0.47+,而备择假设是stationary,也就是平稳时间序列,所以零假设就是非平稳时间序列。p-value>0.05的时候,在95%的置信度下,我们是不能拒绝原假设的,所以我们不能说xt原序列是时序平稳的,但是对于一阶差分和二阶差分就是可以的了。

下一篇
举报
领券