#forecasting #forecast #fable
Вопрос:
Я новичок в кодировании R и Fable и в настоящее время работаю над созданием некоторых базовых моделей прогнозирования скользящей средней, и мое намерение состоит в том, чтобы создать несколько моделей, учитывающих среднее значение разной продолжительности периода.
Я попытался указать ~window for MEAN()
, однако он возвращает NULL
модель.
Вот некоторые тестовые данные:
Units <- sample(1:30)
Date <- ymd(paste0("2019-01-",1:30))
key[1:30] <- "test1"
trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
as_tsibble(index=Date, key=key)
fit <- trial %>%
model(Avg = MEAN(Units~window(size = 12)))
Запустив код, я получаю следующий результат:
> Units <- sample(1:30)
> Date <- ymd(paste0("2019-01-",1:30))
> key[1:30] <- "test1"
> trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
as_tsibble(index=Date, key=key)
>
> fit <- trial %>%
model(Avg = MEAN(Units~window(size = 12)))
Advarselsbesked:
1 error encountered for Avg
[1] `slide()` was deprecated in tsibble 0.9.0 and is now defunct.
Please use `slider::slide()` instead.
>
> fit
# A mable: 1 x 2
# Key: key [1]
key Avg
<chr> <model>
1 test1 <NULL model>
Любые указания о том, как я могу MEAN()
просто взять среднее значение последних 12 наблюдений, которые были бы очень признательны.
Ответ №1:
Это работает с использованием последних версий пакетов:
library(tsibble)
library(fable)
library(lubridate)
library(dplyr)
Units <- sample(1:30)
Date <- ymd(paste0("2019-01-",1:30))
key <- "test1"
trial <- bind_cols(Date=Date, Units=Units, key = key) %>%
as_tsibble(index=Date, key=key)
fit <- trial %>%
model(Avg = MEAN(Units ~ window(size = 12)))
# .fitted shows mean of previous 12 observations
augment(fit) %>% tail()
#> # A tsibble: 6 x 7 [1D]
#> # Key: key, .model [1]
#> key .model Date Units .fitted .resid .innov
#> <chr> <chr> <date> <int> <dbl> <dbl> <dbl>
#> 1 test1 Avg 2019-01-25 24 16.4 7.58 7.58
#> 2 test1 Avg 2019-01-26 27 18.1 8.92 8.92
#> 3 test1 Avg 2019-01-27 26 18.9 7.08 7.08
#> 4 test1 Avg 2019-01-28 18 20.5 -2.5 -2.5
#> 5 test1 Avg 2019-01-29 11 19.6 -8.58 -8.58
#> 6 test1 Avg 2019-01-30 3 20.1 -17.1 -17.1
# Check
mean(trial$Units[18:29])
#> [1] 20.08333
Создано 2021-08-04 пакетом reprex (v2.0.0)
Комментарии:
1. Спасибо! Обновление пакетов решило проблему.