R 中的 Holt Winters 预测

Holt Winters forecast in R

我想用 Holt Winters 做一个 ,但我犯了一些错误。

从我的数据集中,它包含大约 10k 个值,我只想要给定范围 15-26 之外的那些。 每周所有超出我放入数据框中的范围的值 "out"。从 2020 年 1 月 2 日开始。

到目前为止一切顺利。

我每周有一个值,想与 Holt Winters 一起预测接下来几周的增长情况。但是我的情节看起来很不可理解。没有预报可看。我做错了什么?

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)

感谢您的帮助。

stats::plot.HoltWinters() 函数显示数据(黑色)以及拟合值和预测(红色)。

由于您已经在使用 tidyverse 包,您可能会发现使用 tsibblefable 包更容易,它们适合 tidy 框架中的相同模型。

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)

reprex package (v0.3.0)

于 2020-03-25 创建

该模型等同于您使用 HoltWinters() 拟合的模型,尽管 ETS() 中的参数估计使用 MLE 而不是 LS 与 HoltWinters()

有关如何使用这些包的教科书,请参阅 OTexts.com/fpp3