This function allows the user to easily build the (\(n_a \times n_b\)) cross-sectional aggregation matrix starting from a data frame.
Arguments
- formula
Specification of the hierarchical structure: grouped hierarchies are specified using
~ g1 * g2and nested hierarchies are specified using~ parent / child. Mixtures of the two formulations are also possible, like~ g1 * (grandparent / parent / child).- data
A dataset in which each column contains the values of the variables in the formula and each row identifies a bottom level time series.
- sep
Character to separate the names of the aggregated series, (default is "
_").- sparse
Option to return sparse matrices (default is
TRUE).- top_label
Label of the top level variable (default is "
Total").- verbose
If
TRUE(default), hierarchy informations are printed.
See also
Utilities:
FoReco2matrix(),
aggts(),
as_ctmatrix(),
as_tevector(),
balance_hierarchy(),
commat(),
csprojmat(),
cstools(),
ctprojmat(),
cttools(),
lcmat(),
recoinfo(),
res2matrix(),
set_bounds(),
shrink_estim(),
shrink_oasd(),
teprojmat(),
tetools(),
unbalance_hierarchy()
Examples
## Balanced hierarchy
# T
# |--------|
# A B
# |---| |--|--|
# AA AB BA BB BC
# Names of the bottom level variables
data_bts <- data.frame(X1 = c("A", "A", "B", "B", "B"),
X2 = c("A", "B", "A", "B", "C"),
stringsAsFactors = FALSE)
# Cross-sectional aggregation matrix
agg_mat <- df2aggmat(~ X1 / X2, data_bts, sep = "", verbose = FALSE)
## Unbalanced hierarchy
# T
# |---------|---------|
# A B C
# |---| |---| |---|
# AA AB BA BB CA CB
# |----| |----|
# AAA AAB BBA BBB
# Names of the bottom level variables
data_bts <- data.frame(X1 = c("A", "A", "A", "B", "B", "B", "C", "C"),
X2 = c("A", "A", "B", "A", "B", "B", "A", "B"),
X3 = c("A", "B", NA, NA, "A", "B", NA, NA),
stringsAsFactors = FALSE)
# Cross-sectional aggregation matrix
agg_mat <- df2aggmat(~ X1 / X2 / X3, data_bts, sep = "", verbose = FALSE)
## Group of two hierarchies
# T T T | A | B | C
# |--|--| X |---| -> ---+----+----+----
# A B C M F M | AM | BM | CM
# F | AF | BF | CF
# Names of the bottom level variables
data_bts <- data.frame(X1 = c("A", "A", "B", "B", "C", "C"),
Y1 = c("M", "F", "M", "F", "M", "F"),
stringsAsFactors = FALSE)
# Cross-sectional aggregation matrix
agg_mat <- df2aggmat(~ Y1 * X1, data_bts, sep = "", verbose = FALSE)