【问题标题】:Time Series R with duplicate Items for daily forecast具有重复项目的时间序列 R 用于每日预测
【发布时间】:2017-02-02 03:56:45
【问题描述】:

我想要一个指导,不知道如何在 R 中绘制每日数据和使用预测。

在此数据中,周日和周六的购买量较低。并且有些工作日根本没有购买。所以它是分析的障碍。 我有大约 300 行不同的项目名称,这些项目在列内重复,但日期不同。 例如,我每周 3 次正好买了 1 块肥皂,分别在周一、周三和周日。 这是示例数据表:

到目前为止,我的麻烦是使用其他统计软件手动预测需要很长时间,所以我尝试从头开始学习 R,看看它如何节省时间。上表已放入R中,date也已通过as.Date(data$Date)函数从factor转换为date

通常我使用指数平滑法,因为购买量仍然很低,有时甚至缺货,所以从历史数据中显示的模式并不多。这个分析的输出是我可以提供每天购买该物品的预测,以便在我们何时需要某件物品时给出指示。

【问题讨论】:

标签: r datetime time-series forecasting timeserieschart


【解决方案1】:

首先请考虑添加一个可重现的示例以获得更实质性的答案。查看带有标签 R 的最受好评的问题以了解操作方法。

编辑:我认为这是您在创建 ts 之前想要的:

data.agg <- aggregate(data$purchase, by = list(data$date, data$item), FUN = sum)

如果您的数据还不是“ts”类,您可以使用ts() 命令创建一个时间序列对象。来自?ts 页面:

   ts(data = NA, start = 1, end = numeric(), frequency = 1,
   deltat = 1, ts.eps = getOption("ts.eps"), class = , names = )
as.ts(x, ...)

通常您可以使用 HoltWinters 函数进行指数平滑,如下所示:

data.hw <- HotlWinters(data)
data.predict <- predict(data.hw, n.ahead = x) # for x = units of time ahead you would like to predict

有关该功能的更多信息,另请参阅?HoltWinters

聚合的可重现示例:

data <- data.frame(date = c(1, 2, 1, 2, 1, 1), item = c('b','b','a','a', 'a', 'a'), purchase = c(5,15, 23, 7, 12, 11))

data.agg <- aggregate(data$purchase, by = list(data$date, data$item), FUN = sum)

HoltWinters 的可重现示例:

library(AER)
data("UKNonDurables")

nd <- window((log(UKNonDurables)), end = c(1970, 4))
tsp(nd)
hw <- HoltWinters(nd)
pred <- predict(hw, n.ahead = 35)
pred

plot(hw, pred, ylim = range(log(UKNonDurables)))
lines(log(UKNonDurables))

【讨论】:

  • 这很有帮助,但是项目是重复的,我需要以没有重复变量的独特方式绘制它,因此它只有 1 个每日购买的项目。 @daniel-winkler
  • 只是为了澄清:您想要每天的购买总数(不考虑商品)还是每件商品每天的购买总数?
  • 该项目对于分析也很重要,所以我想看看每个项目每天的购买数量@daniel
  • aggregate 函数和 FUN = sum by = list(group1, group2) 应该会为您提供一个表格,其中包含每个日期购买项目 A 的总和。使用 data.agg 而不是 data 继续该示例的其余部分(如果您是这样命名的)。
猜你喜欢
  • 2013-05-01
  • 1970-01-01
  • 2020-02-20
  • 2019-04-01
  • 2021-06-08
  • 2014-11-06
  • 2019-08-10
  • 2020-04-10
  • 2014-04-03
相关资源
最近更新 更多