增廣迪基-富勒 (ADF) 站性檢定


站性是統計分析和機器學習中的基本概念,尤其是在處理時間序列數據時。簡單來說,一個時間序列若其統計屬性,例如均值和變異數,隨著時間保持常數,則該時間序列稱為站性。這種站性至關重要,因為許多統計模型假設生成數據的基礎過程不隨時間改變,這簡化了分析和預測。

在現實世界的應用中,例如金融,時間序列數據經常會呈現出趨勢和波動性,使它們非站性。因此,檢測並轉換非站性數據為站性數據是時間序列分析的關鍵步驟。增廣迪基—富勒(ADF)檢定是實現此目的的一項強大工具。

什麼是增廣迪基—富勒(ADF)檢定?

ADF檢定是一種統計檢定,用來確定給定的時間序列是站性還是非站性。特別地,它檢測數據中是否存在單根,這是非站性的指標。單根意味著時間序列有一個隨機趨勢,這意味著它的統計屬性會隨著時間改變。

ADF檢定中的假設檢定

ADF檢定使用假設檢定來對時間序列的站性進行推論。以下是這些假設的闡述:

  • 零假設 (H0):時間序列有單根,意即它為非站性。
  • 對立假設 (H1):時間序列沒有單根,意即它為站性。

為了拒絕零假設,並得出時間序列是站性的結論,從ADF檢定中獲得的 p 值必須小於所選的顯著性水平(通常為 5%)。

執行ADF檢定

以下是使用 statsmodels庫在Python中執行ADF檢定的方法:

import pandas as pd
from statsmodels.tsa.stattools import adfuller

# 示例時間序列數據
data = pd.Series([your_time_series_data])

# 執行ADF檢定
result = adfuller(data)

# 提取並顯示結果
adf_statistic = result[0]
p_value = result[1]
used_lag = result[2]
n_obs = result[3]
critical_values = result[4]

print(f'ADF Statistic: {adf_statistic}')
print(f'p-value: {p_value}')
print(f'Used Lag: {used_lag}')
print(f'Number of Observations: {n_obs}')
print('Critical Values:')
for key, value in critical_values.items():
    print(f'   {key}: {value}')

解讀結果

  • ADF 統計量:一個負值,其中更負的值表示對零假設的證據更強。
  • p 值: 若 p 值低於顯著性水平(例如,0.05),則您拒絕零假設,認定時間序列為站性。
  • 臨界值:這些值幫助確定不同信任等級(1%,5%,10%)的閾值,用來與 ADF 統計量進行比較。

範例和結論

考慮一個金融時間序列數據,像是每日股價。應用 ADF 檢定可能會得出 p 值大於0.05,表明非站性。在此情況下,可能需要進行數據轉換建如差分或去趨勢以達到站性,然後再應用進一步的統計模型。

總結來說,ADF 檢定是檢測時間序列站性的重要工具。通過了解並應用此檢定,分析師能更好地為建模做好數據準備,從而確保他們結果的有效性和可靠性。