데이터 한 그릇

5)시계열의 통계 모델 본문

시계열 분석/Practical TIme Series Analysis

5)시계열의 통계 모델

장사이언스 2022. 10. 25. 10:38

이 장에서는 시계열에 대한 몇 가지 선형적인 통계 모델을 살펴볼 것

이 모델들은 선형 회귀와 관련이 있지만, 각 데이터를 서로 독립적으로 가정하는 비시계열 데이터에 적용되는 표준 방법과는 다른 관점으로 같은 시계열 내 데이터 간 발생하는 상관관계를 알 수 있게 해준다

 

이번 장에서 다루는 모델은 아래와 같다

 

  • 자귀회귀(Autoregressive,AR)
  • 이동평균(Moving average, MA)
  • 자기회귀누적이동평균(Autoregressive integrated moving average, ARIMA)
  • 벡터자기회귀(Vector autoregression, VAR)
  • 계층형(hierarchical)

 

위 모델들은 전통적으로 시계열 예측의 핵심 요소


1. 선형회귀를 사용하지 않는 이유

 

선형회귀 분석은 독립항등분포(IID) 데이터가 있다는 것을 가정하기 때문에 시계열 데이터는 해당되지 않는다

시계열 데이터는 서로 시간이 가까울수록 서로 강한 관계를 맺는 경향이 있다. 즉, 시계열 데이터는 시간적인 상관관계가 없다면 미래를 예측하거나 시간의 역동성을 이해하는 등 전톡적인 시계열 작업에 유용하다고 보기 어렵다

 

하지만 선형회귀가 쓸모 없는건 아닌데, 아래와 같은 조건을 만족할시 최소제곱선형회귀(least squares linear regression) 모델을 시계열 데이터에 적용해볼 수 있다

 

시계열의 행동에 대한 가정

 

  • 시계열은 예측 변수에 대한 선형적 반응을 보인다
  • 입력 변수는 시간에 따라 일정하지 않거나 다른 입력 변수와 완벽한 상관관계를 갖지 않는다 (이는 단순히 데이터의 시간 차원을 설명하기 위해 전통적인 선형회귀의 독립변수에 대한 요구 사항을 확장한 것)

 

오차에 대한 가정

 

  • 각 시점의 데이터에 대한 모든 (앞뒤의) 시기의 모든 설명변수(explanatory virable)에 대한 예상 오차 값은 0이다
  • 특정 시기의 오차는 과거나 미래의 모든 시기에 대한 입력과 관련이 없다 (그 시점에만), 따라서 오차에 대한 자기상관 함수 그래프는 어떠한 패턴도 띄지 않는다(시차에 독립적) 
  • 오차의 분산은 시간으로부터 독립적

 

위와 같은 가정들이 성립된다면 보통최소제곱회귀(ordinary least squares regression)는 주어진 입력에 대한 계수의 비편향추정량(unbiased estimator)이 되며 이는 시계열 데이터에서도 마찬가지다

 

비편향추정량이란?
추정치가 과대/과소 평가된 것이 아니라면, 해당 추정치는 비편향추정량을 사용한다고 볼 수있다

2. 시계열을 위해 개발된 통계 모델

 

  • 시계열을 위해 특별히 개발된 통계 방법을 다룬다
  • 시계열의 미래 값이 과거 값의 함수라고 정의하는 매우 간단한 자기회귀 모델을 시작으로, 단별량 시계열 데이터를 위해 개발된 다양한 방법들을 살펴볼 것
  • 그 다음으로 다변량 시계열에 대한 벡터자기회귀분석을 포함해서 GARCH 모델과 계층적 모델링과 같은 특수한 시계열 방법들을 추가로 알아보고 점점더 복잡한 모델을 다룰 것

 

2.1 자기회귀 모델

 

자기회귀(Autoregressive, AR) 모델은 과거가 미래를 예측한다는 직관적인 사실에 의존한다

따라서 특정 시점 t의 값은 이전 시점들을 구성하는 값들의 함수라는 시계열 과정을 상정한다

 

대수학을 활용한 AR 처리 과정의 제약 사항 이해

 

시계열 이외의 정보가 없을 경우 많은 사람이 첫 번째로 시도하는 방법이 자기회귀이다

자기회귀는 그 이름을 통해서 알 수 있듯이 과거 값들에 대한 회귀로 미래 값을 예측하는 방식이다

가장 단순한 자기회귀식은 아래와 같다

 

