Top-down forecast reconciliation for genuine hierarchical/grouped time series (Gross and Sohl, 1990), where the forecast of a `Total' (top-level series, expected to be positive) is disaggregated according to a proportional scheme (weights). Besides fulfilling any aggregation constraint, the top-down reconciled forecasts should respect two main properties:
the top-level value remains unchanged;
all the bottom time series reconciled forecasts are non-negative.
cstd(base, agg_mat, weights, normalize =TRUE)
Arguments
base: A (h×1) numeric vector containing the top-level base forecast; h is the forecast horizon.
agg_mat: A (na×nb) numeric matrix representing the cross-sectional aggregation matrix. It maps the nb bottom-level (free) variables into the na upper (constrained) variables.
weights: A (h×nb) numeric matrix containing the proportions for the bottom time series; h is the forecast horizon, and nb is the total number of bottom variables.
normalize: If TRUE (default), the weights will sum to 1.
Returns
A (h×n) numeric matrix of cross-sectional reconciled forecasts.
Examples
set.seed(123)# Aggregation matrix for Z = X + Y, X = XX + XY and Y = YX + YYA <- matrix(c(1,1,1,1,1,1,0,0,0,0,1,1),3, byrow =TRUE)# (3 x 1) top base forecasts vector (simulated), forecast horizon = 3topf <- rnorm(3,10)# Same weights for different forecast horizonsfix_weights <- runif(4)reco <- cstd(base = topf, agg_mat = A, weights = fix_weights)# Different weights for different forecast horizonsh_weights <- matrix(runif(4*3),3,4)recoh <- cstd(base = topf, agg_mat = A, weights = h_weights)
References
Gross, C.W. and Sohl, J.E. (1990), Disaggregation methods to expedite product line forecasting. Journal of Forecasting 9(3), 233–254. tools:::Rd_expr_doi("10.1002/for.3980090304")