预测具有许多零的每日时间序列

机器算法验证 时间序列 预测 季节性 零通胀 克罗斯顿法
2022-03-22 14:36:13

我需要预测具有以下特征的单变量销售数据时间序列。

  • 这是一个每日时间序列
  • 大约 70-80 % 的日期没有售出 ( )xt=0
  • 在剩余 20-30 % 的日子里,有一个正整数的销售额
  • 什么都不卖的日子并不总是在一周中的同一天

到目前为止,我尝试了 croston 方法(croston() 来自forecastR 中的包)。

croston方法合适吗?有没有合适的替代品?

我也感谢 R 中的代码。

编辑

我的数据看起来类似于下面的数据:

0,0,1,0,0,0,0,2,0,0,0,0,0,0, 0,0,0,1,0,0,0,1,0,1,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0

2个回答

(此答案基于销售预测业务方面的经验,而不是严格的统计/数学知识)

查看您的数据,每周进行预测比每天进行预测更有意义。在每日级别,它太稀疏了,但在每周级别,你会有一个更有意义的时间序列。

week 1: 0,0,1,0,0,0,0

week 2: 2,0,0,0,0,0,0

week 3: 0,0,0,1,0,0,0

week 4: 1,0,1,0,0,0,0

week 5: 0,0,0,0,0,0,0

week 6: 1,0,0,2,0,0,0

您每天使用的任何预测方法都会给出每天的分数值。这并没有真正的帮助,因为这些是销售单位,所以 ~ 0.14 的预测值并没有多大意义,除非你将其解释为概率(在这种情况下我不知道足够的数学来帮助,但其他人可能会更好地处理它)。

如果您按周汇总数据,您将获得:

week 1: 1

week 2: 2

week 3: 1

week 4: 2

week 5: 0

week 6: 3

然后,您可以简单地在您拥有的所有周内平均该值,或者使用移动平均线。然后,您将平均每两周售出 3 个单位。

请记住,这是一个销售预测:销售预测的目的是什么?确保您有足够的库存来满足客户的需求。根据我上面描述的方法,您会知道您需要每 2 周运送/订购 3 个库存单位以满足对该产品的需求 - 无需进行 ARIMA 或指数平滑或其他更复杂的时间序列分析。

对于这种情况,克罗斯顿的方法绝对是一个合适的选择。其基本思想是分别估计非零需求和需求间区间。但请注意,它的输出实际上是“需求率”,而不是实际需求单位(例如,0.1 的预测意味着 10 个时期的 1 个单位的需求)。实际上并没有提供需求的确切时间。

tsintermittent包为间歇性时间序列预测提供了一些替代方案,包括 iMAPA 和 Teunter-Syntetos-Babai 方法。该软件包还允许您使用一些调整来处理 Croston 方法的偏差,例如 Syntetos-Boylan 近似。