12.6 Backcasting
Sometimes it is useful to “backcast” a time series — that is, forecast in reverse time. Although there are no in-built R functions to do this, it is very easy to implement. The following functions reverse a ts
object and a forecast
object.
# 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)
}
Then we can apply these function to backcast any time series. Here is an example applied to quarterly retail trade in the Euro area. The data are from 1996-2011. We backcast to predict the years 1994-1995.
# Backcast example
euretail %>%
reverse_ts() %>%
auto.arima() %>%
forecast() %>%
reverse_forecast() -> bc
autoplot(bc) + ggtitle(paste("Backcasts from",bc$method))