lcmat {FoReco} | R Documentation |
Linear combination (aggregation) matrix for a general linearly constrained multiple time series
Description
This function transforms a general (possibly redundant) zero constraints matrix into a
linear combination (aggregation) matrix \mathbf{A}_{cs}
.
When working with a general linearly constrained multiple (n
-variate)
time series, getting a linear combination matrix \mathbf{A}_{cs}
is a critical
step to obtain a structural-like representation such that
\mathbf{C}_{cs} = [\mathbf{I} \quad -\mathbf{A}],
where \mathbf{C}_{cs}
is the full rank zero constraints matrix (Girolimetto and
Di Fonzo, 2023).
Usage
lcmat(cons_mat, method = "rref", tol = sqrt(.Machine$double.eps),
verbose = FALSE, sparse = TRUE)
Arguments
cons_mat |
A ( |
method |
Method to use: " |
tol |
Tolerance for the " |
verbose |
If |
sparse |
Option to return a sparse matrix (default is |
Value
A list with two elements: (i) the linear combination (aggregation) matrix
(agg_mat
) and (ii) the vector of the column permutations (pivot
).
References
Girolimetto, D. and Di Fonzo, T. (2023), Point and probabilistic forecast reconciliation for general linearly constrained multiple time series, Statistical Methods & Applications, 33, 581-607. doi:10.1007/s10260-023-00738-6.
Strang, G. (2019), Linear algebra and learning from data, Wellesley, Cambridge Press.
See Also
Utilities:
FoReco2matrix()
,
aggts()
,
balance_hierarchy()
,
commat()
,
csprojmat()
,
cstools()
,
ctprojmat()
,
cttools()
,
df2aggmat()
,
recoinfo()
,
res2matrix()
,
set_bounds()
,
shrink_estim()
,
shrink_oasd()
,
teprojmat()
,
tetools()
,
unbalance_hierarchy()
Examples
## Two hierarchy sharing the same top-level variable, but not sharing the bottom variables
# X X
# |-------| |-------|
# A B C D
# |---|
# A1 A2
# 1) X = C + D,
# 2) X = A + B,
# 3) A = A1 + A2.
cons_mat <- matrix(c(1,-1,-1,0,0,0,0,
1,0,0,-1,-1,0,0,
0,0,0,1,0,-1,-1), nrow = 3, byrow = TRUE)
obj <- lcmat(cons_mat = cons_mat, verbose = TRUE)
agg_mat <- obj$agg_mat # linear combination matrix
pivot <- obj$pivot # Pivot vector