AR(1): y_t = b_0 + b1 x y_t-1 + e_i

 

이때 오차항 e_i 는 평균이 0이고 분산이 일정하다고 가정한다. 여기서 자기회귀라는 용어는 직전 시간만을 되돌아보는 AR(1) 을 이야기함

AR() 표기를 일반화할 때 p를 사용할 수 있다. 즉 AR(p) 라고 식을 일반화할 수 있으며 p는 가장 최근 값들의 개수를 의미한다

 

 

시계열 분석의 가장 핵심은 정상성이다. 정상성이 무엇인지 그리고 정상성을 어떻게 확인할 수 있는지 앞의 장들에서 확인했다

정상성은 AR 모델을 포함한 많은 시계열 모델에서 기본적으로 가정한다

이때 AR모델이 정상인지에 대한 조건은 정상성의 정의로부터 결정된다

 

 

이후 AR 모델에 대한 개념적인 설명이 부족하다고 판단하여 다른 블로그 참조

 


https://assaeunji.github.io/statistics/2021-08-23-arima/

AR 모형의 다양한 형태

 

아래와 같이 차수가 1인 AR(1) 모형을 살펴보자

 

𝝓_1과 c의 값에 따라서 AR은 다양한 형태를 가진다

 

1. 백색 잡음(White noise model)

  • y_t=ϵ_t
  • 𝝓_1 = c = 0 이면 y_t 는 백색 잡음이다
  • 과거의 값으로 현재의 값을 예측할 수 없는 랜덤한 상태

2. 확률 보행(Random walk model)

  • y_t=y_t−1+ϵ_t
  • 현재의 값을 예측할 수 있는 가장 좋은 어제의 값
  • 𝝓_1 = 1 그리고 c = 0이면 확률보행 모형이다. 이 모형은 앞서 설명한대로 단위근을 가지고 있기 때문에 정상성을 띠지 않는다.
  • 오늘의 시계열 값인 y_t 는 어제의 시계열 값인 y_t-1과 예측할 수 없는 변화량(가우스 분포 모양)으로 설명된다는 것을 의미한다, 결과적으로 현재의 값을 예측할 때 가장 좋은 값은 어제의 값이다라는 의미
  • 확률론적 추세 (Stochastic trend)가 존재하는 가장 단순한 모형

3. 표류가 있는 확률 보행 (Random walk model with a drift)

  • y_t = c + y_t−1 + ϵ_t
  • 시간이 지남에 따라 평균적으로 값이 증가하거나 감소하는 형태
  • 𝝓_1=1, c≠0 인 경우
  • 상수 c를 표류 (drift)라 합니다. 그래서 이 모형은 표류가 있는 확률 보행 (Random walk with a drift) 모형입니다.
  • 이 모형은 아래와 같이 일반화 할 수 있다
    •  

  • 확정적인 추세 (Deterministic trend)를 가지고 있고, c>0이라면 시간에 따라 평균적으로 증가하는 모습을 보인다

 

4. −1<𝝓_1<1 인 정상성을 만족하는 모형

  • −1< 𝝓_1 <1이면 정상성 (Stationarity)을 띠는 AR (1)모형입니다.
  • 이를 통해서 정상성을 확인할 수 있음, 이를 구하는 자세한 공식은 위의 링크를  참조

 

AR(p) 모델의 파라미터 선택

 

데이터가 AR 모델에 적합한지를 평가하려면 먼저 과정과 편자기상관함수(Partial autocorrelation function, PACF)의 그래프를 그려보는 것이 좋다

AR 과정의 PACF는 AR(p) 과정의 차수 p를 넘는 부분을 0으로 잘라버리는데, 그 결과 데이터에서 실증적으로 볼 수 있는 AR과정의 차수를 구체적이며 시각적으로 표시한다 => 이를 통해, 0으로 잘라버리기 직전의 p를 확인하여 유의미한 차수를 결정

 

반면에 AR 과정은 시간의 위치가 증가(미래) 할수록 지수적으로 완화됨을 의미하는 자기상관함수(ACF) 의 형태를 갖지만, 유의미한 ACF 는 아니다

 

실습

 

 

 

 

 

위의 PACF 그래프를 살펴보면 lag 3의 값이 임계값 5% 초과함을 알 수 있다. 이는 R의 stats 패키지가 제공하는 ar() 함수의 결과와 일치한다

파라미터 값을 지정하지 않은 경우 ar() 함수는 자동으로 자기회귀 모델의 차수를 선택한다

 

