시계열 분석 자기회귀 모델 AR(p) 과정으로 예측 하기

  시계열 분석 자기회귀모델과정 예측 하기를 보려면,   앞에서 한 이야기를 이어서 보아야 한다.  

 소스 코드도 이어지기 때문에  앞에 내용을 미리 소스코드를 복사 해 놓고  같이 연결해서 봐야 이해가 간다.   앞의 내용을 보지 못했다면,  아래를 클릭 해서 살펴 보면 된다.  


AR과정으로 예측을 수행하는 방법을 설명 한다.  하나의 시간 단계를 앞서 예측하는 경우를 먼저 살펴보고 여러단계에 대한 예측은 어떻게 다른지 다루겠다.  후자가 보다 정교한 수학적 지식을 요구 하지만, 다행이도 코딩 관점에서는 두 개 모두 크게 다르지 않다. 


시간을 한 단계 앞서 예측하기 

  이미 알려진 (또는 추정된) AR 모델로 시간을 한 단계 앞서 예측하는 상황을 고려해 보자. 사실상 이미 필요한 정보를 모두 갖고 있다. 

지연 -1의 계수가 0으로 제한된 demand 데이터에 대한 (사전에 적합된 est.1) 모델로 계속 작업을 진행 한다. 

forecast 패키지의 fitted() 함수를 사용해 예측 그래프를  아래 코드와 같이 그린다.

 plot(demand[["Banking orders (2)"]], type= "l")   
  #fitted는 모델 적합에 사용된 데이터에 대한 예측값을 반환하는 함수
  # 예측기간을 지정하기 위한 h 인수를 추가로 전달 가능
  lines(fitted(est.1), col = 3, lwd =2)

실선은 원본 시계열 녹색은 적합된 시계열

 

NOTE AR(p) 모델은 이동 원도 함수 moving window function 이다.

   AR(3)모델로 예측을 생성할 때는 forecast 패키지의 fitted() 함수보다 더 방법이 있다. zoo 패키지의 rollapply() 함수를 사용하면 예측을 보다 명시적으로 수작업 코딩이 가능 하다. ar() 함수로 부터 얻은 계수들을 각 지점에서 서로 다른 지원에 대한 예측을 수행 하는데 필요한 입력 벡터로서 적용하면 된다.

이번에는 예측의 품질에 대해 생각해 보자.예측과 실제값 사이의 상관관계를 계산 하면 0.29로 계산된다.  일부 상황에서는 괞찮은 값일 수 있지 만, 때로는 데이터의 차분을 구하면 강한 관계로 보이는 것이 임의의 관계로 대체 되어 제거되는 경우도 있다.

이런 상황은 특히 완벽한 정상이 아닌 데이터에 모델을 적합 시킬 때 발생한다.  즉 미확인된 추세로 인해 모델의 성능이 좋은 것처럼 보이는 것인데,  이는 사실상 모델링 문제라기 보다 모델링 이전에 다뤄져야만 하는 데이터의 특성 이다. 

모델이 한 기간에서 다음 기간으로의 변화를 잘 예측하는지 확인하려면 원본 데이터의 계열과 예측 모두에 대한 차분을 구해서 비교해야 한다.  차분을 구한 다음에도 예측과 데이터가 유사한 패턴을 보인다면 모델이 의미가 있다고 판단 된다. 

## R
  plot(diff(demand[["Banking orders (2)"]]),diff(fitted(est.1)))

원본계열 및 예측의 차부 사이에는 강한 상관관계가 있으며 이는 모델이 실제 근본적인 관계를 식별 할 수 있음을 시사함


또한 원본 계열의 차분 그래프를 그리고 상관관계를 살펴봄으로써, 동일 시기에 동일한 움직임을 예측하는지의 여부를 검정할 수도 있다.  이러한 그래프는 상관관계 값을 계산하여 확인 되는 몇 가지 상관관계를 드러나게도 한다.   이 모델은 한 시간 단계에서 다음 단계로의 변화를 예측하는 경우에도 잘 동작 하는 것으로 보인다. 

예측과 실제값에 대한 원래의 그래프를 다시 한번 살펴 보면,  예측이 실제값보다 덜 가변적이라는 주요 차이점을 알 수 있다.  미래의 방향성을 올바르게 예측 할 수는 있지만,  한 기간에서 다른 기간으로의 변화 규모를 올바르게 예측하는 것은 아니다.   이는 그 자체로는 문제가 아닐 수 있지만, 예측 forecast 이  예측된 분포 predicted distribution를 수단으로 사용한다는 사실을 반영하며,  예측이 샘플링 된 데이터 보다 당연히 변동성이 낮을 수밖에 없는 것이다. 

