0

我正在使用 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,但我一直收到错误

[zips [,i] 中的错误:维数不正确]

如何HoltWinters使用我在这里构建的这个循环来运行这个预测?

4

3 回答 3

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)
}
于 2015-10-27T21:15:12.167 回答
0

hw()无论如何,函数都会给出预测值。获取您可以使用$mean的点预测(如以下代码中所用)。你也可以使用seasonal = "additive"orseasonal = "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))
于 2018-07-07T11:54:21.180 回答
0

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

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

试试这个!

于 2017-06-20T14:51:15.527 回答