정상성은 시계열 데이터가 시점에 따라 평균이나 분산 같은 통계적 특징이 변하지 않으며 추세나 계절성이 없는 시계열 데이터일 때 해당 데이터를 말합니다. 즉, 시계열 데이터가 시점에 무관하게 과거, 현재, 미래의 분포가 같을 때 정상성을 띤다고 말합니다. 정상성의 종류로는 강한 정상성(Strict Stationarity), 약한 정상성(weak stationarity)가 있습니다.
하지만 강한 정상성은 조건이 까다롭기 때문에 정상성을 띤다는 것은 보통 약한 정상성을 말합니다. 약한 정상성 조건은 아래와 같습니다. (임의의 t, h)
지난 글에서도 정상성을 언급하였고 이번에는 제목 자체가 정상성과 비정상성입니다. 그런데 정상성이 뭔지는 알겠는데 왜 중요한지, 어떤 역할을 하는지를 알아야 시원한 기분이 들 것 같습니다.
우선 한마디로 설명하자면 시계열 데이터가 정상성을 띠고 있어야 ARIMA 분석을 통해 미래 시계열 값을 예측할 수 있기 때문입니다.
아마 여기서 의문이 생기실 것 같습니다. 저도 처음 정상성 개념을 접했을 때 "정상성을 띠는 대표적인 백색잡음 그래프를 보니깐 모양도 이상하고 정상성의 조건이 '추세나 계절성 같은 패턴이 없는 것'이라고 봤는데 추세나 계절성이 있어야 분석이 쉬운 거 아님?" 같은 생각을 했었습니다. 그런데 만약 시계열 데이터가 비정상성을 띤다면 평균과 분산이 다르기 때문에 임의의 시점 t-1, t에서 얻은 모델은 t+1~t+n에서 사용할 수 없게 됩니다. 즉, 미래의 값을 예측할 수 없게 되는 것입니다. 또한 이는 회귀분석을 기반으로 데이터 분석을 하기 위함이지 패턴이나 다른 분석기법으로 예측할 때는 정상성을 고려하지 않아도 됩니다.
이렇게 중요한 정상성을 판단하는 방법은 대표적으로 2가지가 있습니다.
하나는 그래프(직관적인 방법 or ACF or PACF)로 판단하는 방법이고 다른 하나는 가설 검정(단위근 검정)입니다.
정상성의 정의에 따라
b그래프를 보면 위쪽으로 툭 튀는 부분이 있긴하나 정상성으로 간주할 수 있는 범위입니다. g는 처음에 보면 계절성을 갖고 있는 비정상 그래프인 것처럼 보이나 자세히 보면 주기의 시점이 불규칙하고 확률과정의 분산이 일정하며 추세가 보이지 않기 때문에 정상성 그래프입니다.
위처럼 눈으로 확인하는 방법도 있고 자기 상관 함수(ACF; Auto Correlation Function)을 이용하는 방법도 있습니다. 여기서 자기 상관 함수란 현재 시점의 자료와 시점의 차이(Lag)를 가진 자료의 상관성을 나타내는 측도를 말합니다. 편 자기 상관 함수(PACF)는 두 시점 내의 구간 값을 고려하지 않고 두 시점의 상관관계를 확인하는 것입니다. 정상성의 개념을 고려하면서 ACF 그래프를 보았을 때 상관 값이 빠르게 0으로 줄어들면, 즉 전의 값과 연관이 없으면 정상성을 띤다고 볼 수 있습니다.
위의 ACF 그래프를 보면 correlation이 내려가는 것을 볼 수 있지만 느리게 감소하며 신뢰구간에는 전혀 들어가지 못하는 모습을 볼 수 있습니다. 고로 비정상적이라고 판단할 수 있습니다. 옆의 PACF 그래프를 보면 시차 1까지 상관이 높은 것을 확인 할 수 있습니다.
또한 위와 같이 위이 그래프들에서 확인한 값으로 ARIMA 모형을 결정할 수 있습니다. ACF가 감소하고 PACF가 p에서 그래프가 파란색 영역 안으로 들어가면 AR(p) 모형, 반대면 MA(q)모형 마지막으로 둘 다 0으로 가면 ARMA(p, q)를 선택하면 됩니다. 그리고 차분을 결정해주면 되겠죠.
import statsmodels.graphics.tsaplots as sgt
import matplotlib.pyplot as plt
import FinanceDataReader as fdr
import pyupbit
pyupbit.get_current_price(["KRW-BTC", "KRW-XRP"])
a=pyupbit.get_ohlcv("KRW-XRP", to="20210301",interval="day",count=150)
sgt.plot_acf(a['close'], lags = 20, zero = False)
sgt.plot_pacf(a['close'], lags = 20, zero = False)
plt.show()
위의 그래프는 upbit 기준으로 2021년 03월 01일부터 150일간의 리플(XRP)의 종가를 ACF로 나타낸 것입니다. ACF를 보면 값이 빠른 속도로 범위 안으로 들어가고 있고 PACF는 1 이후에 범위 안으로 들어간 것을 보면 AR(1) 모델을 활용하는 것이 적합하다고 판단할 수 있습니다.
단측 검정이며 귀무가설은 'H0: 비정상성을 띤다. δ=0'로 p-value가 유의수준 0.05보다 작아 귀무가설을 기각하고 대립가설을 채택해야 정상성을 띠는 것입니다.
마무리: 다음시간에는 ARIMA에 대하여 딥하게 다뤄보겠습니다.
reference: https://otexts.com/fpp2/stationarity.html
https://assaeunji.github.io/statistics/2021-08-08-stationarity/
https://direction-f.tistory.com/65