我有季节性(7天间隔)时间序列,每日数据30天。 合理预测的最佳方法是什么? 时间序列包含使用应用程序进行的订单,它显示1周的季节性(本周初的销售额较低)。 我尝试使用此代码的holt winters方法:
(m <- HoltWinters(ts,seasonal = "mult"))
plot(m)
plot(fitted(m))
但它给我一个错误:分解错误(ts(x [1L:wind],start = start(x),frequency = f),季节性): 时间序列没有或少于2个周期
你有什么建议?
编辑: 数据here
答案 0 :(得分:1)
您必须先确定ts
个对象。假设您的数据名为df
:
ts <- ts(df$install, frequency = 7)
(m <- HoltWinters(ts,seasonal = "mult"))
plot(m)
plot(fitted(m))
然后你就可以做出预测(提前10步):
predict(m, n = 10)
Time Series:
Start = c(4, 5)
End = c(5, 7)
Frequency = 7
fit
[1,] 1028.8874
[2,] 1178.4244
[3,] 1372.5466
[4,] 1165.2337
[5,] 866.6185
[6,] 711.6965
[7,] 482.2550
[8,] 719.0593
[9,] 807.6147
[10,] 920.3250
关于最佳方法的问题太难回答了。通常,考虑到样本外的准确性,选择不同模型的性能,并选择效果最好的模型。
答案 1 :(得分:0)
您可以使用df $ data来保存与ts系列中的每一天相对应的日期。
ts_series <- ts(df$install, frequency = 7)
ts_dates <- as.Date(df$data, format = "%d/%m/%Y")
以类似的方式,可以将预测值的日期保留在另一个序列中
m <- HoltWinters(ts_series, seasonal = "mult")
predict_values <- predict(m, 10)
predict_dates <- seq.Date(tail(ts_dates, 1) + 1, length.out = 10, by = "day")
使用日期序列,可以以正确的格式在x轴上以日期绘制日序列。使用axis.Date函数
可以获得对x轴刻度的更多控制。plot(ts_dates, ts_series, typ = "o"
, ylim = c(0, 4000)
, xlim = c(ts_dates[1], tail(predict_dates, 1))
, xlab = "Date", ylab = "install", las = 1)
lines(predict_dates, predict_values, lty = 2, col = "blue", lwd = 2)
grid()