0

我有简单的每月数据集,只需尝试以下代码:

`df2.holtwinters <- subset(df, account_id==loopitem) 
  x.holtwinters <- ts(df2.holtwinters$amount_usd, start = c(2015,1), end = c(2019,5), frequency = 12)
  arima1.holtwinters <- HoltWinters(x.holtwinters)
  forecast1.holtwinters <- predict(arima1.holtwinters, n.ahead=1*1)

数据集如下所示:

`      id     <date>         <dbl>
1     123  2015-01-01       -390
2     123  2015-02-01        944
3     999  2015-01-01        672

它给出了以下错误:

`In HoltWinters(x.holtwinters) :
  optimization difficulties: ERROR: ABNORMAL_TERMINATION_IN_LNSRCH
4

1 回答 1

0

由于我看不到您正在使用哪些数据,因此很难说出出了什么问题,但这里有一个示例代码可能会有所帮助。让我们从 Rob Hyndman 的网站获取零售数据

library(forecast)

retail <- read.csv("https://robjhyndman.com/data/ausretail.csv",header=FALSE)

删除日期列并创建 mts 分类数据

retail <- stats::ts(retail[,-1], start = c(1982,4), frequency = 12)

绘制第一个时间序列(第一列)

plot(retail[,1])

将 Holt Winters 拟合到数据中的第一个时间序列

fit <- HoltWinters(retail[,1])

像你一样使用预测函数来获得预测

fc <- predict(fit, n.ahead = 12)

plot(fc)

或者您可以使用预测功能来获得很好的预测输出。

fc <- forecast(fit, n.ahead = 12)

plot(fc)

如果由于某些原因您无法获得零售数据,则使用 AirPassengers 数据

fit <- HoltWinters(AirPassengers)

fc <- predict(fit, n.ahead = 12)

plot(fc)

或者您可以使用预测功能来获得预测输出

fc <- forecast(fit, n.ahead = 12)

plot(fc)

许多时间序列的预测循环

nts <- ncol(retail) # number of time series

h = 12 # forecast horizon

fc <- matrix(nrow = h, ncol = nts)

for (i in 1:nts) {

  fc[,i] <- forecast(HoltWinters(retail[,i]), h = h)$mean # it will return point forecast
  
}

colnames(fc) <- colnames(retail)

fc

我建议看一下fable包装。

于 2020-10-09T10:50:08.170 回答