一、ADF檢驗原假設介紹
ADF(Augmented Dickey-Fuller)檢驗是用於時間序列數據的檢驗方法,旨在檢驗時間序列數據是否存在單位根,以判斷時間序列是否是平穩的。ADF檢驗方法的原假設是存在單位根,備擇假設是數據是平穩的。
需要注意的是,存在單位根意味着時間序列的均值和方差會隨着時間的推移而改變,不具有穩定性。
二、ADF檢驗的實現
在Python中,我們可以使用statsmodels包中的adfuller函數進行ADF檢驗。adfuller函數的部分參數介紹如下:
adfuller(x, maxlag=None, regression='c', autolag='AIC', store=False, regresults=False)
x:需要進行ADF檢驗的時間序列數據
maxlag:使用的滯後階數,默認為12,可以根據數據實際情況進行調整
regression:擬合趨勢項的類型,包括’c’(常數項)、’ct’(常數項和時間趨勢)和’ctt’(常數項、時間趨勢和二次時間趨勢)
autolag:滯後階數的選取方式,包括’AIC’、’BIC’、’t-stat’和’None’。
store:是否需要存儲ADF檢驗的各種結果
regresults:是否需要輸出ADF檢驗的回歸結果
三、ADF檢驗的結果解讀
在進行ADF檢驗後,我們會得到一個p值。如果p值小於設定的顯著性水平(通常為0.05),則可以拒絕原假設,認為數據是平穩的。如果p值大於設定的顯著性水平,則無法拒絕原假設,認為數據存在單位根,不具有穩定性。
另外,ADF檢驗的結果還包括統計量的值和對應的置信區間。如果統計量的值小於置信區間的上限,則可以拒絕原假設,認為數據是平穩的。
四、ADF檢驗的應用舉例
下面是一個用Python實現ADF檢驗的簡單示例:
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
# 生成一組隨機時間序列數據
np.random.seed(123)
data = np.random.normal(size=100)
data = pd.Series(data).cumsum()
# 進行ADF檢驗
result = adfuller(data)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
# 根據ADF檢驗的結果判斷時間序列的平穩性
if result[1] < 0.05:
print('The data is stationary')
else:
print('The data is not stationary')
以上示例中,我們首先生成一組隨機時間序列數據,然後使用adfuller函數對數據進行ADF檢驗。最後根據ADF檢驗的結果判斷時間序列的平穩性。
五、ADF檢驗的優缺點
ADF檢驗具有以下優點:
1. 可以很好地處理非平穩時間序列數據;
2. 檢驗結果簡單易懂,通過p值即可判斷平穩性。
但是ADF檢驗也存在一定的缺點:
1. ADF檢驗只能檢驗一階整合過程,對於高階整合過程或序列中存在其它形式的非平穩性,檢驗結果可能不準確;
2. ADF檢驗還需要選擇調整的一些參數,比如滯後階數和擬合趨勢,則需要經驗和實踐。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/183924.html