Прогноз Холт Винтерс в R - PullRequest
0 голосов
/ 24 марта 2020

Я хочу сделать с Holt Winters, но я допускаю какую-то ошибку.

Из моего набора данных, который содержит некоторые значения 10k, мне нужны только те, которые вне заданного диапазона 15-26. Все значения за неделю, которые выходят за пределы диапазона, я помещаю во фрейм данных «out». Начиная со 2 января недели 2020 года.

Пока все хорошо.

У меня есть одно значение в неделю, и я хотел бы сделать прогноз с Холтом Уинтерсом об увеличении в последующие недели. Но мой сюжет выглядит очень непонятно. Там нет прогноз, чтобы увидеть. Что я делаю не так?

df_B2 = fread("C:/Users/B2.csv")
df_B2$Date = as.Date(df_B2$Date, "%d.%m.%y")
df_B2$Week = strftime(df_B2$Date, format = "%V")

#Limit
limit_a = 15
limit_b = 26`

out = (df_B2 %>% filter(ExtractionTimes < limit_a | ExtractionTimes > limit_b) %>% count(Week))

 str(out)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   4 obs. of  2 variables:
 $ Week: chr  "02" "03" "04" "05"
 $ n   : int  99 106 156 237
 - attr(*, ".internal.selfref")=<externalptr> 

out
# A tibble: 4 x 2
  Week      n
  <chr> <int>
1 02       99
2 03      106
3 04      156
4 05      237

data = ts(out$n,start=c(2020,02), frequency = 52)

hw = HoltWinters(data, alpha=NULL, beta=FALSE, gamma=FALSE)
> p = predict (hw, n.ahead=1, level=0.95)
> plot(hw,p)

Благодарим Вас за помощь.

1 Ответ

1 голос
/ 25 марта 2020

Функция stats::plot.HoltWinters() показывает вам данные (черным цветом) и соответствующие значения и прогнозы (красным).

Поскольку вы уже используете пакеты tidyverse, вам, вероятно, будет проще использовать пакеты tsibble и fable, которые соответствуют одной и той же модели в аккуратной среде.

library(dplyr, warn.conflicts=FALSE)
library(tsibble, warn.conflicts=FALSE)
library(fable, warn.conflicts=FALSE)
#> Loading required package: fabletools

out <- tibble(
    Week = c("02","03","04","05"),
    n = c(99,106,156,237)
  ) %>%
  mutate(Week = yearweek(paste0("2020 W",Week))) %>%
  as_tsibble(index=Week)
out 
#> # A tsibble: 4 x 2 [1W]
#>       Week     n
#>     <week> <dbl>
#> 1 2020 W02    99
#> 2 2020 W03   106
#> 3 2020 W04   156
#> 4 2020 W05   237

out %>%
  model(ses = ETS(n ~ season("N"))) %>%
  forecast(h = "10 weeks") %>%
  autoplot(out)

Создано в 2020-03-25 с помощью пакета Представить (v0.3.0)

Модель эквивалентна модели вы подходите с HoltWinters(), хотя оценка параметров в ETS() использует MLE, а не сочетание LS с ad ho c heuristi c оценками, которые используются HoltWinters().

См. OTexts.com / fpp3 для учебника по использованию этих пакетов.

...