ADF(Augmented Dickey-Fuller Test) 검정 간단 정리
: 시계열의 안정성(stationary)을 테스트하는 통계적 방법
[ 순서 ]
1. 귀무가설(Null Hypothesis) 세움: 주어진 시계열 데이터가 안정적이지 않다
2. 통계적 가설 검정 과정
3. 귀무가설이 기각된다면: 대립가설(Alternative Hypothesis) 채택
▶ 이 시계열 데이터가 안정적이다
[ 귀무가설 / 대립가설 ]
귀무가설(Null Hypothesis) | 대립가설(Alternative Hypothesis) | |
의미 | 처음부터 버릴 것을 예상하는 가설 (차이가 없거나 의미있는 차이가 없는 경우의 가설) |
귀무가설이 거짓이라면 대안적으로 참이 되는 가설 |
단위근 | 자료에 단위근이 존재한다 | 자료에 단위근이 존재하지 않아 정상성을 만족한다 |
* 단위근(unit root): x=1, y=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)