0

私は階層的な予測プロジェクトに取り組んでおり、Fable in Rを使用してミドルアウト アプローチを使用して、中間レベルで予測を作成し、予測された比率を使用して下向きに配布し、単に上向きに集計したいと考えています。

ただし、2 レベルを超える深さの階層を使用しようとすると、次のエラーが発生します。

Error: Problem with `mutate()` column `mo_ets`.
i `mo_ets = (function (object, ...) ...`.
x subscript out of bounds

2 つ以下の階層レベルを使用するように戻すこともできますが、それはトップダウン アプローチと同等であり、すべてのレベルを配置する必要がある Fable の機能の一部を使用したいと考えています。

以下のコードを問題なく実行できます。

library(fpp3)
tourism <- tsibble::tourism %>%
  mutate(State = recode(State,
                        `New South Wales` = "NSW",
                        `Northern Territory` = "NT",
                        `Queensland` = "QLD",
                        `South Australia` = "SA",
                        `Tasmania` = "TAS",
                        `Victoria` = "VIC",
                        `Western Australia` = "WA"
  )) %>% 
  aggregate_key(State / Region, Trips = sum(Trips)) %>% 
  model(ets=ETS(Trips)) %>%
  reconcile(mo_ets = middle_out(ets),
            method = "forecast_proportions",
            level=State) %>% 
  forecast(h=3)

ただし、3 番目の最上位レベルを追加し、中央のStateレベルから予測し、 Region に分解し、 NewColに集約すると、上記のエラーが発生します。

library(fpp3)
tourism <- tsibble::tourism %>%
  mutate(State = recode(State,
                        `New South Wales` = "NSW",
                        `Northern Territory` = "NT",
                        `Queensland` = "QLD",
                        `South Australia` = "SA",
                        `Tasmania` = "TAS",
                        `Victoria` = "VIC",
                        `Western Australia` = "WA"
  )) %>% 
  mutate(NewCol = paste(State,"ABC",sep="")) %>%
  aggregate_key(NewCol / State / Region, Trips = sum(Trips)) %>% 
  model(ets=ETS(Trips)) %>%
  reconcile(mo_ets = middle_out(ets),
            method = "forecast_proportions",
            level=State) %>% 
  forecast(h=3)

top_downではなくmiddle_outアプローチを真に使用するためにこれを解決する方法はありますか?

4

0 に答える 0