adfuller函数返回值的参数说明

from statsmodels.tsa.stattools import adfuller
t = adfuller(train['total_redeem_amt'])

返回值为(-5.2350403606036302, 7.4536580061930903e-06, 0, 60, {'1%': -3.5443688564814813, '5%': -2.9110731481481484, '10%': -2.5931902777777776}, 1935.4779504450603)

最近在学习用ARIMA模型建模处理预测数据的时候遇到的一个用来评测稳定性的函数,该函数可以返回一个数组,包含五个数据。

  • 第一个是adt检验的结果,也就是t统计量的值。
  • 第二个是t统计量的P值。
  • 第三个是计算过程中用到的延迟阶数。
  • 第四个是用于ADF回归和计算的观测值的个数。
  • 第五个是配合第一个一起看的,是在99%,95%,90%置信区间下的临界的ADF检验的值。如果第一个值比第五个值小证明平稳,反正证明不平稳。根据结果看出来,你的数据不平稳。
  • 至于第六个数值就不太明白了,网上也没有查找到相应的资料

查看adfuller()函数的模型拟合系数

adfuller()函数的输入参数中有regresults一项,网上教程中大多数默认设为False。这个参数到底有什么用,这里我们研究一下。

adfuller()函数原型

adfuller()是ADF检验常用的函数(还有一个常用函数为arch.unitroot包中的ADF()函数),需导入的包为:

import statsmodels.tsa.stattools as ts

其函数原型为:

t=adfuller(x, maxlag=None, regression='c', autolag='AIC', store=False, regresults=False)

输入参数:

  • x:array_like,1d,要测试的数据系列。
  • maxlag: 测试中包含的最大延迟,默认为12 *(nobs / 100)^ {1/4}。
  • regression:{‘c’,‘ct’,‘ctt’,‘nc’}, 包含在回归中的常量和趋势顺序。‘c’:仅限常量(默认值)。 ‘ct’:恒定和趋势。 ‘ctt’:常数,线性和二次趋势。 ‘nc’:没有恒定,没有趋势。
  • autolag: {‘AIC’,‘BIC’,‘t-stat’,None}自动确定滞后时使用的方法。如果为None,则使用maxlag滞后。如果是’AIC’(默认值)或’BIC’,则选择滞后数以最小化相应的信息标准。基于’t-stat’的maxlag选择。从maxlag开始并使用5%大小的测试来降低延迟,直到最后一个滞后长度的t统计量显着为止。
  • store:bool,如果为True,则另外返回adf统计信息的结果实例。默认值为False。
  • regresults:bool,optional,如果为True,则返回完整的回归结果。默认值为False。

返回参数:

  • ADF:float,测试统计。
  • pvalue:float,probability value:MacKinnon基于MacKinnon的近似p值(1994年,2010年)。
  • usedlag:int,使用的滞后数量。
  • NOBS:int,用于ADF回归和计算临界值的观察数。
  • critical values:dict,测试统计数据的临界值为1%,5%和10%。基于MacKinnon(2010)。
  • icbest:float,如果autolag不是None,则最大化信息标准。
  • resstore:ResultStore, optional,一个虚拟类,其结果作为属性附加。

regresults参数

adfuller()函数的其他参数,网上的各种教程已经将的很清楚了。但是对regresults,却一直讳莫如深,从函数原型也看的一头雾水,搞不清楚这个参数怎么用的。首先通过两段代码看看regresults参数对输出结果的影响。

regresults=False:

r=ts.adfuller(data,12,'ctt',regresults=False)
print(r)

输出结果:

(-1.6596695973336932, 0.9169218489129718, 0, 230, {'1%': -4.422218041176954, '5%': -3.8583127840881075, '10%': -3.569276584942878}, 1640.0264270221523)

可以看到,依次为t-statistic, p-value, usedlag, nobs, critical-value, AIC这几个参数。

regresults=True:

r=ts.adfuller(data,12,'ctt',regresults=True)
print(r)

输出结果:

(-1.6596695973336932, 0.9169218489129718, {'1%': -4.422218041176954, '5%': -3.8583127840881075, '10%': -3.569276584942878}, <statsmodels.tsa.stattools.ResultsStore object at 0x000000000F3B2198>)

前面几项依次为t-statistic, p-value,critical-value,没有了usedlag, nobs,多出来一个注释“statsmodels.tsa.stattools.ResultsStore object at 0x000000000F3B2198”,这个注释貌似是resstore的注释,但怎么调用这个参数呢?