통계 모델의 이러한 속성은 보다 더 안정적인 미래를 제안하는 듯한 시각화 때문에 종종 잊혀지곤 한다.  제시된 시각화에 포함된 그래프의 의미는 상기 하자. 



 여러 시간 단계를 앞서 예측하기 

 우리는   더 먼 미래를 예측 하고 싶을 수도 있다.   우선 두 단계를 앞선 예측 상황을 상상해 보자.  먼저 해야 할 일은 한 단계 앞선 예측을 수행하고,  그 결과를 활용하면 $y_{t+1}$를 예측 하는데 필요한 $y_t$값을 제공 해 줄 수 있을 것이다. 
 
   한 단계 앞선 예측을 수행한 현재 만든 모델을 두 단계 앞선 예측으로 전환할 때,  이과정이 실제로 필요한 것은 아니다. $y_t$ 예측에는 $y_{t+1}$ 값이 사용되지 않았기 때문이다.  두 단계 앞선 예측을 하기 위해 알아야 할 모든 것은 이미 알려져 있어서 추측할 필요가 없다.  한 단계 앞선 예측에서 했던 것과 동일한 일련의 값을 제시해야 한다.  새로운 오류나 변동성의 원인은 없다. 

그러나 두단계 보다 더 미래를 예측하고 싶다면 입력으로 예측된 미래의 값을 생성할 필요가 있다.  $y_{y+3}$를 예측하는 예를 살펴보자.  미래의 값이 생성되어야 하므로 $y_{t+1} $및 $y_t$에 대한 계수를 가진 모델이 필요하다.  따라서 $y_{t+1}$ 및 $y_t$에 대한 계수를 가진 모델이 필요하다.   따라서  $y_{t+1}$와 $y_t$ 값 모드를 예측해야 하며  $y_{t+3}$ 예측에 이 추정된 값들을 사용해야 한다. 

  이번에는 fitted() 함수 호출 시 추가 파라미터  h를 사용한다.  다시 한번 집고 넘어가면,  객체 est.1은 지연 -1 항의 계수가 0으로 제한된 AR(3) 프로세스를 표현 한다. 

## R 
   fitted(est.1, h =3)
## Time Series:
## Start = 1 
## End = 60 
## Frequency = 1 
##  [1]        NA        NA        NA  45068.26  79995.80 103142.74  80892.15
##  [8]  94666.67  86121.80  84016.70  83223.69  69388.38  77780.20  71690.39
## [15]  93239.98  79719.12  65295.40  73780.52  86998.24  76037.14  94257.81
## [22]  55003.70  79151.48  98353.57  87008.64  71305.51  60889.81  88977.87
## [29]  85022.24  87078.82  88175.41  51949.21  84911.04  68709.61  88584.61
## [36]  51143.74  85577.65  92729.36  82711.52  59792.97  83892.46  89329.90
## [43]  75805.68  50794.57  84473.59  86695.31  90825.70  85539.27  68643.69
## [50]  84555.00  78247.54  82934.49  84936.18  54956.70  77425.29  92659.24
## [57]  96247.63  79859.58  60647.62  77478.22
     이 편리한 함수를 사용하면 미래의 다양한 범위(기간)의 다단계 예측을 쉽게 할 수 있다. 다음에 다룰 예제는 같은 모델로 점점 더 먼 미래의 예측을 한 분산을 살펴 보자 


 미래 예측에 대한 그래프임 y측이 늘어선 값은 더 먼 미래를 예측할 수록 점점 더 좁아지며, 모델은 예측을 과정의 평균값으로서 일정히 제공하는 것으로 보인다. 


위 그림에서 예측기간의 증가에 따라 예측의 분산이 감소하는 것을 보여 준다.  오직 유한한 이전 시점만 입력 데이터의 대한 계수의 영향을 미치기 때문에 예측의 기간이 멀어질수록 실제 데이터의 중요도는 더 떨어지게 된다.  이는 모델의 중요한 한계점을 강조하기도 하는 내용이기도 하다.  

이는 시간이 지남에 따라 예측이 무조건부 예측 unconditional prediction으로 수렴 한다고 표현될 수도 있다.  즉 데이터에 대한 조건 이 없는 것이다.  예측의 기간이 늘어 날수록 미래의 예측은 실제 데이터의 평균에 가까워진다.  따라서 예측값이 무조건적인 평균값에 가까워지면서 예측값 및 오차항 모두에 대한 분산은 0으로 줄어 든다. 


## R
 var(fitted(est.1, h=3), na.rm = TRUE)
## [1] 174870141
 var(fitted(est.1, h=5), na.rm = TRUE)
## [1] 32323722
 var(fitted(est.1, h=10), na.rm = TRUE)
## [1] 1013396
 var(fitted(est.1, h=20), na.rm = TRUE)
## [1] 1176.689
 var(fitted(est.1, h=30), na.rm = TRUE)
## [1] 3.388713

 먼 미래의 예측은 단순히 과정의 평균을 예측 할 뿐이다.  현재 데이터는 먼 미래 어느 시점을 파악 하는데 유용한 정보를 제공하지 못하기 때문에 예측은 과정의 알려준 기준 속성 (예 : 평균)으로 점차 회귀 한다. 
 

# 참고서적 :  실적 시계열 분석  한빛미디어





댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...