在对时间序列做预测前,我们要对数据进行一系列检验,主要是检验数据的稳定性和随机性(白噪声检验),本文主要介绍ADF检验和Ljung-Box检验
ADF检验
ADF检验即单位根检验是指检验序列中是否存在单位根,因为存在单位根就是非平稳时间序列了。单位根就是指单位根过程,可以证明,序列中存在单位根过程就不平稳,会使回归分析中存在伪回归。
下面给出ADF检验的python代码
from statsmodels.tsa.stattools import adfuller
import pandas as pd
import numpy as np
data = pd.Series([151.0, 188.46, 199.38, 219.75, 241.55, 262.58, 328.22, 396.26, 442.04, 517.77, 626.52, 717.08, 824.38, 913.38, 1088.39, 1325.83, 1700.92, 2109.38, 2499.77, 2856.47, 3114.02, 3229.29, 3545.39, 3880.53, 4212.82, 4757.45, 5633.24, 6590.19, 7617.47, 9333.4, 11328.92, 12961.1, 15967.61],index=np.arange(1978,2011))
re=adfuller(data)
print(re)
(-0.04391111656553118, 0.9547464774274733, 10, 22, {'1%': -3.769732625845229, '5%': -3.005425537190083, '10%': -2.6425009917355373}, 291.54354258641223)
结果分析如下:-0.04391111656553118
是adt检验的结果,简称为T值,表示t统计量。0.9547464774274733
简称为p值,表示t统计量对应的概率值。10
表示延迟。22
表示测试的次数。
第五个是配合T值一起看的,是在99%,95%,90%置信区间下的临界的ADF检验的值。291.54354258641223
最大滞后门限值门限
首先,-0.04391111656553118大于三个置信区间的临界值,即存在单位根。
其次,p值要求小于给定的显著水平(一般是0.05),等于0最好。本数据中,P值 为 0.9547464774274733,大于0.05,即存在单位根。
所以综上所述,此序列不是平稳序列
下面给出平稳序列的结果(-4.924087490679005, 3.129856642757301e-05, 19, 636, {'1%': -3.4406737255613256, '5%': -2.866095119842903, '10%': -2.5691958123689727}, 14356.744057311003)
T值小于三个置信区间的临界值,且P值小于0.05接近0,所以不存在单位根,是平稳序列。
Ljung-Box检验
Ljung-Box检验即LB检验、随机性检验,用来检验m阶滞后范围内序列的自相关性是否显著,或序列是否为白噪声,Q统计量服从*度为m的卡方分布。若是白噪声数据,则该数据没有价值提取,即不用继续分析了
下面给出Ljung-Box检验的python代码
from statsmodels.stats.diagnostic import acorr_ljungbox as lb_test
re = lb_test(data, lags=20)#使用的博主自己的数据
prinit(re)
lb_stat lb_pvalue
1 471.099659 1.847036e-104
2 899.481638 4.786785e-196
3 1347.384204 7.695651e-292
4 1791.734228 0.000000e+00
5 2207.199800 0.000000e+00
6 2674.155719 0.000000e+00
7 3242.923906 0.000000e+00
8 3686.776794 0.000000e+00
9 4069.902008 0.000000e+00
10 4474.462678 0.000000e+00
11 4865.867510 0.000000e+00
12 5234.470249 0.000000e+00
13 5641.097308 0.000000e+00
14 6133.124076 0.000000e+00
15 6518.637784 0.000000e+00
16 6846.243758 0.000000e+00
17 7193.271970 0.000000e+00
18 7526.968985 0.000000e+00
19 7836.234889 0.000000e+00
20 8179.147428 0.000000e+00
结果分析如下
我们主要看第二列的P值,lags为检验的延迟数,一般指定是20,或是序列长度,每一个P值都小于0.05或等于0,说明该数据不是白噪声数据,数据有价值,可以继续分析。
反之如果大于0.05,则说明是白噪声序列,是纯随机性序列。