본문 바로가기
## 오래된 게시글 (미관리) ##/R

16. 시계열분석의 개념과 간단한 분석

by #Glacier 2018. 11. 21.
반응형

안녕하세요? 오랜만에 글 쓰는 것 같군요. 여러모로 바쁜 일이 있어서 며칠 포스팅을 못했습니다..ㅠㅠ(정신없어)

그럼 바로 시계열분석의 개념에 대해서 알아볼까요?


개념을 알아보는 데 앞서,

시계열분석은 Cross-section Analysis라고도 합니다.

즉, 고정된 시점에서의 여러 개의 데이터를 가지고 분석하는 것이지요.

여러 시점의 여러 데이터를 가지고 하는 분석은 패널 분석이라고 합니다.


1. 정상성(Stationary)

 -평균이 일정 : 모든 시점에 대해서 일정한 평균을 가진다.

 -평균이 일정하지 않은 시계열은 차분(difference)을 통해 정상화 할 수 있다.

 -차분(difference)은 현 시점 자료에서 전 시점 자료를 빼는 것.

 -일반차분(regular difference) : 바로 전 시점의 자료를 빼는 것

 -계정차분(seasonal difference) : 여러 시점 전의 자료를 빼는 것. 주로 계절성을 갖는 자료를 정상화 하는 데 사용한다.

 -분산도 시점에 의존하지 않음 : 분산이 일정하지 않은 시계열은 변환(transformation)을 통해 정상화 할 수 있다.

 -공분산도 단지 시차에만 의존, 실제 특정 시점 t, s에는 의존하지 않는다.


2. 시계열 모형

  1) 자기회귀 모형 (AR모형, auto regressive model)

 -p시점 전의 자료가 현재 자료에 영향을 줌. (즉, p시점 전의 시계열이 현재 시점과의 공분산이 있다.)

 


 현시점 = t-1시점 + t-2시점 +  --- + t-p시점 + 백색잡음(at),혹은 오차항

 화이 : p 시점이 현재에 어느 정도 영향을 주는지 나타내는 모수

 즉 현재시점은 과거 시점에 의해서 영향을 받고 있는 모형이 됩니다.


  2) AR(1) 모형 : 

  3) AR(2) 모형 : 

 즉, AR(1)은 1시점 전에 의해 현재시점이 영향을 받는 모형, AR(2) 모형은 2시점 전 까지 현재시점에 영향을 주고 있는 모형입니다.

 

p.s

 사실 시계열 모형에서도 가정이 있습니다.

 ex) 매 시점들 끼리만 공분산이 0이다 = contemporary exogenous 모든 시점에 대해서 현시점과의 공분산이 =0이다 (Strictly exogenous)등

  여러 가지 상황에 대해 여러 가지 가정이 있는데요,

  제가 데이터 분석 파트에 쓰는 것은 이런 가정을 간단하게만 얘기하고, R을 통해서 보는 방법을 위주로 얘기하려고 합니다.

  아직 머나먼 여정이 남아있지만, 이렇게 기본적인 것들을 다 담아놓은 후에, 계량경제게시판에 조금 더 심화된 과정을 적어내릴 예정입니다!

  4) 자기상관함수(ACF, auto-correlation funtion)는 빠르게 감소, 부분자기함수(PACF, partial-correlation function)는 

어느 시점에서 절단점을 가짐.

즉 가정 중에서, 현시점에 대해서 p시점 전까지 영향을 주고 있는데, 그 p시점까지의 자기상관이 빠르게 감소한다는 이야기는, 

    오~랜기간에 걸쳐서 현시점에 영향을 주는 것이 아니라, 단기적으로 영향을 준다면, 그 정도는 우리가 이해하고 넘어갈 수 있다. 

정도로 이해 하시면 될 것 같습니다.

    예를 들면, 범죄가 늘어날수록 경찰을 많이 배치한다면, 사실상 a시점의 범죄 발생 수는 다음 a+1시점의 경찰 증원에 영향을 줄 것입니다.

