如何在多层次结构中使用"hts"?

Joc*_*hem 6 r time-series hierarchy forecasting

我正在预测大量的时间序列(5,000+).如果我在更高级别进行预测,然后将预测分配到每个SKU,我想使用分层方法执行此操作.我认为有必要这样做,以便放大到较低的地理细节水平,同时在更高的层次(自上而下)进行预测.

例如,下面您将看到我正在考虑的结构示例.

Total
  => Europe
     => Netherlands
        => RegionA
           => Client_A_in_Netherlands
              => SKU1
              => SKU2
              => SKU3
           => Client_Q_in_Netherlands
              => SKU15
     => Germany1
        => (...)
           => ClientY_in_Germany
              => SKU89
  => Africa
     => South Africa
        => (...)
           => Client_Z_in_SouthAfrica
              => SKU792
Run Code Online (Sandbox Code Playgroud)

我想在大陆层面(即欧洲或非洲)层面做自上而下的预测.然后将适当的份额分配给国家/地区,然后分配给该国家/地区的客户,然后分配给SKU.

在'hts'包的文档中,有一个关于如何使用两级层次结构执行此操作的示例.我想知道是否有人可以建议如何使用多级层次结构来做到这一点?

小智 8

我们nodeshts包中引入了一个新概念(v4 +)来取代旧的gmatrix.为了说明其用法nodes,这里是一个包含4个级别(不包括总计)和24个底部时间序列的层次结构的示例.

bts <- ts(matrix(rnorm(240), nrow = 10, ncol = 24)) 
nodes <- list(2, rep(2, 2), rep(2, 4), rep(3, 8))
hts(bts, nodes = nodes)
Run Code Online (Sandbox Code Playgroud)

每个元素nodes指定每个节点在该级别具有的子节点数.

树形图如下所示:

=> A
  => AA
    => AAA
      => 3 bottom time series
    => AAB
      => 3 bottom time series
  => AB
    => ABA
      => 3 bottom time series
    => ABB
      => 3 bottom time series
=> B
  => BA
    => BAA
      => 3 bottom time series
    => BAB
      => 3 bottom time series
  => BB
    => BBA
      => 3 bottom time series
    => BBB
      => 3 bottom time series
Run Code Online (Sandbox Code Playgroud)