set.seed(54321)
library(piar)
# Make an aggregation structure.
# 1
# |-----------|-----------|
# 11 12 13
# |---+---| |---+---| |---+---|
# 111 121 121 122 131 132
pias <- data.frame(
level1 = rep(1, 12),
level2 = rep(c(11, 12, 13), each = 4),
level3 = rep(c(111, 112, 121, 122, 131, 132), each = 2),
ea = sprintf("B%02d", 1:12),
weight = 1:12
) |>
as_aggregation_structure()
pias
#> Aggregation structure for 12 elementary aggregates with 3 levels above the elementary aggregates
#> level1 level2 level3 ea weight
#> 1 1 11 111 B01 1
#> 2 1 11 111 B02 2
#> 3 1 11 112 B03 3
#> 4 1 11 112 B04 4
#> 5 1 12 121 B05 5
#> 6 1 12 121 B06 6
#> 7 1 12 122 B07 7
#> 8 1 12 122 B08 8
#> 9 1 13 131 B09 9
#> 10 1 13 131 B10 10
#> 11 1 13 132 B11 11
#> 12 1 13 132 B12 12
# Make elementary indexes over 4 quarters.
elementals <- matrix(
runif(12 * 4, 0.4, 1.2),
nrow = 12,
dimnames = list(sprintf("B%02d", 1:12), paste0("Q", 1:4))
) |>
as_index()
elementals
#> Period-over-period price index for 12 levels over 4 time periods
#> time
#> levels Q1 Q2 Q3 Q4
#> B01 0.7432063 0.4362399 1.1441564 1.1277327
#> B02 0.7987443 0.9221768 0.8326890 0.9997250
#> B03 0.5413539 1.1952528 0.9594449 1.0966120
#> B04 0.6195148 0.9421099 1.0672886 0.8581942
#> B05 0.5732081 1.1348361 0.4098346 1.1227607
#> B06 1.0930889 0.7699560 1.1682339 0.5616191
#> B07 0.4395281 0.8571318 0.9445658 0.9494140
#> B08 0.5673079 0.7615511 0.4677992 0.7279183
#> B09 0.6732899 0.5341656 1.1756704 1.1541544
#> B10 0.6973270 0.4546091 0.4928318 0.8646791
#> B11 0.5093139 1.1175286 1.1014889 0.8980850
#> B12 0.9408381 0.6190696 0.7101399 1.1024539