Methods for forecasting hierarchical or grouped time series.
# S3 method for gts forecast( object, h = ifelse(frequency(object$bts) > 1L, 2L * frequency(object$bts), 10L), method = c("comb", "bu", "mo", "tdgsa", "tdgsf", "tdfp"), weights = c("wls", "ols", "mint", "nseries"), fmethod = c("ets", "arima", "rw"), algorithms = c("lu", "cg", "chol", "recursive", "slm"), covariance = c("shr", "sam"), nonnegative = FALSE, control.nn = list(), keep.fitted = FALSE, keep.resid = FALSE, positive = FALSE, lambda = NULL, level, FUN = NULL, xreg = NULL, newxreg = NULL, parallel = FALSE, num.cores = 2, ... )
object | Hierarchical or grouped time series object of class
|
---|---|
h | Forecast horizon |
method | Method for distributing forecasts within the hierarchy. See details |
weights | Weights used for "optimal combination" method:
|
fmethod | Forecasting method to use for each series. |
algorithms | An algorithm to be used for computing the combination
forecasts (when |
covariance | Type of the covariance matrix to be used with
|
nonnegative | Logical. Should the reconciled forecasts be non-negative? |
control.nn | A list of control parameters to be passed on to the block principal pivoting algorithm. See 'Details'. |
keep.fitted | If |
keep.resid | If |
positive | If |
lambda | Box-Cox transformation parameter. |
level | Level used for "middle-out" method (only used when |
FUN | A user-defined function that returns an object which can be
passed to the |
xreg | When |
newxreg | When |
parallel | If |
num.cores | If |
... | Other arguments passed to |
A forecasted hierarchical/grouped time series of class gts
.
Base methods implemented include ETS, ARIMA and the naive (random walk) models. Forecasts are distributed in the hierarchy using bottom-up, top-down, middle-out and optimal combination methods.
Three top-down methods are available: the two Gross-Sohl methods and the
forecast-proportion approach of Hyndman, Ahmed, and Athanasopoulos (2011).
The "middle-out" method "mo"
uses bottom-up ("bu"
) for levels
higher than level
and top-down forecast proportions ("tdfp"
)
for levels lower than level
.
For non-hierarchical grouped data, only bottom-up and combination methods are possible, as any method involving top-down disaggregation requires a hierarchical ordering of groups.
When xreg
and newxreg
are passed, the same covariates are
applied to every series in the hierarchy.
The control.nn
argument is a list that can supply any of the following components:
ptype
Permutation method to be used: "fixed"
or "random"
. Defaults to "fixed"
.
par
The number of full exchange rules that may be tried. Defaults to 10.
gtol
The tolerance of the convergence criteria. Defaults to sqrt(.Machine$double.eps)
.
In-sample fitted values and resiuals are not returned if method = "comb"
and nonnegative = TRUE
.
Athanasopoulos, G., Ahmed, R. A., & Hyndman, R. J. (2009). Hierarchical forecasts for Australian domestic tourism, International Journal of Forecasting, 25, 146-166.
Hyndman, R. J., Ahmed, R. A., Athanasopoulos, G., & Shang, H. L. (2011). Optimal combination forecasts for hierarchical time series. Computational Statistics and Data Analysis, 55(9), 2579--2589. https://robjhyndman.com/publications/hierarchical/
Hyndman, R. J., Lee, A., & Wang, E. (2016). Fast computation of reconciled forecasts for hierarchical and grouped time series. Computational Statistics and Data Analysis, 97, 16--32. https://robjhyndman.com/publications/hgts/
Wickramasuriya, S. L., Athanasopoulos, G., & Hyndman, R. J. (2019). Optimal forecast reconciliation for hierarchical and grouped time series through trace minimization. Journal of the American Statistical Association, 114(526), 804--819. https://robjhyndman.com/publications/mint/
Wickramasuriya, S. L., Turlach, B. A., & Hyndman, R. J. (to appear). Optimal non-negative forecast reconciliation. Statistics and Computing. https://robjhyndman.com/publications/nnmint/
Gross, C., & Sohl, J. (1990). Dissagregation methods to expedite product line forecasting, Journal of Forecasting, 9, 233--254.
Earo Wang, Rob J Hyndman and Shanika L Wickramasuriya
forecast(htseg1, h = 10, method = "bu", fmethod = "arima") #> Hierarchical Time Series #> 3 Levels #> Number of nodes at each level: 1 2 5 #> Total number of series: 8 #> Number of observations in each historical series: 10 #> Number of forecasts per series: 10 #> Top level series of forecasts: #> Time Series: #> Start = 2002 #> End = 2011 #> Frequency = 1 #> [1] 53.71128 54.20760 54.70392 55.20024 55.69656 56.19288 56.68920 57.18552 #> [9] 57.68184 58.17816 if (FALSE) { forecast( htseg2, h = 10, method = "comb", algorithms = "lu", FUN = function(x) tbats(x, use.parallel = FALSE) ) }