Learn R Programming

thief (version 0.3)

thief: Temporal hierarchical forecasting

Description

Takes a time series as input and produces forecasts using the temporal hierarchical approach of Athanasopoulos et al (2016).

Usage

thief(y, m = frequency(y), h = m * 2, comb = c("struc", "mse", "ols",
  "bu", "shr", "sam"), usemodel = c("ets", "arima", "theta", "naive",
  "snaive"), forecastfunction = NULL, aggregatelist = NULL, ...)

Arguments

y

Time series input

m

Seasonal period

h

Forecast horizon

comb

Combination method of temporal hierarchies, taking one of the following values:

"struc"

Structural scaling - weights from temporal hierarchy

"mse"

Variance scaling - weights from in-sample MSE

"ols"

Unscaled OLS combination weights

"bu"

Bottom-up combination -- i.e., all aggregate forecasts are ignored.

"shr"

GLS using a shrinkage (to block diagonal) estimate of residuals

"sam"

GLS using sample covariance matrix of residuals

usemodel

Model used for forecasting each aggregation level:

"ets"

exponential smoothing, using the ets function.

"arima"

arima, using the auto.arima function.

"theta"

theta method, using the thetaf function.

"naive"

random walk forecasts

"snaive"

seasonal naive forecasts, based on the last year of observed data.

forecastfunction

User-defined function to be used instead of usemodel. The function must take a time series as the first argument, and the forecast horizon as the second argument. It must return an object of class forecast.

aggregatelist

User-selected list of forecast aggregates to consider

...

Arguments to be passed to the time series modelling function (such as ets or auto.arima), or to forecastfunction.

Value

forecast object.

Details

This function computes the temporal aggregates of y using tsaggregates, then calculates all forecasts using the model function specified by usemodel or forecastfunction, and finally reconciles the forecasts using reconcilethief. The reconciled forecasts of y are returned.

See Also

reconcilethief

Examples

Run this code
# NOT RUN {
# Select ARIMA models for all series using auto.arima()
z <- thief(AEdemand[,12], usemodel='arima')
plot(z)

# Use your own function
ftbats <- function(y,h,...){forecast(tbats(y),h,...)}
z <- thief(AEdemand[,12], forecastfunction=ftbats)
plot(z)
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab