时间序列笔记-ADF检验

2019-08-02  本文已影响0人  新云旧雨

笔记说明

本次笔记是我在自己实践时间序列分析时学到的知识点。
主要从应用角度介绍ADF检验而不涉及ADF检验原理,用到的R包为tseries。

判断序列的平稳性

时间序列的平稳性是ARIMA模型的重要假设。如果实际碰到的原始数据并不满足平稳性,则可以通过差分、log等数据变换等等手段将原始数据转化成平稳序列再进行后续分析。而首先我们要能判断给定时间序列是否是平稳的。
最常见的判断方法是图检验法,也就是通过做时序图来判断时间序列的平稳性,如果从时序图上看起来数据的均值、方差等没有随时间变化而变化则可以认为时间序列是平稳的。
图检验法带有很强的主观性。还可以用ADF检验来判断时间序列是否平稳。

ADF检验

ADF(Augmented Dickey-Fuller)检验可用于验证时间序列的平稳性假设。R中,用tseries包的adf.test()函数可以实现ADF检验。如果检验结果具有统计学意义则可以认为序列满足平稳性。

实例

以我手头正在做的数据为例:



光看时序图其实不太好说是否平稳,接下来用ADF检验:(train为数据名)

adf.test(train)

输出如下:

Augmented Dickey-Fuller Test

data: train
Dickey-Fuller = -2.7529, Lag order = 3, p-value = 0.2704
alternative hypothesis: stationary

结果中特意表明了备择假设是序列是平稳的,ADF检验结果没有统计学意义意味着序列是不平稳的。

对原数据进行差分,再次检验:

d_train <- diff(train)
plot(d_train)
adf.test(d_train[-1])

这里我解释一下第三行代码:adf.test()函数的输入值是不能有缺失值的,而我们进行差分后第一项为缺失,因此我用d_train[-1]去除了差分结果的第一项缺失值。
检验结果:

Augmented Dickey-Fuller Test

data: d_train[-1]
Dickey-Fuller = -6.1777, Lag order = 3, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(d_train[-1]) : p-value smaller than printed p-value

结果显示P<0.01因此差分后的数据可以认为是平稳的。

最后我们看一下差分前后的变化:

#差分前后训练集图
par(mfrow = c(2,1))
tsplot(train,ylab="原始数据",xlab="时间(年)",ylim=c(0,3.5))
tsplot(diff(train),ylab="差分后数据",xlab="时间(年)",ylim=c(-1.75,1.75))
上一篇下一篇

猜你喜欢

热点阅读