따라서 a시점의 범죄 발생 수가 a+1시점의 경찰 증원에만 영향을 준다면, 이 정도는 weak stationary로 이해할 수 있습니다. 하지만 장~기간영향을 준다면 그 자기상관이 0으로 수렴하는 데에는 오~랜시간이 걸릴 것입니다. 따라서 이 부분은 바꿔서 생각해보면 분석할만큼 놀라운 일도 아니라는 셈이 됩니다.

어느 시점에서 절단면을 가진 다는 것은, 0으로 수렴한다는 뜻이라고 이해하시면 됩니다.


  5) 이동평균 모형 (MA 모형, Moving average model)

   (1) 유한 개수의 백색잡음의 결합 -> 항상 정상성을 만족.

   

  (2) 1차 이동평균 모형(MA(1) 모형) -> 바로 전 시점의 백색잡음의 결합으로 이루어진 모형.

   

  (3) 2차 이동평균 모형(MA(2) 모형) -> 바로 전 시점의 백색잡음 + 시차가 2인 백색잡음의 결합.

   

   ex) ACF는 3시점 이후 절단점을 보이고, PACF가 빠르게 감소하면, MA(2) 모형이라고 볼 수 있다.



  3. 자기회귀누적이동평균 모형(ARIMA(p,d,q) 모형, autoregressive integrated moving average model)

  -ARIMA모형은 비정상시계열 모형. (non-stationary)  

  -차분이나 변환을 통해 AR모형, MA모형, 이 둘을 합친 ARMA모형으로 정상화 할 수 있다.

  -p는 AR모형, q는 MA모형과 관련된 차수

  -시계열 {Zt}의 d번 차분한 시계열이 ARMA(p,q) 모형이면, 시계열{Zt}는 차수가 p,d,q인 ARIMA 모형이라 한다.

  -d=0이면 ARMA(p,q) 모형이라 하며, 이 모형은 정상성을 만족함.

  -p=0이면, IMA(d,q) 모형이라 하며, d번 차분하면 MA(q)모형을 따름.

  -q=0이면, ARI(p,q) 모형이라 하며, d번 차분하면 AR(q) 모형을 따름.

** 조금 복잡하죠..?  계속 봐야 이해가 됩니다.

   1) 모델링 프로세스

   - data를 시각화하여 비정상 관찰치를 파악하고, 패턴을 이해한다.

   - 정상화가 되도록 차분을 시도

   - ACF/PACF를 이용해 AR(p) 또는 MA(q) 모델의 적정성 판단

   - 여러 가능한 모델의 AIC값을 살펴보고 최적 모델을 선정

   - 잔차의 ACF와 portmanteau test를 통해 잔차 확인. 잔차가 백색잡음이 아닌 것 같으면 모델 변경

   - 잔차 확인이 완료되었으면 모델을 이용해 예측 수행.

** 여기서 백색잡음(White noise)이 조금 생소하시죠?... 그게 뭔 뜻이냐면

   백색광선을 프리즘에 통과시키면 무지갯빛 스펙트럼이 나타나는 것처럼 오차항을 분석하면 어떻게든 치우치지 않고, 

   여러 가지 다양하고 독립적이라고 이해하면 됩니다.


   4. 분해 시계열

-시계열에 영향을 주는 일반적인 요인을 시계열에서 분리해 분석하는 방법. 시계열을 구성하는 요소는 4가지로 분류한다. 시계열 값을 예측하는 것도

 중요하지만, 시계열 구성요소에 대한 이해를 하는 것도 비즈니스적으로 의미가 크다. 예를 들어 추세요인은 기업 또는 브랜드의 매출이 성장단계인지, 하향단계인지

 파악하여 전략을 변경할 수 있다. 혹은 잘못된 해석을 방지한다.

  1) 추세 요인 (Trend Factor) : 자료가 오르거나 내리는 추세를 따르는 경우. 선형, 2차식 형태, 지수적 형태 등

  2) 계절 요인 (Seasonal Factor) : 요일, 월, 사계절의 각 분기에 의한 변화 등 고정된 주기에 따라 자료가 변화하는 경우

  3) 순환 요인 (Cyclical Factor) : 명백한 경제적이거나 자연적인 이유 없이 알려지지 않은 주기를 가지고 변화하는 자료.

  4) 불규칙 요인 (Irregular Factor) : 위의 세 가지 요인으로 설명할 수 없는 오차에 해당하는 요인.

