[파이썬] statsmodels에서 정상성 검정

정상성(Stationarity)은 시계열 데이터의 특성 중 하나로, 시간에 따라 통계적 특성들이 변하지 않는 것을 의미합니다. 정상성을 가진 시계열 데이터는 예측이나 분석에 용이하며, 많은 시계열 분석 기법들은 정상성을 가정하고 있습니다. 상관관계, 분산 등의 통계적 특성이 시간에 따라 변하지 않으면, 시계열 데이터는 정상적인 특성을 갖고 있다고 할 수 있습니다.

정상성 검정은 주어진 시계열 데이터가 정상성을 가지고 있는지 확인하기 위해 사용됩니다. 이를 통해 시계열 데이터 분석에 앞서 변환 또는 조정이 필요한지 판단할 수 있습니다. 이번 블로그에서는 Python의 statsmodels 패키지를 사용하여 정상성 검정을 하는 방법을 알아보겠습니다.

Augmented Dickey-Fuller Test

Augmented Dickey-Fuller(ADF) 검정은 가장 널리 사용되는 정상성 검정 방법 중 하나입니다. 이 방법은 시계열 데이터에 대해 다음의 귀무 가설과 대립 가설을 세우고 검정을 수행합니다.

statsmodels 패키지에서 ADF 검정은 adfuller() 함수를 통해 수행됩니다. 아래는 예시 코드입니다.

import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller

# 시계열 데이터 로드
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# ADF 검정 수행
result = adfuller(data)

# 결과 출력
print('ADF Statistic:', result[0])
print('p-value:', result[1])

위 코드에서 data는 분석하고자 하는 시계열 데이터입니다. adfuller() 함수는 ADF 검정을 수행하고 해당 결과를 출력합니다. 결과로는 ADF 통계량(ADF Statistic)과 p-값(p-value)이 제공됩니다. 주로 p-값을 기준으로 귀무 가설을 기각/채택합니다. p-값이 주어진 유의 수준보다 작으면 귀무 가설을 기각하고, 크거나 같으면 귀무 가설을 채택합니다.

KPSS Test

KPSS(Kwiatkowski-Phillips-Schmidt-Shin) 검정은 또 다른 정상성 검정 방법입니다. 이 방법은 ADF 검정과 반대로 귀무 가설과 대립 가설을 바꿔서 설정합니다.

statsmodels 패키지에서 KPSS 검정은 kpss() 함수를 통해 수행됩니다. 아래는 예시 코드입니다.

import statsmodels.api as sm
from statsmodels.tsa.stattools import kpss

# 시계열 데이터 로드
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# KPSS 검정 수행
result = kpss(data)

# 결과 출력
print('KPSS Statistic:', result[0])
print('p-value:', result[1])

위 코드에서도 data는 분석하고자 하는 시계열 데이터입니다. kpss() 함수를 통해 KPSS 검정을 수행하고 결과를 출력합니다. 마찬가지로 p-값을 기준으로 귀무 가설을 기각/채택합니다.

위에서 소개한 두 가지 정상성 검정 방법은 statsmodels 패키지에서 제공하는 것들 중 일부입니다. 시계열 데이터 분석에 앞서 정상성을 확인하는 것은 중요한 단계이며, statsmodels 패키지의 다양한 검정 함수들을 활용하여 신뢰할 수 있는 결과를 얻을 수 있습니다.