首页 > 解决方案 > 霍尔特温特斯预测 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)

感谢你的帮助。

标签: rpredictionforecasting

解决方案


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

由于您已经在使用 tidyverse 包,您可能会发现在 tidy 框架中使用适合相同模型的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)

reprex 包(v0.3.0)于 2020-03-25 创建

该模型等效于您正在拟合的模型HoltWinters(),尽管 中的参数估计ETS()使用 MLE 而不是 LS 与使用的即席启发式估计的混合HoltWinters()

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


推荐阅读