ADF检验是在Dickey-Fuller检验(DF检验)基础上发展而来的。因为DF检验只有当序列为AR(1)时才有效。如果序列存在高阶滞后相关,这就违背了扰动项是独立同分布的假设。在这种情况下,可以使用增广的DF检验方法(augmented Dickey-Fuller test )来检验含有高阶序列相关的序列的单位根。

步骤

一般进行ADF检验要分3步:
1 对原始时间序列进行检验,此时第二项选level,第三项选None.如果没通过检验,说明原始时间序列不平稳;
2 对原始时间序列进行一ADF检验是在Dickey-Fuller检验(DF检验)基础上发展而来的。因为DF检验只有当序列为AR(1)时才有效。如果序列存在高阶滞后相关,这就违背了扰动项是独立同分布的假设。在这种情况下,可以使用增广的DF检验方法(augmented Dickey-Fuller test )来检验含有高阶序列相关的序列的单位根。
步骤
一般进行ADF检验要分3步:
1 对原始时间序列进行检验,此时第二项选level,第三项选None.如果没通过检验,说明原始时间序列不平稳;
2 对原始时间序列进行一阶差分后再检验,即第二项选1st difference,第三项选intercept,若仍然未通过检验,则需要进行二次差分变换;
3 二次差分序列的检验,即第二项选择2nd difference ,第四项选择Trend and intercept.一般到此时间序列就平稳了!
 
在进行ADF检验时,必须注意以下两个实际问题:
(1)必须为回归定义合理的滞后阶数,通常采用AIC准则来确定给定时间序列模型的滞后阶数。在实际应用中,还需要兼顾其他的因素,如系统的稳定性、模型的拟合优度等。
(2)可以选择常数和线性时间趋势,选择哪种形式很重要,因为检验显著性水平的 t 统计量在原假设下的渐近分布依赖于关于这些项的定义。
① 若原序列中不存在单位根,则检验回归形式选择含有常数,意味着所检验的序列的均值不为0;若原序列中存在单位根,则检验回归形式选择含有常数,意味着所检验的序列具有线性趋势,一个简单易行的办法是画出检验序列的曲线图,通过图形观察原序列是否在一个偏离 0 的位置随机变动或具有一个线性趋势,进而决定是否在检验时添加常数项。
② 若原序列中不存在单位根,则检验回归形式选择含有常数和趋势,意味着所检验的序列具有线性趋势;若原序列中存在单位根,则检验回归形式选择含有常数和趋势,意味着所检验的序列具有二次趋势。同样,决定是否在检验中添加时间趋势项,也可以通过画出原序列的曲线图来观察。如果图形中大致显示了被检验序列的波动趋势呈非线性变化,那么便可以添加时间趋势项。阶差分后再检验,即第二项选1st difference,第三项选intercept,若仍然未通过检验,则需要进行二次差分变换;
3 二次差分序列的检验,即第二项选择2nd difference ,第四项选择Trend and intercept.一般到此时间序列就平稳了!

在进行ADF检验时,必须注意以下两个实际问题:
(1)必须为回归定义合理的滞后阶数,通常采用AIC准则来确定给定时间序列模型的滞后阶数。在实际应用中,还需要兼顾其他的因素,如系统的稳定性、模型的拟合优度等。
(2)可以选择常数和线性时间趋势,选择哪种形式很重要,因为检验显著性水平的 t 统计量在原假设下的渐近分布依赖于关于这些项的定义。
① 若原序列中不存在单位根,则检验回归形式选择含有常数,意味着所检验的序列的均值不为0;若原序列中存在单位根,则检验回归形式选择含有常数,意味着所检验的序列具有线性趋势,一个简单易行的办法是画出检验序列的曲线图,通过图形观察原序列是否在一个偏离 0 的位置随机变动或具有一个线性趋势,进而决定是否在检验时添加常数项。
② 若原序列中不存在单位根,则检验回归形式选择含有常数和趋势,意味着所检验的序列具有线性趋势;若原序列中存在单位根,则检验回归形式选择含有常数和趋势,意味着所检验的序列具有二次趋势。同样,决定是否在检验中添加时间趋势项,也可以通过画出原序列的曲线图来观察。如果图形中大致显示了被检验序列的波动趋势呈非线性变化,那么便可以添加时间趋势项。

以上转载至http://blog.sina.com.cn/s/blog_72e6f77e01017fk7.html。

在python3中,使用statsmodels库中tsa中的stattools导入adfuller,即:

