предсказание в басне ARIMA взрывается

Я пытаюсь приспособить модель ARIMA (пакет fable), в которую я включаю манекены. Вот код, который я использую

mod_region <- aggregated_region %>% 
  filter(SETTLEMENTDATE < '2020-02-11') %>% 
  model( 
    arima = ARIMA(sum ~ as.factor(Day))
  )
fc_region <- mod_region %>% 
  forecast(h='7 days’)

Это дает эту ошибку:

«Ошибка: объект« День »не найден. Невозможно вычислить требуемые переменные из предоставленного new_data. Требуются ли в вашей модели дополнительные переменные для составления прогнозов? »

Я попытался найти в Google, но ничего не нашел.

Раньше я думал, что, возможно, он создает 7 манекенов, и поэтому код взрывается, а затем я протестировал с помощью arima = ARIMA(sum ~ I(Day == ’Sunday’)). Но он дает ту же ошибку во время использования функции прогноза ().

Вы знаете, почему это может происходить?


person Abbas    schedule 07.04.2020    source источник
comment
Попробуйте создать факторную переменную перед вызовом функции модели.   -  person Rob Hyndman    schedule 08.04.2020
comment
@RobHyndman Спасибо за это, Роб. Я пробовал это делать. Теперь выдает эту ошибку [5] variable lengths differ (found for 'xreg')   -  person Abbas    schedule 08.04.2020
comment
Приведите воспроизводимый пример.   -  person Rob Hyndman    schedule 09.04.2020
comment
@RobHyndman Я загрузил некоторые данные в файл здесь (drive.google. com / file / d / 1ZI95SnJOTVVtbil84eq7n1F5mei5GeJL /), и я использую этот код:   -  person Abbas    schedule 10.04.2020
comment
@RobHyndman aggregated_region <- readRDS('aggregated_region.rds') aggregated_region_train <- aggregated_region %>% filter(Date < '2020-02-11') xreg_region_new_m <- aggregated_region %>% filter(Date >= '2020-02-11') xreg_region <- as.factor(aggregated_region_train$Day) xreg_region_new <- as.factor(xreg_region_new_m$Day) mod_region <- aggregated_region_train %>% model( arima = ARIMA(sum ~ xreg_region) ) fc_region <- mod_region %>% forecast(h='7 days', newdata = xreg_region_new)   -  person Abbas    schedule 10.04.2020


Ответы (1)


Во-первых, вам нужно создать переменные перед моделированием. Поэтому добавьте факторную версию Day перед вызовом модельной функции.

Во-вторых, вам нужны все переменные в tsibble, а не как отдельные объекты, как указано в комментариях.

Следующий код будет работать с вашими данными.

library(tidyverse)
library(tsibble)
library(fable)
aggregated_region <- readRDS('aggregated_region.rds') %>%
  mutate(Day = as.factor(Day))
train <- aggregated_region %>% 
  filter(Date < '2020-02-11')
test <- aggregated_region %>% 
  filter(Date >= '2020-02-11') 

mod_region <- train %>% 
  model(arima = ARIMA(sum ~ Day)) 
fc_region <- mod_region %>% 
  forecast(new_data = test)
person Rob Hyndman    schedule 11.04.2020