adfuller()函数原代码

为了弄清楚这个问题,我们研究一下adfuller()函数的原代码。这里进行部分截取:

if regresults:
    store = True
...
if store:
    resstore.resols = resols
    resstore.maxlag = maxlag
    resstore.usedlag = usedlag
    resstore.adfstat = adfstat
    resstore.critvalues = critvalues
    resstore.nobs = nobs
    resstore.H0 = ("The coefficient on the lagged level equals 1 - "
                   "unit root")
    resstore.HA = "The coefficient on the lagged level < 1 - stationary"
    resstore.icbest = icbest
    resstore._str = 'Augmented Dickey-Fuller Test Results'
    return adfstat, pvalue, critvalues, resstore
else:
    if not autolag:
        return adfstat, pvalue, usedlag, nobs, critvalues
    else:
        return adfstat, pvalue, usedlag, nobs, critvalues, icbest

可以看出,不同的输入参数有不同的返回值,当regresults=True时,确实将详细的结果赋给resstore参数,并作为最后一个参数返回。这个参数的子项包括:resols, maxlag, usedlag, adfstat, critvalues, nobs, H0(原假设描述),HA (备择假设描述),icbest ,_str 等。

因此可以得到两个结论:

(1)当regresults=True时,虽然没有返回usedlag, nobs参数,但这些参数都是存在的,虽然没有返回,但仍然可以通过resstore进行显示或调用。

(2)最后一项"statsmodels.tsa.stattools.ResultsStore object at 0x000000000F3B2198"表示计算过程中resstore参数的暂存地址(当参数被遗弃时显示)。

测试:

[t,p,c,r]=ts.adfuller(data,12,'ctt',regresults=True)
print(r.usedlag)
print(r.nobs)

结果:

0
230

adfuller()的回归模型系数

resstore参数中还有一项resols,这一项是默认不返回的。我们继续在原代码中寻找这一项的计算过程:

    ...
    if regression != 'nc':
        resols = OLS(xdshort, add_trend(xdall[:, :usedlag   1],
                     regression)).fit()
    else:
        resols = OLS(xdshort, xdall[:, :usedlag   1]).fit()
    ...

看到了,resols就是最小二乘拟合函数OLS()的返回结果。因此,resols所包含的子项可以通过查阅OLS()函数原型得到,其中必然也包括回归模型的拟合系数。

测试:

[t,p,c,r]=ts.adfuller(data,12,'ctt',regresults=True)
print(r.resols.summary())
print(r.resols.params)

结果:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.019
Model:                            OLS   Adj. R-squared:                  0.006
Method:                 Least Squares   F-statistic:                     1.430
Date:                Thu, 26 Dec 2019   Prob (F-statistic):              0.235
Time:                        23:15:35   Log-Likelihood:                -858.43
No. Observations:                 230   AIC:                             1725.
Df Residuals:                     226   BIC:                             1739.
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
x1            -0.0287      0.017     -1.660      0.098      -0.063       0.005
const         55.6700     32.455      1.715      0.088      -8.283     119.623
x2             0.0209      0.053      0.395      0.693      -0.083       0.125
x3            -0.0002      0.000     -0.785      0.433      -0.001       0.000
==============================================================================
Omnibus:                        8.509   Durbin-Watson:                   1.870
Prob(Omnibus):                  0.014   Jarque-Bera (JB):               11.078
Skew:                           0.274   Prob(JB):                      0.00393
Kurtosis:                       3.925   Cond. No.                     1.15e 06
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.15e 06. This might indicate that there are
strong multicollinearity or other numerical problems.
[-2.86531492e-02  5.56699632e 01  2.08909695e-02 -1.95482480e-04]

可以看出,结果显示了OLS拟合的详细结果,可以对ADF检验中的拟合模型和拟合效果进行进一步详细研究。

结论

通过对adfuller()函数源码的研究,明确了输入参数regresults的作用和返回参数resstore的结构组成。通过返回的resstore参数,可以进一步得到ADF检验中的拟合模型和对应参数,有助于对检验结果进行更加深入的分析。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持Devmax。

