我正在尝试使用Holt Winters和预测函数来衡量过去10年的每周股票指数,但我仍然会收到错误。你能帮帮我吗?
这就是我现在要做的事情:
volumen<-read.csv(file.choose(), header = TRUE, sep = ";")
lines(volumen[,6])
HoltWinters(volumen)
这是我在第三排的错误:
Error in decompose(ts(x[1L:wind], start = start(x), frequency = f), seasonal) :
the time series has no periods or has less than 2
对于预测我有以下代码,但它似乎不适用于以前的错误:
lines(predict(volumen.hw,n.ahead=12),col=2)
R Studio中的数据看起来是正确的。我决定使用file.choose()来使这个代码更通用。我正在使用* .csv文件。有人可以指导我或建议应用Holt和Winters方法和预测的代码应该是什么样的?
答案 0 :(得分:0)
很难100%确定,但
HoltWinters(lynx)
生成与你一样的消息,g但是
HoltWinters(lynx, gamma = FALSE)
产生
Holt-Winters指数平滑趋势,没有季节性 成分
致电:HoltWinters(x = lynx,gamma = FALSE)
平滑参数:
alpha:1
beta:0
gamma:FALSE系数:[,1] 一个3396 b 52
我从阅读HoltWinters文档中的示例中学到了什么。
答案 1 :(得分:0)
首先,如果你把数据放在这里(如果它不是私有的),那就太好了。
其次据我所知,您只能将预测包中的HoltWinters()或任何其他方法用于向量或时间序列,因此加载整个数据集(卷)而不指定行可能会导致问题。
最后,我建议您尝试将HW用于包含您要研究的数据的辅助向量,并指定时间序列的频率:
aux_train<-as.ts(volumen$variable, start=1, end=0.9*nrow(volume), freq="yourfrecuency")
prediction<-forecast(aux_train, h="number of forecast", method="hw")
accuracy(prediction, volumen$value)
答案 2 :(得分:0)
我终于赢得了这场战斗 - 我删除了我的代码并从头开始。这就是我的意思:
dane2<-read.csv2(file.choose(), header = TRUE, sep = ";", dec=",")
dane2 <-ts(dane2[,5], start=c(2008,1),frequency=52)
past <- window(dane2, end = 2017)
future <- window(dane2, start = 2017)
model <- HoltWinters(past, seasonal = "additive")
model2 <- HoltWinters(past, seasonal = "multiplicative")
pred <- predict(model, n.ahead = 52)
pred2 <- predict(model2, n.ahead = 52)
dane2.hw<-HoltWinters(dane2)
predict(dane2.hw,n.ahead=52)
par(mfrow = c(2,1))
plot(model, predicted.values = pred)
lines(future, col="blue")
plot(model2, predicted.values = pred2)
lines(future, col="blue")
现在它有效,谢谢你的答案。