12.6 과거 재구성

때때로 시계열을 반대로 “재구성(backcast)”하는 것이 유용합니다 — 즉, 시간이 흐르는 반대 방향으로 예측하는 것입니다. 이 작업을 해주는 내장된 R 함수가 있지는 않지만, 쉽게 구현할 수 있습니다. 다음의 함수로 ts 객체와 forecast 객체를 뒤집을 수 있습니다.

# Function to reverse time
reverse_ts <- function(y)
{
  ts(rev(y), start=tsp(y)[1L], frequency=frequency(y))
}
# Function to reverse a forecast
reverse_forecast <- function(object)
{
  h <- length(object[["mean"]])
  f <- frequency(object[["mean"]])
  object[["x"]] <- reverse_ts(object[["x"]])
  object[["mean"]] <- ts(rev(object[["mean"]]),
                    end=tsp(object[["x"]])[1L]-1/f, frequency=f)
  object[["lower"]] <- object[["lower"]][h:1L,]
  object[["upper"]] <- object[["upper"]][h:1L,]
  return(object)
}

그리고 나서 어떤 시계열을 재구성하기 위해 이러한 함수를 적용할 수 있습니다. 1996년부터 2011년까지 유로존에서의 분기별 소매업 데이터에 적용한 예제를 살펴보겠습니다. 1994년부터 1995년을 재구성해보겠습니다.

# Backcast example
euretail %>%
  reverse_ts() %>%
  auto.arima() %>%
  forecast() %>%
  reverse_forecast() -> bc
autoplot(bc) +
  ggtitle(paste(bc[["method"]], "로 재구성한 결과"))
ARIMA 모델을 이용하여 유로 지역 분기별 소매 거래를 재구성한 것.

Figure 12.6: ARIMA 모델을 이용하여 유로 지역 분기별 소매 거래를 재구성한 것.