fit <- ar(demand[['Banking.orders..2.']], method = 'mle')
fit

 

 

 

 

R의 ar() 함수의 문서에 따르면 (기본 파라미터로) 선택된 차수는 아케이케 정보기준(Akaike information criterion(AIC)) 에 따라 결정된다.

아케이케 정보기준은 PACF 로 얻은 시각적 선택이 정보기준의 최소화로 얻은 선택과 일관성을 보여주기 때문에 유용

 

 

다음은 차수 파라미터를(3,0,0) 으로 설정하여 AR(3) 을 적합하는 함수의 호출 방법, 여기서 3은 AR 요소의 차수

 

est <- arima(x = demand[['Banking.orders..2.']],
             order = c(3,0,0))
est

 

 

 

 

모델의 적합도를 검정할 수 있다

그 방법으로 첫 번째로는 잔차(오차)에 대한 ACF그래프를 그리는 것

 

ACF값 중 어느 것도 임계값을 넘기지 않는다. (유의미)

이 그래프로는 잔차들간의 자체상관 패턴을 찾아볼 수 없다

 

그 다음으로 모델의 적합도를 평가하는 방법은 륭-박스 검정.

시계열의 임의성을 검정하는 방법으로 다음과 같은 귀무가설 및 대립가설을 검정한다

 

H0: 데이터가 일련의 상관관계를 나타내지 않는다

H1: 데이터가 일련의 상관관계를 나타낸다

 

이 검정 방법은 AR(보다 일반적으로는 ARIMA 모델에 적용되는 것이 일반적

구체적으로는 모델 자체보다는 적합된 모델의 잔차에 적용된다

 

Box.test(est.1$residuals, lag = 10, type = 'Ljung', fitdf = 3)

 

 

p-value 의 값이 0.05 이상이므로 귀무가설을 기각할 수 없다. 이로부터 잔차의 ACF 그래프로 발견한 사실을 확정지을 수 있다.

 

AR(p) 과정으로 예측하기

 

AR 과정으로 예측을 수행하는 방법을 설명

하나의 시간 단계를 앞서 예측하는 경우를 먼저 살펴보고, 여러 단계에 대한 예측은 어떻게 다른지를 다룬다

후자가 보다 정교한 수학적 지식을 요구하지만, 코딩 관점에서는 두 개 모두 크게 다르지 않다

 

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

 

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

lines(fitted(est.1), col = 3, lwd = 2)

 

AR(p) 모델은 이동윈도함수(moving window function)

 

이번에는 예측의 품질에 대해 생각해볼 수 있다

예측과 실제값 사이의 상관관계를 계산하면 0.29 로 계산된다

일부 상황에서는 괜찮은 값일수도 있지만, 때로는 데이터의 차분을 구하면 강한 관계로 보이는 것이 임의의 관계로 대체되어 제거되는 경우도 있다

 

모델이 한 기간에서 다음 기간으로의 변화를 잘 예측하는지 확인하려면 원본 데이터의 계열과 예측 모두에 대한 차분을 구해서 비교해야한다

차분을 구한 다음에도 예측과 데이터가 유사한 패턴을 보인다면 모델이 의미 있다고 판단할 수 있다

(원본 계열 및 예측의 차분 사이에 강한 상관관계가 있다면, 이는 모델이 실제로 근본적인 관계를 식별할 수 있음을 나타낸다)

 

원본 계열의 차분 그래프를 그리고 상관관계를 살펴봄으로써, 동일 시기에 동일한 움직임을 예측하는지의 여부를 검정할 수도 있다

이러한 그래프는 상관관계 값을 계산하여 확인되는 몇 가지 상관관계를 드러나게도 한다

 

예측과 실젯값에 대한 원래의 그래프를 다시 살펴보면, 예측이 실젯값보다 덜 가변적이라는 주요 차이점을 알 수 있다

미래의 방향성을 올바르게 예측할 수는 있지만, 한 기간에서 다른 기간으로의 변화 규모를 올바르게 예측하는 것은 아니다

 

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

fitted(est.1, h=3)

 

지금까지 AR 모델을 살펴봤는데, 중요한 점은 AR(곧 다룰 MA, ARMA, ARIMA도 마찬가지) 모델이 단기 예측에 가장 적합하다는 것

이러한 모델들은 먼 미래의 예측 기간이 주어지면 그 예측 능력을 상실한다

 

 

to be continue...

프로젝트로 인해 업로드 지연..

Comments