Промежуточный подход к согласованию 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