使用HoltWinters预测进行批量预测

时间:2015-10-27 20:45:52

标签: r functional-programming batch-processing forecasting holtwinters

我使用Rob Hyndman的批量预测方法来预测dataframe中的多个列。我的代码如下:

require(forecast)

zips <- read.csv(file.choose(), header = T)
zips <- zips[,-c(1,2)]
ns <- ncol(zips)

zips <- ts(zips, frequency = 12, start = c(2005,1), end = c(2014,12))
zips <- HoltWinters(zips, seasonal = "mult")

h <- 24

fcast <- matrix(NA, nrow=h, ncol=ns)
for(i in 1:ns) {
    fcast[,i] <- forecast.HoltWinters(zips[,i], h=h)
}

write(t(fcast), file="fcast.csv", sep=",",ncol=ncol(fcast))

虽然使用常规forecast函数时效果很好,但我一直收到错误

  

[拉链[,i]错误:维数不正确]

如何使用此处构建的此循环运行此HoltWinters预测?

3 个答案:

答案 0 :(得分:0)

尝试将预测存储到列表而不是矩阵。而且,forecast.HoltWinters函数需要类HoltWinters的对象,它由HoltWinters函数生成,需要向量作为输入。除了点预测之外,默认情况下forecast.HoltWinters函数也会产生预测区间界限。

fcast <- list()

for(i in 1:ns) {

  zips_fit <- HoltWinters(zips[, i], seasonal = "mult")
  fcast[[i]] <- forecast.HoltWinters(zips_fit, h = h)
}

答案 1 :(得分:0)

即使我也使用Holts Winter预测方法的类似批量处理,但我使用Rob J Hyndman教授创建的预测包中的函数hw。 无论如何,对于您的问题,我更倾向于在预测中使用$mean。即

fcast <- matrix(NA, nrow=h, ncol=ns) 
for(i in 1:ns) {
    fcast[,i] <- forecast.HoltWinters(zips[,i], h=h)`$mean`
}

尝试一次!

答案 2 :(得分:0)

hw()函数始终提供预测值。要获得点预测,您可以使用$mean(如以下代码中所使用)。您还可以使用seasonal = "additive"seasonal = "multiplicative"参数。

祝你好运

最佳

require(forecast)

    zips <- read.csv(file.choose(), header = T)

    zips <- ts(zips, frequency = 12, start = c(2005,1), end = c(2014,12))

    ns <- ncol(zips)
    h <- 24

    fcast <- matrix(NA, nrow=h, ncol=ns)
    for(i in 1:ns) {fcast[,i] <- hw(zips[,i],h=h)$mean

    }

    write(t(fcast), file="fcast.csv", sep=",",ncol=ncol(fcast))