logo

디키-풀러 테스트 📂통계적검정

디키-풀러 테스트

가설검정

시계열 데이터 $\left\{ y_{t} \right\}$ 가 주어져 있다고 하자.

  • $H_{0}$: 데이터 $\left\{ y_{t} \right\}$ 는 정상성을 가지지 않는다.
  • $H_{1}$: 데이터 $\left\{ y_{t} \right\}$ 는 정상성을 갖는다.

설명

디키-풀러 테스트는 시계열 데이터가 정상성을 가지는지 가지지 않는지를 확인할 때 사용하는 가설검정이다. 정상성을 가지지 않으면 차분을 통해 평균을 일정하게 만들어주어야 한다. 주의해야할 것은 이러한 진단이 평균에 대해서만 일어난다는 것이다. 분산에 대해서는 신경쓰지 않기 때문에 이에 대한 별도의 테스트가 필요하다.

코드

실습

R에서는 adf.test() 함수를 통해 쉽게 디키-풀러 테스트를 할 수 있다.

내장데이터 oil.price를 불러와보자.

994F13335C734C0C26.png 20190227\_134432.png

데이터를 보면 딱 봐도 뒤로 갈수록 증가하는 경향이 있음을 알 수 있다. 실제로 디키-풀러 테스트를 해보면 p-value가 $0.99$ 로 아주 높게 나타난다. 귀무가설을 기각하지 못했으므로 데이터는 정상성을 갖는다고 할 수 없다.

991C8D335C734C0D20.png 20190227\_134448.png

한편 차분을 한 뒤의 데이터는 $0$ 을 중심으로 움직임을 알 수 있다. 실제로 디키-풀러 테스트를 해보면 귀무가설을 기각해서 정상성을 갖는다고 한다. 그러나 보다시피 뒤로 갈 수록 분산은 점점 커진다. 디키-풀러 테스트에서 데이터가 정상성을 가진다는 것은 어디까지나 평균이 일정하다는 의미지, 완전한 정상성 자체를 보장하는 것이 아니다.

전체코드

library(tseries)
 
data("oil.price")
adf.test(oil.price)
adf.test(diff(oil.price))