Промежуточный подход к согласованию fabletools создает проблему с функцией прогноза

У меня есть сгруппированные временные ряды с товарами и их категориями, и я хотел бы сделать прогноз продаж на 6 месяцев. Я хотел бы использовать промежуточный уровень (категорию) для составления базового прогноза, потому что стадиальность и тенденции, возможно, лучше ценятся. Итак, я сгруппировал свои данные для ключа, и я хотел бы использовать подход middle_out, общий объем продаж используется снизу вверх, а отдельный элемент прогнозируется с использованием подхода сверху вниз. Я использую функцию fabletools middle_out, но когда я пытаюсь сделать прогноз, это не так. не работает, это мой код:

      library(reshape)
library(tidyverse)
library(tsibble)
library(dplyr)
library(fable)
library(fpp2)
library(forecast)

#read data from csv
#example dataset
set.seed(42)  ## for sake of reproducibility
n <- 6
data_example <- data.frame(Date=seq.Date(as.Date("2020-12-01"), as.Date("2021-05-01"), "month"),
                  No_=sample(1800:1830, n, replace=TRUE),
                  Category=rep(LETTERS[1:3], n),
                  Quantity=sample(18:24, n, replace=TRUE))


sell_full <- data_example %>% mutate(Month=yearmonth(Date)) %>% group_by(No_,Category, Month) %>% summarise(Quant = sum(Quantity), .groups = 'keep')
sell_full <- na.omit(sell_full)

#data


#conversion to tsibble for forecastings

sell_full <- as_tsibble(sell_full, key=c(No_, Category), index=Month)
sell_full <- sell_full %>% aggregate_key((Category/No_), Quant= sum(Quant)) 
#sell_full<- filter(sell_full, !is.na(sell_full$Quant))

sell_full <- sell_full %>% fill_gaps(Quant=0, .full=TRUE)

fit <- sell_full %>%model(ets = ETS(Quant~ error("A") + trend("A") + season("A")))%>% middle_out(split=1)

fc <- forecast(fit, h = "6 months", level=1,lambda="auto")

если я поставлю method="mo" в методе прогноза, поскольку документация говорит, что он возвращает эту ошибку

      Error in meanf(object, h = h, level = level, fan = fan, lambda = lambda,  : 
  unused argument (method = "mo")

если я не помещаю информацию о методе в прогноз, он возвращает эту ошибку:

      <error/vctrs_error_ptype2>
Error in `vec_compare()`:
! Can't combine `..1` <agg_vec> and `..2` <double>.
---
Backtrace:
  1. generics::forecast(fit, h = "6 months", level = 1, lambda = "auto")
  2. forecast:::forecast.default(fit, h = "6 months", level = 1, lambda = "auto")
  3. forecast:::forecast.ts(object, ...)
  4. forecast::meanf(...)
  5. forecast::BoxCox(x, lambda)
  6. forecast::BoxCox.lambda(x, lower = -0.9)
  7. fabletools:::Ops.lst_mdl(x, 0)
 11. fabletools:::map2(e1, e2, .Generic)
 12. base::mapply(.f, .x, .y, MoreArgs = list(...), SIMPLIFY = FALSE)
 13. vctrs:::`<=.vctrs_vctr`(dots[[1L]][[1L]], dots[[2L]][[1L]])
 14. vctrs::vec_compare(e1, e2)

Документация по этому поводу очень плохая, кто-нибудь может мне помочь?

ОБНОВЛЕНИЕ: как мне подсказали, я попытался удалить какой-то пакет, теперь моя библиотека:

      library(tsibble)
library(dplyr)
library(fable)
library(fpp3)
library(conflicted)

Теперь ошибка изменилась. когда я пытаюсь сделать функцию прогноза, у меня возникает эта ошибка:

      Error in build_key_data_smat(key_data) : 
  argument "key_data" is missing, with no default

и если я поставлю key_data = "Category" (Category - это разделенный слой), ошибка будет:

      fc <- forecast(fit, h = "6 months",level=1,lambda="auto", key_data= "Category")
Error in -ncol(x) : invalid argument to unary operator

0 ответов

Другие вопросы по тегам