시계열분석에서의 차분
정의 1
- 오퍼레이터 를 과 같이 정의하고, 백쉬프트backshift라 한다.
- 오퍼레이터 를 그리고 와 같이 정의하고 차분 이라한다.
설명
차분의 정의에 따르면 차 차분은 와 같이 계산되며, 차 차분은 와 같이 계산된다. 다시 말해 에 차분을 두 번 취했다고 해서 가 되지는 않는다. 이렇게 길게 늘어지기만 하는 차분은 계절형 차분으로 따로 정의된다.
시계열에서 차분이 필요한 이유는 트렌드trend가 있는 데이터를 다룰 때 편리하기 때문이다. 시계열분석에서 트렌드란 ‘데이터의 값이 일정 기간동안 증가하거나 감소하는 경향’을 말하는데, 이 경우 정상성에 문제가 있다. 해서 적절하게 차분을 취해 데이터가 정상성을 갖도록 하는 전처리를 거치게 된다. 단순히 증가하거나 감소하는 정도라면 한 번으로 충분하며, 복잡합 모양을 갖추면 그만큼 차분을 많이 취해야 할 수도 있다.
눈대중만으로 차분을 취하는 게 맞는지, 얼마나 취하는 게 적절한지 확신이 서지 않을 땐 보통 디키-풀러 테스트를 사용하며, 거꾸로 왜 차분을 더 이상 취할 필요가 없는지를 정당화하는데도 쓸 수 있다.
실습
TSA
패키지의 oil.price
데이터를 살펴보자.
oil.price
는 1986년부터 2005년까지의 원유 가격에 대한 데이터다. 뒤로 갈수록 급등세가 강하기 때문에 정상성이 결여되어있다고 할 수 있다. 이런 데이터는 분석이 곤란하기 때문에 차분을 취해줌으로써 트렌드를 제거한다.
R 에서 차분을 취하는 방법은 아주 쉽다. diff()
함수를 사용하면 첫번째 관측치를 탈락시키고 차분된 데이터를 리턴한다. 자주 쓸 일은 없지만 lag=n
라는 옵션을 줌으로써 차 차분 역시 간단하게 할 수 있다.
차분을 취한 결과 등락 자체는 여전히 거세지만 평균적으로는 근처에서 움직임을 확인할 수 있다.
코드
아래는 R 예제 코드다.
library(TSA)
data(oil.price); oil.price
win.graph(4,4); plot(oil.price,main='oil.price\')
diff(oil.price)
win.graph(4,4); plot(diff(oil.price),main='∇oil.price\')
diff(oil.price,lag=2)
같이보기
Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p90. ↩︎