from statsmodels.tsa.stattools import adfuller

import pandas as pd

adf_seq = np.array([1,2,3,4,5,7,5,1,54,3,6,87,45,14,24])

dftest = adfuller(adf_seq,autolag='AIC')

dfoutput = pd.Series(dftest[0:4],index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])

for key,value in dftest[4].items():

dfoutput['Critical Value (%s)' % key] = value

print(dfoutput)

代码参考至http://www.36dsj.com/archives/44065

此时,运行,是可以运行的,但是,如果你使用的是一个数组,其shape为(n,1)的,会出现ValueError: too many values to unpack (expected 2)的错误,此时,比如该数组为ary,可以加上ary.shape = (len(ary),),将ary数组的列置为默认的空就可以了,祝学的快乐。

python3中使用ADFtest相关推荐

  1. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  2. Python3中typing模块介绍

    typing.py的源码在:https://github.com/python/cpython/blob/main/Lib/typing.py.此模块为类型提示(Type Hints)提供运行时支持( ...

  3. Python3中内置函数callable介绍

          Python3中的内置函数callable接受一个对象参数,如果此对象参数看起来可调用,则callable函数返回True,否则返回False.如果返回True,则调用仍有可能失败:但如果 ...

  4. Python3中lambda表达式介绍

    Python3中的lambda表达式或lambda函数是匿名函数(anonymous function),意味着该函数没有名称.def关键字用于在Python3中创建一个普通函数,类似地,lambda ...

  5. Python3中collections.OrderedDict介绍

    Python3中的collections模块实现了特定目标的容器,以提供Python标准内建容器dict.list.set和tuple的替代选择,包括namedtuple.deque.ChainMap ...

  6. Python3中装饰器@typing.overload的使用

    typing.py的源码在:https://github.com/python/cpython/blob/main/Lib/typing.py .此模块为类型提示(Type Hints)提供运行时支持 ...

  7. Python3中闭包介绍

          Python3中的闭包(closure)是一个函数对象,它记住封闭作用域(enclosing function)中的值,即使它们不存在于内存中.它是一个将函数与环境一起存储的记录.由于闭包 ...

  8. oracle urlencode 中文,Python2和Python3中urllib库中urlencode的使用注意事项

    前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...

  9. Python3中的类和实例

    1.类和实例 类是抽象的模板,实例是根据类创建出来的一个个具体的"对象".例如:动物是一大类,猫.狗.鱼等都是特定的对象,即实例.python3中使用class关键字来定义类,基本 ...

最新文章

  1. 回溯法排序树怎么画_kd tree(k-dimensional树的简称)
  2. java打印版本兼容_打印class文件的Java编译器内部的版本号
  3. Service随系统启动运行
  4. servletConfig对象
  5. linux网络管理基本命令
  6. RHEL 5.4下cyrus-sasl-2.1.22 的编译安装
  7. 串口与modem流量控制大全(1)
  8. 超详细MFS网络分布式文件系统
  9. [java] Unsupported major.minor version 51.0 错误解决方案
  10. 【解题报告】动态规划进阶题(区间DP、树形DP、状压DP入门)
  11. matlab解超越函数,矩阵的超越函数Matlab提供的矩阵函数.PPT
  12. 求最大公约数和最小公倍数的做法(Java实现)
  13. 项目中Makefile写法的一种参考
  14. 人工蜂群算法怎样添加路径
  15. Gradle配置阿里云仓库
  16. eoLinker-AMS接口管理系统 项目管理教程
  17. 日历 java 代码
  18. 移动H5调试神器 vConsole
  19. 【音视频】获取桌面程序窗口列表以及桌面、窗口的缩略图(4-4)
  20. java类编来那个初始化顺序_Java类及对象的初始化顺序

热门文章

  1. windows如何远程桌面mac
  2. Xcode怎么退回旧版本?
  3. Go基础语法(短句精简版)(上)
  4. 使用Python修改图片尺寸
  5. XBL绑定组建的实例
  6. java-php-python-springboo垃圾分类网站计算机毕业设计
  7. 《王者荣耀》还有什么比被鲁班炮死更憋屈的死法?
  8. WMS仓储管理系统在各种行业中,都有哪些作用
  9. oracle大型数据库系统在aix/unix上的实战详解 pdf,Oracle10g在AIX上的安装准备工作《Oracle大型数据库系统在AIX/unix上的实战详解》集中答疑40...
  10. 如何将英文pdf文档在线翻译成中文?