您好,登錄后才能下訂單哦!
本篇內容介紹了“python怎么實現ADF檢驗”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
ADF檢驗
在使用很多時間序列模型的時候,如 ARMA、ARIMA,都會要求時間序列是平穩的,所以一般在研究一段時間序列的時候,第一步都需要進行平穩性檢驗,除了用肉眼檢測的方法,另外比較常用的嚴格的統計檢驗方法就是ADF檢驗,也叫做單位根檢驗。
ADF檢驗全稱是 Augmented Dickey-Fuller test,顧名思義,ADF是 Dickey-Fuller檢驗的增廣形式。DF檢驗只能應用于一階情況,當序列存在高階的滯后相關時,可以使用ADF檢驗,所以說ADF是對DF檢驗的擴展。
單位根(unit root)
在做ADF檢驗,也就是單位根檢驗時,需要先明白一個概念,也就是要檢驗的對象——單位根。
當一個自回歸過程中:y_{t} = by_{t-1} + a + \epsilon _{t} ,如果滯后項系數b為1,就稱為單位根。當單位根存在時,自變量和因變量之間的關系具有欺騙性,因為殘差序列的任何誤差都不會隨著樣本量(即時期數)增大而衰減,也就是說模型中的殘差的影響是永久的。這種回歸又稱作偽回歸。如果單位根存在,這個過程就是一個隨機漫步(random walk)。
ADF檢驗的原理
ADF檢驗就是判斷序列是否存在單位根:如果序列平穩,就不存在單位根;否則,就會存在單位根。
所以,ADF檢驗的 H0 假設就是存在單位根,如果得到的顯著性檢驗統計量小于三個置信度(10%,5%,1%),則對應有(90%,95,99%)的把握來拒絕原假設。
ADF檢驗的python實現
ADF檢驗可以通過python中的 statsmodels 模塊,這個模塊提供了很多統計模型。
使用方法如下:
導入adfuller函數
from statsmodels.tsa.stattools import adfuller
adfuller函數的參數意義分別是:
1、x:一維的數據序列。
2、maxlag:最大滯后數目。
3、regression:回歸中的包含項(c:只有常數項,默認;ct:常數項和趨勢項;ctt:常數項,線性二次項;nc:沒有常數項和趨勢項)
4、autolag:自動選擇滯后數目(AIC:赤池信息準則,默認;BIC:貝葉斯信息準則;t-stat:基于maxlag,從maxlag開始并刪除一個滯后直到最后一個滯后長度基于 t-statistic 顯著性小于5%為止;None:使用maxlag指定的滯后)
5、store:True False,默認。
6、regresults:True 完整的回歸結果將返回。False,默認。
返回值意義為:
1、adf:Test statistic,T檢驗,假設檢驗值。
2、pvalue:假設檢驗結果。
3、usedlag:使用的滯后階數。
4、nobs:用于ADF回歸和計算臨界值用到的觀測值數目。
5、icbest:如果autolag不是None的話,返回最大的信息準則值。
6、resstore:將結果合并為一個dummy。
def adfuller(x, maxlag=None, regression="c", autolag='AIC',
store=False, regresults=False):
"""
Augmented Dickey-Fuller unit root test
The Augmented Dickey-Fuller test can be used to test for a unit root in a
univariate process in the presence of serial correlation.
Parameters
----------
x : array_like, 1d
data series
maxlag : int
Maximum lag which is included in test, default 12*(nobs/100)^{1/4}
regression : {'c','ct','ctt','nc'}
Constant and trend order to include in regression
* 'c' : constant only (default)
* 'ct' : constant and trend
* 'ctt' : constant, and linear and quadratic trend
* 'nc' : no constant, no trend
autolag : {'AIC', 'BIC', 't-stat', None}
* if None, then maxlag lags are used
* if 'AIC' (default) or 'BIC', then the number of lags is chosen
to minimize the corresponding information criterion
* 't-stat' based choice of maxlag. Starts with maxlag and drops a
lag until the t-statistic on the last lag length is significant
using a 5%-sized test
store : bool
If True, then a result instance is returned additionally to
the adf statistic. Default is False
regresults : bool, optional
If True, the full regression results are returned. Default is False
Returns
-------
adf : float
Test statistic
pvalue : float
MacKinnon's approximate p-value based on MacKinnon (1994, 2010)
usedlag : int
Number of lags used
nobs : int
Number of observations used for the ADF regression and calculation of
the critical values
critical values : dict
Critical values for the test statistic at the 1 %, 5 %, and 10 %
levels. Based on MacKinnon (2010)
icbest : float
The maximized information criterion if autolag is not None.
resstore : ResultStore, optional
A dummy class with results attached as attributes
"""
現在我們用一個RB1309的收盤數據來進行ADF檢驗,看一下結果:
result = adfuller(rb_price)
print(result)
(-0.45153867687808574, 0.9011315454402649, 1, 198, {'5%': -2.876250632135043, '1%': -3.4638151713286316, '10%': -2.574611347821651}, 1172.4579344852016)
看到 t-statistic 的值 -0.451 要大于10%的顯著性水平,所以無法拒絕原假設,另外,p-value的值也很大。
將數據進行一階差分滯后,看一下結果如何:
rb_price = np.diff(rb_price)
result = adfuller(rb_price)
print(result)
(-15.436034211511204, 2.90628134201655e-28, 0, 198, {'5%': -2.876250632135043, '1%': -3.4638151713286316, '10%': -2.574611347821651}, 1165.1556545612445)
看到 t-statistic 的值 -15 要小于5%,所以拒絕原假設,另外,p-value的值也很小,所以說明一階差分之后的數據是平穩的。
“python怎么實現ADF檢驗”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。