【问题标题】:Time Series Analysis and R Holt Winters时间序列分析和 R Holt Winters
【发布时间】:2016-02-16 16:48:29
【问题描述】:

我有一个季节性(7 天间隔)时间序列,30 天的每日数据。 合理预测的最佳方法是什么? 时间序列包含使用应用程序制作的订单,它显示 1 周的季节性(一周开始时的销售额较低)。 我用这段代码尝试了 holt winters 方法:

(m <- HoltWinters(ts,seasonal = "mult"))
 plot(m)
 plot(fitted(m))

但它给了我一个错误,例如:分解错误(ts(x[1L:wind], start = start(x), frequency = f),seasonal) : 时间序列的周期不少于或少于 2 个

你有什么建议?

编辑: 数据here

【问题讨论】:

  • 你能提供一些数据吗?
  • 确定:编辑了我的帖子

标签: r time-series forecasting holtwinters


【解决方案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

关于最佳方法的问题太难回答了。通常会比较不同模型的性能,考虑到它们的样本外精度,然后选择结果最好的模型。

【讨论】:

  • 感谢您的提示。你认为理论上明智的 Holt Winters 方法是一个合理的选择吗?
  • 真的很难回答。我不知道你的数据。 HoltWinters 方法的特点是赋予新观测更多权重的特性。如果您可以假设您的数据较新的观察结果更能代表未来,那么这可能是一种合理的方法。
  • 谢谢。我应该测试不同的模型并测试性能。但是:如何在同一张图中绘制真实数据和拟合值?以正确的格式显示 x 时间?
【解决方案2】:

您可以使用 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()

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2018-11-19
    • 1970-01-01
    • 2020-09-17
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多