具有重复项目的时间序列 R 用于每日预测
Time Series R with duplicate Items for daily forecast
我想要有关如何在 R 中绘制每日数据和使用预测的指导。
该数据中周日和周六的购买量较低。并且某些工作日根本没有购买。所以它是分析的障碍。
我有大约 300 行具有各种项目名称,这些项目在列内重复,但日期不同。
例如,我每周购买 3 次 1 块肥皂,分别在周一、周三和周日。
这是示例数据 table :
到目前为止我的麻烦是我用其他统计软件手动预测花了很长时间,所以我尝试从头开始学习R,看看它如何节省时间。上面的table已经放入R中,date
也通过函数as.Date(data$Date)
factor
变成了date
class
通常我使用指数平滑法,因为购买量仍然很低,有时会缺货,所以从历史数据中显示的模式不多。此分析的输出是我可以提供每天购买商品的预测,以便在我们何时需要商品时提供指导。
首先请考虑添加一个可重现的示例以获得更实质性的答案。查看带有标签 R 的投票最多的问题,了解操作方法。
编辑:我认为这就是您在创建 ts 之前想要的:
data.agg <- aggregate(data$purchase, by = list(data$date, data$item), FUN = sum)
如果您的数据还不是 class '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))
我想要有关如何在 R 中绘制每日数据和使用预测的指导。
该数据中周日和周六的购买量较低。并且某些工作日根本没有购买。所以它是分析的障碍。 我有大约 300 行具有各种项目名称,这些项目在列内重复,但日期不同。 例如,我每周购买 3 次 1 块肥皂,分别在周一、周三和周日。 这是示例数据 table :
到目前为止我的麻烦是我用其他统计软件手动预测花了很长时间,所以我尝试从头开始学习R,看看它如何节省时间。上面的table已经放入R中,date
也通过函数as.Date(data$Date)
factor
变成了date
class
通常我使用指数平滑法,因为购买量仍然很低,有时会缺货,所以从历史数据中显示的模式不多。此分析的输出是我可以提供每天购买商品的预测,以便在我们何时需要商品时提供指导。
首先请考虑添加一个可重现的示例以获得更实质性的答案。查看带有标签 R 的投票最多的问题,了解操作方法。
编辑:我认为这就是您在创建 ts 之前想要的:
data.agg <- aggregate(data$purchase, by = list(data$date, data$item), FUN = sum)
如果您的数据还不是 class '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))