**. 즉, 자료가 서로 관계가 없는데도 불구하고 저러한 요인들로 인해서 뭔가 해석이 되버리거나, 해석이 안될 수 있습니다.


** 이제 R을 이용해 분석해보겠습니다.

  [ R을 이용한 시계열 분석 사례 ]

data(lynx)

head(lynx)

[1] 269 321 585 871 1475 2821

 #데이터 lynx는 1821년부터 1934년까지의 캐나다 스라소니의 수에 대한 데이터입니다.

ts.plot(lynx)

 * 위 그래프를 보면, 약 10년주기로 오르내리는 모양을 확인할 수 있습니다. 이를 확인하기 위해 ACF를 실행.



 # 이제 비정상성을 제거하기위해 log 함수를 적용해보겠습니다.

ts.plot(log(lynx))


acf(log(lynx))

#그래프가 살짝 바뀐것을 볼 수 있죠~ 이제 PACF를 확인해볼까요.

acf(log(lynx), type="partial")


# 여기서 보면 log가 11일 때 PACF에 절단면이 생긴 것을 알 수 있죠

# 이제 AR Model을 ar.yw()함수를 이용해 생성해보겠습니다.

llynx.ar<-ar.yw(log(lynx))

# 생성된 오브젝트의 구성요소를 확인하기 위해 names() 함수를 사용합니다. 구성요소 중 order.max를 보려면

# 전에도 사용했었던 $를 사용해서 살펴볼 수 있습니다.

names(llynx.ar)

 [1] "order"        "ar"           "var.pred"     "x.mean"       "aic"         
 [6] "n.used"       "order.max"    "partialacf"   "resid"        "method"      
[11] "series"       "frequency"    "call"         "asy.var.coef"


llynx.ar$order.max

[1] 20


# ar.yw()함수는 AIC(Akaike's information criterion)을 사용해 모델의 차수를 결정합니다. 이 정보는 llynx.ar의 AIC에 있습니다.

ts.plot(llynx.ar$aic, main="AIC for Log(Lynx)")


#그래프에서 AIC값이 가장 작은 부분은 p=11인 부분입니다. 구성 요소 중 order에 이 값 11이 있으며, coefficient는 구성요소 ar에서 확인이 가능합니다.

llynx.ar$order
[1] 11

llynx.ar$ar
 [1]  1.13870861 -0.50803338  0.21265078 -0.27017697  0.11269003 -0.12398034
 [7]  0.06772419 -0.04004242  0.13370007  0.18527305 -0.31095853


# 즉, 11번째 까지의 계수가 나왔습니다. 따라서 11차의 AR모델을 만들 수 있습니다.

 


# 현재 t시점은 t-1시점에 1.14만큼 영향을 받고 p시점=11일 때까지 점점 영향이 감소하는 것도 볼 수 있죠.

# AR모델을 검은색 선으로 그리고, 원본 데이터를 붉은색 선으로 그려 정확도를 확인할 수 있습니다.



# 요렇게 확인해볼 수 있습니다.


오늘은 시계열분석에 대해서 알아보고, 간단하게 R을 이용해 시계열 분석을 실시해 봤는데요~ 다음시간에도 시계열 분석 실습을 이어가보도록 하겠습니다.



반응형

'## 오래된 게시글 (미관리) ## > R' 카테고리의 다른 글

18. 다차원척도법 (Multidimensional Scaling, MDS)  (4) 2018.11.21
17. 시계열 분석-2  (0) 2018.11.21
15. R을 통한 회귀분석 실습  (0) 2018.11.20
14. 회귀분석의 개념  (0) 2018.11.20
13. 상관분석  (2) 2018.11.20