This function performs the iterative procedure described in Di Fonzo and Girolimetto (2023), which produces cross-temporally reconciled forecasts by alternating forecast reconciliation along one single dimension (either cross-sectional or temporal) at each iteration step.
Usage
iterec(base, cslist, telist, res = NULL, itmax = 100, tol = 1e-5,
type = "tcs", norm = "inf", verbose = TRUE)
Arguments
- base
A (\(n \times h(k^\ast+m)\)) numeric matrix containing the base forecasts to be reconciled; \(n\) is the total number of variables, \(m\) is the max. order of temporal aggregation, \(k^\ast\) 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. The row identifies a time series, and the forecasts in each row are ordered from the lowest frequency (most temporally aggregated) to the highest frequency.
- cslist
A list of elements for the cross-sectional reconciliation. See csrec for a complete list (excluded
base
andres
).- telist
A list of elements for the temporal reconciliation. See terec for a complete list (excluded
base
andres
).- res
A (\(n \times N(k^\ast+m)\)) optional numeric matrix containing the in-sample residuals at all the temporal frequencies ordered from the lowest frequency to the highest frequency (columns) for each variable (rows). This matrix is used to compute some covariance matrices.
- itmax
Max number of iteration (
100
, default).- tol
Convergence tolerance (
1e-5
, default).- type
A string specifying the uni-dimensional reconciliation order: temporal and then cross-sectional ("
tcs
") or cross-sectional and then temporal ("cst
").- norm
Norm used to calculate the temporal and the cross-sectional incoherence: infinity norm ("
inf
", default), one norm ("one
"), and 2-norm ("two
").- verbose
If
TRUE
, reconciliation information are printed.
References
Di Fonzo, T. and Girolimetto, D. (2023), Cross-temporal forecast reconciliation: Optimal combination method and heuristic alternatives, International Journal of Forecasting, 39, 1, 39-57. doi:10.1016/j.ijforecast.2021.08.004
Examples
set.seed(123)
# (3 x 7) base forecasts matrix (simulated), Z = X + Y and m = 4
base <- rbind(rnorm(7, rep(c(20, 10, 5), c(1, 2, 4))),
rnorm(7, rep(c(10, 5, 2.5), c(1, 2, 4))),
rnorm(7, rep(c(10, 5, 2.5), c(1, 2, 4))))
# (3 x 70) in-sample residuals matrix (simulated)
res <- rbind(rnorm(70), rnorm(70), rnorm(70))
A <- t(c(1,1)) # Aggregation matrix for Z = X + Y
m <- 4 # from quarterly to annual temporal aggregation
rite <- iterec(base = base,
cslist = list(agg_mat = A, comb = "shr"),
telist = list(agg_order = m, comb = "wlsv"),
res = res)
#> ── Iterative heuristic cross-temporal forecast reconciliation ──────────────────
#> Legend: i = iteration; s = step. Norm = "inf".
#>
#> i.s | Temporal | Cross-sectional |
#> 0 | 3.36 | 1.79 |
#> 1.1 | 0.00 | 1.91 |
#> 1.2 | 2.02e-01 | 0.00 |
#> 2.1 | 0.00 | 2.42e-02 |
#> 2.2 | 2.56e-03 | 0.00 |
#> 3.1 | 0.00 | 3.18e-04 |
#> 3.2 | 3.37e-05 | 0.00 |
#> 4.1 | 0.00 | 4.50e-06 |
#> 4.2 | 4.62e-07 | 0.00 |
#>
#> ✔ Convergence achieved at iteration 4.
#> ────────────────────────────────────────────────────────────────────────────────