실전 시계열 분석의 기초적인 부분은 6장에 있다. 6장 초반부에 나오는 수학적인 설명이 이 서적의 진입 장벽이고, UCI daily_Demand_Forecasting_Orders 은행 수요 데이터 셋을 데이터 프레임으로 바꾸는 것도 하나의 큰 장벽이다.
모델의 파라미터 선택 부분을 이해 하려면, 앞의 내용(아래 링크)을 어느 정도 이해 하고 와야 한다.
https://rdmkyg.blogspot.com/2021/08/ar.html
https://deep-diver.github.io/practical-time-series-analysis-korean/
하지만, 이번 장에서는 아주 쉽게 데이터 셋을 얻고 내용도 정리 할 수 있도록 하겠다.
AR(p) 모델의 파라미터 선택
데이터가 AR 모델에 적합한 지를 평가 하려면 먼저 과정과 편자기상관함수 partial autocorrelation function (PACF)의 그래프를 그려보는 것이 좋다. AR 과정의 PACF는 AR(p)과정의 차수 p를 넘는 부분을 0으로 잘라버리는데, 그 결과 데이터에서 실증적으로 볼 수 있는 AR 과정의 차수를 구체적이며 시각적으로 표시한다.
반면 AR 과정은 시간의 위치가 증가(미래) 할수록 지수적으로 완화됨을 의미하는 자기상관함수 autocorrelation function(ACF)의 특징적 형태를 갖지만, 유의미한 ACF는 아니다.
실제 UCI daily_Demand_Forecasting_Orders을 사용 한다. 먼저 시간의 순서 대로 데이터를 그리고 AR 과정으로 모델링 할 것이므로 PACF로 AR 과정의 시차를 잘라 낸다.
# 패키지 로딩
library(readxl)
library(httr)
# 데이터 셋 가져오기
url = "https://drive.google.com/u/0/uc?id=1txatfA9L88BFAfDKKXbqfGMSw6TBfwhQ&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
demand <- read_excel(tf, 1L)
# 그래프 그리기
plot(demand[["Banking orders (2)"]], type = 'l')
시계열 그래프 은행의 일일 주문 건수(2) |
pacf(demand[["Banking orders (2)"]])
편자기 상관함수 PACF 가공되지 않은 차수의 시계열 |
lag 3의 PACF 값이 임계값을 5% 초과함을 알수 있다. 이는 R의 stats 패키지가 제공하는 ar() 함수의 결과와 일치한다. 지정되지 않은 경우, ar() 함수는 자동으로 자기회귀 모델의 차수를 선택한다.
##R
fit <- ar(demand[["Banking orders (2)"]], method = "mle")
fit
##
## Call:
## ar(x = demand[["Banking orders (2)"]], method = "mle")
##
## Coefficients:
## 1 2 3
## -0.1360 -0.2014 -0.3175
##
## Order selected 3 sigma^2 estimated as 1.414e+09
ar() 함수의 문서에 따르면 (기본 파라미터로) 선택된 차수는 아카이케 정보기준 akaike information criterion(AIC)에 다라 결정된다. 아카이케 정보기준은 PACF로 얻는 시각적 선택이 정보기준의 최소화로 얻은 선택과 일관성을 보여주기 유용하다. 이 두 가지 방법은 모델의 차수를 선택하는 서로 다른 방법이지만, 이 경우에서는 일관성을 보인다.
ar() 함수는 모델의 계수도 제공 했다. 그런데 이계수를 제한하고 싶을지도 모른다. 예를 들어 PACF의 지연 -1항에 대한 계수를 포함할지, PACF 값이 임계값 보다 훨씬 낮은 항에 필수 계수 mandatory coefficient 0을 할당 할지 등과 같은 것이다. 이때는 stats 패키지에 포함된 arima() 함수를 사용할 수 있다.
다음은 차수 파라미터를 c(3, 0, 0) 으로 설정하여 AR(3)을 적합하는 함수의 호출 방법을 보여 준다. 여기서 3은 AR 요소의 차수이다.
## R
est <- arima(x =demand[["Banking orders (2)"]],
order = c(3, 0, 0))
est
##
## Call:
## arima(x = demand[["Banking orders (2)"]], order = c(3, 0, 0))
##
## Coefficients:
## ar1 ar2 ar3 intercept
## -0.1358 -0.2013 -0.3176 79075.350
## s.e. 0.1299 0.1289 0.1296 2981.124
##
## sigma^2 estimated as 1.414e+09: log likelihood = -717.42, aic = 1444.83
계수를 0으로 제한하면 사전 지식 또는 의견을 모델에 주입할 수 있다. 가령 지연 -1 항을 0으로 유지하려면 다음처럼 함수를 호출 할 수 있다.
## R
est.1 <- arima( x =demand[["Banking orders (2)"]],
order = c(3, 0, 0),
fixed = c(0, NA, NA, NA))
## Warning in arima(x = demand[["Banking orders (2)"]], order = c(3, 0, 0), : some
## AR parameters were fixed: setting transform.pars = FALSE
est.1
##
## Call:
## arima(x = demand[["Banking orders (2)"]], order = c(3, 0, 0), fixed = c(0, NA,
## NA, NA))
##
## Coefficients:
## ar1 ar2 ar3 intercept
## 0 -0.1831 -0.3031 79190.705
## s.e. 0 0.1289 0.1298 3345.253
##
## sigma^2 estimated as 1.44e+09: log likelihood = -717.96, aic = 1443.91
arima 함수의 fixed 파라미터에 전달된 벡터 값에 NA 대신 0을 넣어주면, 해당 값을 0으로 유지하도록 제한 할 수 있다.
이제 학습 데이터에 대한 모델의 성능을 검사해 모델의 적합도를 평가할 차례이다. 평가는 두 가지 방법으로 해볼 수 있는데, 그 중 첫 번째 모델의 잔차(오차)에 대한 ACF 그래프로 모델이 다루지 못하는 자체상관의 패턴 유무를 확인하는 방법이다.
acf() 함수를 사용하면 단순하게 잔차 그래프를 그릴 수 있다.
## R
acf(est.1$residuals)
지연 -1 파라미터를 0으로 강제하여 적합시킨 AR(3) 모델의 잔차에 대한 ACF |
ACF 값 중 어느 것도 임계값을 넘지 않았다. 물론 유의성을 평가하거나 기각하기 위해 임계값에 맹목적으로 굴복해서는 안되지만, 이 관측은 이미 믿을 만 하다고 알려진 유용한 데이터 이다.
이 그래프로 잔차 residual (오차항)들 간의 자체 상관 패턴을 찾아 볼 수 없다. 어떤 패턴이 드러난다면, 잔차의 자체 상관을 다룰 수 있도록 모델에 추가로 항을 포함해 복잡성을 늘리는 것을 고려 해봐야 한다.
흔히 수행되는 또 다른 검정 방법은 륭-박스 검정 Ljung-Box test 이다. 시계열의 임의성을 검정하는 방법으로, 다음과 같은 귀무가설 및 대립가설을 제시한다.
- H0 : 데이터가 일련의 상관관계를 나타내지 않습니다.
- H1 : 데이터가 일련의 상관관계를 나타냅니다.
이 검정 방법은 AR(보다 일반적으로는 ARIMA) 모델에 적용되는 것이 일반적이다. 구체적으로는 모델 자체보다는 적합된 모델의 잔차에 적용된다.
## R
Box.test(est.1$residuals, lag = 10, type = "Ljung", fitdf = 3)
##
## Box-Ljung test
##
## data: est.1$residuals
## X-squared = 9.3261, df = 7, p-value = 0.2301
륭-박스 검정을 est.1 모델에 적용하여 모델의 적합도를 평가 하였다. 이 예제로 부터 데이터가 일련의 상관관계를 보이지 않는다는 귀무가설을 기각할 수 없으며, 이로 부터 잔차의 ACF그래프로 발견한 사실을 확정 지울 수 있다.
# 참고서적 : 실적 시계열 분석 한빛 미디어
댓글 없음:
댓글 쓰기