关于adfuller函数返回值的参数说明与记录的更多相关文章

  1. ios – 来自UIAlertController的self.navigationController?.popViewControllerAnimated

    我是新手,但我想我已经掌握了它.这让我的进步很难过.我想要做的是当我们无法找到他的查询的相关数据时向用户抛出错误消息,然后继续将他带回到之前的ViewController.但是,我在这方面遇到了麻烦.在我添加操作的行上,我收到以下错误:’UIViewController?’不是Void的子类型我该怎么做呢?

  2. ios – 如何从Swift中的Closure返回值?

    ).更改实现以使用存储调用值的成员变量.

  3. Swift中方法的多面性

    在继续之前,我需要澄清Swift中方法和函数之间的不同,因为在本文中我们将使用这两个术语。按照Apple的SwiftProgrammingLanguageBook里面的方法定义:方法是与某些特定类型相关联的函数。可选类型比Objective-C中的nil指针更加安全也更具表现力,它是Swift许多强大特性的重要组成部分。作为参数的函数在Swift中,函数可以被用来当做变量传递。华丽的返回类型在Swift中,函数的返回类型和返回值相较于Objective-C而言更加复杂,尤其是引入可选和多个返回类型。

  4. Swift函数返回值

    函数的返回值有三种类型:单一返回值,多返回值,无返回值无返回值函数:示例:func函数名{语句}func函数名->(){语句}func函数名->Void{语句}多返回值函数:两种方式实现:1、参数声明为引用类型传递2、将返回定义为元组示例:1、引用类型参数传递funcChangeInt{value1=55value2=1.23}varval1=0varval2=0.0changeInt2、元组类型示例:funcchangeInt()->{return}letvalue=changeInt()println

  5. swift语言学习-8. 函数

    swift中申明函数使用的关键字是func。无参数作为一个函数,肯定是有无参的情况的,即没有参数输入,swift中的函数无参数输入和其他语言一样,留空就好了。()"hello"//调用并打印函数())//输出:hello无返回值swift中参数的返回值的类型是通过->返回值这种形式来书写的,那一个函数没返回值咋搞呢?就是说swift会自动给有默认值的参数,加上一个外部参数名,和它自己的内参名字一样,就像使用了#效果一样,不用你额外写。

  6. Swift教程14-func函数,函数类型_对比Oc

    Swift的函数和函数类型是非常重要的内容.而且Swift中也把函数的形式和方法的形式,定义的完全一致;只不过,函数不是在类中.1.函数的定义func函数名(参数列表)[->返回值类型]{//函数体}解释:func是关键字,是必须写上的前缀,代表它是一个函数或方法;函数名:遵从标识符的规则形参列表,可以为空,也可以很多;例如str:String,a:Int,和声明变量的方法类似->后面跟的是返回值

  7. swift之函数

    Swift的统一的功能语法足够灵活的,可表达任何东西,无论是不带参数名称的简单的样式函数,还是带本地和外部参数名称的复杂的Objective-C样式方法。Swift中的每个函数都有一个类型,包括函数的参数类型和返回类型。为了简化这个函数的主体,可把消息创建和return语句合并成一行:函数的形参和返回值在swift中,函数的形参和返回值是非常具有灵活性的。第二个函数printWithoutCounting,调用的第一个函数,但忽略它的返回值。

  8. swift之Optional Chaining

    自判断链接是一种可以请求和调用属性、方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空。Residence具有一个Int类型的numberOfRooms,其值为1。强制拆包获得这个人residence属性numberOfRooms属性值,将会引发运行时错误,因为这时没有可以供拆包的residence值。当john.residence不是nil时,会运行通过,且会将roomCount设置为一个int类型的合理值。

  9. Swift语言指南二基础操作符

    Swift支持大多数标准的C操作符并且改善了几项功能以消除常见的编码错误。你可以用Swift的溢出运算符来做溢出操作,详情见《溢出操作符》一节。《高级操作符》一节涵盖了Swift的高级操作符,讲述了如何自定义操作符以及如何实现自定义类型的标准操作符。操作符影响的值称为操作数。不过,在Swift里对负数的操作,严格来说是取余而不是取模。复合赋值操作符像C那样,Swift也提供复合赋值操作符,将复制符(=)和其它操作结合起来。nil合并操作符提供

  10. Swift 函数类型作为返回值使用

    reduce:intcrease}黄色部分为函数参数,而绿色部分为返回值,chooseFunction这个函数中的返回值是一个参数为Int返回值为Int的函数->Int.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部