This function performs forecast reconciliation for a single time series using temporal hierarchies (Athanasopoulos et al., 2017, Nystrup et al., 2020). The reconciled forecasts can be computed using either a projection approach (Byron, 1978, 1979) or the equivalent structural approach by Hyndman et al. (2011). Non-negative (Di Fonzo and Girolimetto, 2023) and immutable reconciled forecasts can be considered.
terec(base, agg_order, comb ="ols", res =NULL, tew ="sum", approach ="proj", nn =NULL, settings =NULL, bounds =NULL, immutable =NULL,...)
Arguments
base: A (h(k∗+m)×1) numeric vector containing base forecasts to be reconciled ordered from the lowest frequency to the highest frequency; m
is the max aggregation order, k∗ is the sum of (a subset of) (p−1) factors of m, excluding m, and h is the forecast horizon for the lowest frequency time series.
agg_order: Highest available sampling frequency per seasonal cycle (max. order of temporal aggregation, m), or a vector representing a subset of p factors of m.
comb: A string specifying the reconciliation method. For a complete list, see tecov .
res: A (N(k∗+m)×1) optional numeric vector containing the in-sample residuals at all the temporal frequencies ordered from the lowest frequency to the highest frequency. This vector is used to compute come covariance matrices.
tew: A string specifying the type of temporal aggregation. Options include: "sum" (simple summation, default), "avg" (average), "first" (first value of the period), and "last" (last value of the period).
approach: A string specifying the approach used to compute the reconciled forecasts. Options include:
"proj" (default): Projection approach according to Byron (1978, 1979).
"strc": Structural approach as proposed by Hyndman et al. (2011).
"proj_osqp": Numerical solution using list("osqp")
for projection approach.
"strc_osqp": Numerical solution using list("osqp")
for structural approach.
nn: A string specifying the algorithm to compute non-negative reconciled forecasts:
"sntz": heuristic "set-negative-to-zero" (Di Fonzo and Girolimetto, 2023).
settings: An object of class osqpSettings specifying settings for the list("osqp") solver. For details, refer to the c("list("osqp")", " documentation") (Stellato et al., 2020).
bounds: A ((k∗+m)×2) numeric matrix specifying the temporal bounds. The first column represents the lower bound, and the second column represents the upper bound.
immutable: A matrix with two columns (k,j), such that
Column 1: Denotes the temporal aggregation order (k=m,…,1).
Column 2: Indicates the temporal forecast horizon (j=1,…,m/k).
For example, when working with a quarterly time series:
t(c(4, 1)) - Fix the one step ahead annual forecast.
t(c(1, 2)) - Fix the two step ahead quarterly forecast.
...: Arguments passed on to tecov
mse: If TRUE (default) the residuals used to compute the covariance matrix are not mean-corrected.
shrink_fun: Shrinkage function of the covariance matrix, shrink_estim (default)
Returns
A (h(k∗+m)×1) numeric vector of temporal reconciled forecasts.
Examples
set.seed(123)# (7 x 1) base forecasts vector (simulated), m = 4base <- rnorm(7, rep(c(20,10,5), c(1,2,4)))# (70 x 1) in-sample residuals vector (simulated)res <- rnorm(70)m <-4# from quarterly to annual temporal aggregationreco <- terec(base = base, agg_order = m, comb ="wlsv", res = res)# Immutable reconciled forecast# E.g. fix all the quarterly forecastsimm_q <- expand.grid(k =1, j =1:4)immreco <- terec(base = base, agg_order = m, comb ="wlsv", res = res, immutable = imm_q)# Non negative reconciliationbase[7]<--base[7]# Making negative one of the quarterly base forecastsnnreco <- terec(base = base, agg_order = m, comb ="wlsv", res = res, nn ="osqp")recoinfo(nnreco, verbose =FALSE)$info
References
Athanasopoulos, G., Hyndman, R.J., Kourentzes, N. and Petropoulos, F. (2017), Forecasting with Temporal Hierarchies, European Journal of Operational Research, 262, 1, 60-74. tools:::Rd_expr_doi("10.1016/j.ejor.2017.02.046")
Byron, R.P. (1978), The estimation of large social account matrices, Journal of the Royal Statistical Society, Series A, 141, 3, 359-367. tools:::Rd_expr_doi("10.2307/2344807")
Byron, R.P. (1979), Corrigenda: The estimation of large social account matrices, Journal of the Royal Statistical Society, Series A, 142(3), 405. tools:::Rd_expr_doi("10.2307/2982515")
Di Fonzo, T. and Girolimetto, D. (2023), Spatio-temporal reconciliation of solar forecasts, Solar Energy, 251, 13–29. tools:::Rd_expr_doi("10.1016/j.solener.2023.01.003")
Hyndman, R.J., Ahmed, R.A., Athanasopoulos, G. and Shang, H.L. (2011), Optimal combination forecasts for hierarchical time series, Computational Statistics & Data Analysis, 55, 9, 2579-2589. tools:::Rd_expr_doi("10.1016/j.csda.2011.03.006")
Nystrup, P., , E., Pinson, P. and Madsen, H. (2020), Temporal hierarchies with autocorrelation for load forecasting, European Journal of Operational Research, 280, 1, 876-888. tools:::Rd_expr_doi("10.1016/j.ejor.2019.07.061")
Stellato, B., Banjac, G., Goulart, P., Bemporad, A. and Boyd, S. (2020), OSQP: An Operator Splitting solver for Quadratic Programs, Mathematical Programming Computation, 12, 4, 637-672. tools:::Rd_expr_doi("10.1007/s12532-020-00179-2")