단위근 검정을 통해 모형이 단위근(확률적 추세)을 가지는지 판별할 수 있다. 같은 말로 모형이 정상성을 가지는지 또한 단위근 검정을 통해 확인할 수 있다. 대표적인 단위근 검정으로는 ADF검정과 KPSS검정이 있는데 이 둘은 가설이 반대로 설정된다.
$H_{0}$ | $H_{1}$ | |
ADF 검정 | $ \gamma=0 $ (Has unit root) | $ \gamma <0 $ (Stationary) |
KPSS 검정 | $\sigma^{2}=0$ (Stationary) | $\sigma^{2}>0$ (Has unit root) |
어떤 검정이 더 좋고 나쁘고는 차이가 없다고 한다. 다만 통계학개론에서 배웠듯이 어떤 오류를 통제하고 싶은지에 따라 입맛대로 선택하면 될 듯 하다. 즉 Stationary라고 판단했을 때 생기는 오류를 조절하고 싶으면 ADF검정을, 단위근을 가진다고 판단했을 때 생기는 오류를 조절하고 싶으면 KPSS검정을 선택하면 된다.
Augmented DF 검정
시계열 $y_{t}$가 AR(p)를 따른다는 것을 기본으로 한 검정 방법이다. 특별한 경우인 AR(1)에 대해서만 검정통계량을 유도하고 그 이후 차수는 유도없이 바로 받아들이자. 재귀식으로 대입하면 일반적인 p에 대해서도 쉽게 유도된다.
- DF :
\begin{align} y_{t} & = \phi_{1}y_{t-1} + a_{t} \\ \nabla y_{t} & = (\phi_{1}-1)y_{t-1} + a_{t} \tag{1} \end{align}
- 상수를 포함한 DF :
\begin{align} y_{t} & = \alpha + \phi_{1}y_{t-1} + a_{t} \\ \nabla y_{t} & = \alpha + (\phi_{1}-1)y_{t-1} + a_{t} \tag{2} \end{align}
- 선형 추세를 포함한 DF :
\begin{align} y_{t} & = \alpha +\beta t + \phi_{1}y_{t-1} + a_{t} \\ \nabla y_{t} & = \alpha + \beta t + (\phi_{1}-1)y_{t-1} + a_{t} \tag{3} \end{align}
$\gamma = \phi_{1}-1$이라하면 AR(1)모형에서 단위근 검정 $H_{0} : \phi_{1} =1$은 $H_{0} : \gamma = 0$ 검정과 동일하게 된다. (AR(p)모형에 대해 일관된 표기법을 쓰기위해 $\gamma$로 바꿨을 뿐이다.) 이 때 검정통계량은 다음과 같다.
$$ \tau = \frac{\hat{\gamma}}{\sqrt{Var(\hat{\gamma})}} $$
여기서 $\tau$의 분포는 왜도(Skewness)가 양수인 DF분포를 따른다. DF분포는 가정된 모형에 따라 다음과 같은 형태를 띈다.
DF검정은 단측검정이기에 분포의 왼쪽 꼬리부분만 확인하면 된다. DF검정의 Motivation에 대해 간단히 설명하자면, 단위근 검정으로 z-검정을 사용하게 되면 단위근이 존재함(H0)에도 귀무가설을 기각하게 되는 오류를 범할 가능성이 커지게 된다. 따라서 제 1종 오류를 유지하는 새로운 임계치 설정이 필요했기에 모의실험을 통한 DF분포표가 제시된거라 볼 수 있다.
AR(p)모형으로 확장해보자. $\gamma $는 다음과 같이 유도된다. (유도 생략)
$$\gamma = -(1 - \Sigma_{i=1}^{p} \phi_{i} )$$
이후 절차는 p=1일 때와 동일하게 $H_{0} : \gamma=0$을 검정하면 된다.
ADF검정에 대해 두 가지만 더 알아두자. 첫 번째는 ADF는 AR(p)를 기본으로 한 검정이기에 p가 알려져있다고 가정한 검정 방법이다. p는 모르는게 일반적인 상황이기에 p값을 결정해야한다. (p값을 선택하는 여러 절차들이 있던데 생략.) 두 번째로 MA(q)의 경우 가역성조건만 만족하면 AR(∞)로 재표현 가능하기 때문에 ARMA(p,q)가 아니라 AR(p)만 고려해도 충분하다.
마지막으로 R에서 ADF test를 수행해보자. 'tseries' 패키지의 'adf.test()' 함수를 이용하면 p값을 자동으로 선택(Documentation)하고 검정을 수행한다. 주의할 점은 선형추세와 절편을 고려한 모형만 사용할 수 있다. (Issue) 만약 시계열의 절편이 없거나 선형적 추세가 존재하지 않는다는 사실을 사전적으로 알고 있다면 검정결과를 신뢰할 수 없다. 'aTSA' 패키지의 'adf.test()'는 세 종류({no trend, no intercept}, {no trend, intercept}, {trend, intercept})의 결과를 모두 출력해준다. 두 패키지의 ADF 검정결과를 비교해보자.
library(tseries)
library(aTSA)
set.seed(1234)
WN <- runif(100, min = -0.5, max = 0.5)
WN.ts <- ts(data=WN, start=c(1,1),frequency = 1)
tseries::adf.test(WN.ts, alternative='stationary')
# Augmented Dickey-Fuller Test
#
# data: WN.ts
# Dickey-Fuller = -5.0505, Lag order = 4, p-value = 0.01
# alternative hypothesis: stationary
aTSA::adf.test(WN.ts, nlag = 4+1, output = TRUE)
# Augmented Dickey-Fuller Test
# alternative: stationary
#
# Type 1: no drift no trend
# lag ADF p.value
# [1,] 0 -10.74 0.01
# [2,] 1 -6.35 0.01
# [3,] 2 -5.57 0.01
# [4,] 3 -4.82 0.01
# [5,] 4 -4.08 0.01
# Type 2: with drift no trend
# lag ADF p.value
# [1,] 0 -11.24 0.01
# [2,] 1 -6.81 0.01
# [3,] 2 -6.18 0.01
# [4,] 3 -5.55 0.01
# [5,] 4 -4.98 0.01
# Type 3: with drift and trend
# lag ADF p.value
# [1,] 0 -11.36 0.01
# [2,] 1 -6.93 0.01
# [3,] 2 -6.30 0.01
# [4,] 3 -5.68 0.01
# [5,] 4 -5.05 0.01
# ----
# Note: in fact, p.value = 0.01 means p.value <= 0.01
'통계 > 시계열 분석' 카테고리의 다른 글
[시계열 분석] KPSS 검정 with R (0) | 2022.08.19 |
---|---|
[시계열 분석] 결정적 추세와 확률적 추세 (0) | 2022.08.18 |
[시계열 분석] 차분(Differencing)과 ARIMA(p,d,q) 모형 (0) | 2022.08.16 |
[시계열 분석] 자기회귀이동평균모형 (ARMA Model) (0) | 2022.08.16 |
[시계열 분석] 이동평균모형 (MA; Moving Average) (0) | 2022.08.15 |
댓글