Python中adfuller()函数作用与用法
Admin 2023-02-13 群英技术资讯 1643 次浏览
这篇主要是介绍“Python中adfuller()函数作用与用法”的内容了,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家解决Python中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模型建模处理预测数据的时候遇到的一个用来评测稳定性的函数,该函数可以返回一个数组,包含五个数据。
adfuller()函数的输入参数中有regresults一项,网上教程中大多数默认设为False。这个参数到底有什么用,这里我们研究一下。
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,一个虚拟类,其结果作为属性附加。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()函数的原代码。这里进行部分截取:
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
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检验中的拟合模型和对应参数,有助于对检验结果进行更加深入的分析。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
小伙伴们日常工作中都必不可少地使用Python实现一些简单的功能,但是不同的人所编写的代码执行效率往往是不同的,下面这篇文章主要给大家介绍了4个Python中高效的技巧,需要的朋友可以参考下
本文实例为大家分享了Python实现仓库管理系统的具体代码,供大家参考,具体内容如下注意:在Linux环境运行代码#!/usr/bin/env python# -*- coding:utf-8 -*-# @FileName :store
本篇文章给大家带来了关于Python的相关知识,主要为大家详细介绍了PythonNumPy中数组的创建方式,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下。【相关推荐:
Python使用def开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在expressions中的逻辑代码中用return返回。
这篇文章主要为大家介绍了python数字图像处理之对比度与亮度调整示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008