Using the methods of Hyndman et al. (2016) and Hyndman et al. (2011), this function optimally combines the forecasts at all levels of a hierarchical time series. The forecast.gts calls this function when the comb method is selected.

combinef(
  fcasts,
  nodes = NULL,
  groups = NULL,
  weights = NULL,
  nonnegative = FALSE,
  algorithms = c("lu", "cg", "chol", "recursive", "slm"),
  keep = c("gts", "all", "bottom"),
  parallel = FALSE,
  num.cores = 2,
  control.nn = list()
)

Arguments

fcasts

Matrix of forecasts for all levels of the hierarchical time series. Each row represents one forecast horizon and each column represents one time series from the hierarchy.

nodes

If the object class is hts, a list contains the number of child nodes referring to hts.

groups

If the object class is gts, a gmatrix is required, which is the same as groups in the function gts.

weights

A numeric vector. The default is NULL which means that ordinary least squares is implemented.

nonnegative

Logical. Should the reconciled forecasts be non-negative?

algorithms

An algorithm to be used for computing reconciled forecasts. See forecast.gts for details.

keep

Return a gts object or the the reconciled forecasts at the bottom level.

parallel

Logical. Import parallel package to allow parallel processing.

num.cores

Numeric. Specify how many cores are going to be used.

control.nn

A list of control parameters to be passed on to the block principal pivoting algorithm. See 'Details'.

Value

Return the (non-negative) reconciled gts object or forecasts at the bottom level.

Details

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).

References

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., Turlach, B. A., & Hyndman, R. J. (to appear). Optimal non-negative forecast reconciliation. Statistics and Computing. https://robjhyndman.com/publications/nnmint/

See also

Author

Alan Lee, Rob J Hyndman, Earo Wang and Shanika L Wickramasuriya

Examples


# hts example
if (FALSE) {
h <- 12
ally <- aggts(htseg1)
allf <- matrix(NA, nrow = h, ncol = ncol(ally))
for(i in 1:ncol(ally))
  allf[,i] <- forecast(auto.arima(ally[,i]), h = h)$mean
allf <- ts(allf, start = 51)
y.f <- combinef(allf, get_nodes(htseg1), weights = NULL, keep = "gts", algorithms = "lu")
plot(y.f)
}

if (FALSE) {
h <- 12
ally <- abs(aggts(htseg2))
allf <- matrix(NA, nrow = h, ncol = ncol(ally))
for(i in 1:ncol(ally))
  allf[,i] <- forecast(auto.arima(ally[,i], lambda = 0, biasadj = TRUE), h = h)$mean
b.f <- combinef(allf, get_nodes(htseg2), weights = NULL, keep = "bottom",
algorithms = "lu")
b.nnf <- combinef(allf, get_nodes(htseg2), weights = NULL, keep = "bottom",
algorithms = "lu", nonnegative = TRUE)
}

# gts example
if (FALSE) {
abc <- ts(5 + matrix(sort(rnorm(200)), ncol = 4, nrow = 50))
g <- rbind(c(1,1,2,2), c(1,2,1,2))
y <- gts(abc, groups = g)
h <- 12
ally <- aggts(y)
allf <- matrix(NA,nrow = h,ncol = ncol(ally))
for(i in 1:ncol(ally))
  allf[,i] <- forecast(auto.arima(ally[,i]),h = h)$mean
allf <- ts(allf, start = 51)
y.f <- combinef(allf, groups = get_groups(y), keep ="gts", algorithms = "lu")
plot(y.f)
}