Data Science/시계열(Time-series)

ADF(Augmented Dickey-Fuller Test) 검정 간단 정리

HAN___ 2022. 11. 19. 00:06

ADF(Augmented Dickey-Fuller Test) 검정 간단 정리

: 시계열의 안정성(stationary)을 테스트하는 통계적 방법


[ 순서 ] 

1. 귀무가설(Null Hypothesis) 세움: 주어진 시계열 데이터가 안정적이지 않다

2. 통계적 가설 검정 과정

3. 귀무가설이 기각된다면: 대립가설(Alternative Hypothesis) 채택

▶ 이 시계열 데이터가 안정적이다

 

 

[ 귀무가설 / 대립가설 ]

  귀무가설(Null Hypothesis) 대립가설(Alternative Hypothesis)
의미 처음부터 버릴 것을 예상하는 가설
(차이가 없거나 의미있는 차이가 없는 경우의 가설)
귀무가설이 거짓이라면 대안적으로 참이 되는 가설
단위근 자료에 단위근이 존재한다 자료에 단위근이 존재하지 않아 정상성을 만족한다

* 단위근(unit root): x=1y=1인 해로, 시계열 자료에서 예측할 수 없는 결과를 가져올 수 있다

 

[ DF와 ADF ]

- ADF 검정: DF검정을 일반화한 검정
- DF(Dickey-Fuller) 검정: "단위근이 존재한다는 귀무가설"을 통계적으로 검정하는 방법

- ADF는 p lag의 차분을 추가해 검정 능력을 더 향상시킨 것

 

- p lag의 차분만큼 항이 추가 되었다

▶ t-p 시점까지 차분 경향성을 파악할 수 있어서 주기를 가진 데이터의 정상성 여부를 판단할 수 있다

 

- 검정통계량이 Critical Value보다 작거나 / p-value가 설정한 유의수준 값보다 작으면

▶ 정상적인 시계열 데이터

 

[ p-value ]

- 귀무가설을 가정했을 때의 확률분포 상에서 현재의 관측보다 더 극단적인 관측이 나올 확률

- 귀무가설의 가정이 틀렸다고 볼 수 있는 확률

▶ 보통 0.05 / 0.01 미만으로 나오면: 귀무가설 기각, 대립가설 채택하는 편

 

from statsmodels.tsa.stattools import adfuller

def augmented_dickey_fuller_test(timeseries):
    # statsmodels 패키지에서 제공하는 adfuller 메서드를 호출합니다.
    dftest = adfuller(timeseries, autolag='AIC')  
    
    # adfuller 메서드가 리턴한 결과를 정리하여 출력합니다.
    print('Results of Dickey-Fuller Test:')
    dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
    for key,value in dftest[4].items():
        dfoutput['Critical Value (%s)' % key] = value
    print(dfoutput)