Пакет tsibble
имеет свои собственные функции для создания разбиений, которые распознаются пакетом fable
, поэтому вам не нужно использовать функции rsample
здесь.
В этом случае, я думаю, то, что вы пытаетесь сделать, эквивалентно разбиению на листы в терминологии tsibble
- когда вы тренируетесь в окне фиксированной длины и windows не перекрываются. Альтернативы - растягивание (с расширяющимся тренировочным набором) и скольжение (с перекрывающимися тренировочными наборами фиксированной длины).
Чтобы упростить MWE, я уменьшил размер набора данных и размер модели.
Следующий код подгонит модели к каждому окну, выдает прогнозы для следующего окна и создайте сводную информацию о точности прогноза.
library(tsibble)
library(fable)
#> Loading required package: fabletools
set.seed(77)
my_data_tsbl <- tibble(
Datum_ab = seq(from = as.POSIXct("2000-01-01 00:00"), to = as.POSIXct("2000-01-30 00:00"), by = "hour"),
Temp_Ist = rnorm(n = length(Datum_ab), mean = 15, sd = 5),
Summe = rnorm(n = length(Datum_ab), mean = 200, sd = 10),
lg_id = rep("GRIM_1", length(Datum_ab))
) %>%
as_tsibble(key = lg_id, index=Datum_ab)
tiled <- tile_tsibble(my_data_tsbl, .size=120)
ff_model <- tiled %>%
model(
arima = ARIMA(Summe ~ 1 + Temp_Ist + pdq(1, 0, 1) + PDQ(0, 0, 1, period = "day"))
)
ff_forecast <- forecast(ff_model, new_data=tiled)
ff_forecast
#> # A fable: 697 x 7 [1h] <?>
#> # Key: .id, lg_id, .model [6]
#> .id lg_id .model Datum_ab Summe .distribution Temp_Ist
#> <int> <chr> <chr> <dttm> <dbl> <dist> <dbl>
#> 1 1 GRIM_1 arima 2000-01-01 00:00:00 200. N(200, 95) 12.3
#> 2 1 GRIM_1 arima 2000-01-01 01:00:00 201. N(201, 97) 20.5
#> 3 1 GRIM_1 arima 2000-01-01 02:00:00 200. N(200, 98) 18.2
#> 4 1 GRIM_1 arima 2000-01-01 03:00:00 199. N(199, 99) 20.2
#> 5 1 GRIM_1 arima 2000-01-01 04:00:00 199. N(199, 99) 15.8
#> 6 1 GRIM_1 arima 2000-01-01 05:00:00 201. N(201, 100) 20.7
#> 7 1 GRIM_1 arima 2000-01-01 06:00:00 201. N(201, 100) 10.1
#> 8 1 GRIM_1 arima 2000-01-01 07:00:00 201. N(201, 100) 14.3
#> 9 1 GRIM_1 arima 2000-01-01 08:00:00 200. N(200, 101) 15.7
#> 10 1 GRIM_1 arima 2000-01-01 09:00:00 200. N(200, 101) 22.2
#> # … with 687 more rows
ff_forecast %>% accuracy(my_data_tsbl)
#> # A tibble: 1 x 10
#> .model lg_id .type ME RMSE MAE MPE MAPE MASE ACF1
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 arima GRIM_1 Test -0.0107 9.69 7.71 -0.239 3.87 0.709 -0.0410
Создано в 2020-04-30 пакетом Представить (v0.3.0)
Столбец ff_forecast
с именем Summe
является средним значением распределения прогноза. Само распределение дано в .distribution
.
. Для распараллеливания вычислений можно использовать пакет future
, вставив plan(multiprocess)
перед моделированием.