Выход за пределы использования middle_out в Fable для более чем 2 уровней иерархии

#r #forecasting #fable-r

Вопрос:

Я работаю над проектом иерархического прогнозирования, где я хочу использовать промежуточный подход с использованием Fable в 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)
 

Однако добавление третьего верхнего уровня и прогнозирование с уровня среднего состояния с разбивкой по регионам и агрегацией в 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)
 

Есть ли способ решить эту проблему, чтобы действительно использовать подход middle_out, а не top_down?

Комментарии:

1. Опубликовано на GitHub и теперь помечено как ошибка github.com/tidyverts/fabletools/issues/332