店铺销售预测时间序列模型的选择

机器算法验证 时间序列 预测 有马 模型选择 指数平滑
2022-04-01 15:26:24

我有一系列商店(都属于一家公司)的每周销售额数据集。我试图预测个别商店每周/每月使用几种成分。使用何种模型的选择似乎在 Holt Winter(或更一般的状态空间模型)和 ARIMA 模型类之间。

我进行了一系列分析,测试哪种类型在整个数据集中最有效。也就是说,例如,我查看了哪个模型最好地描述了任何给定的系列,然后计算了哪个模型最好地描述了最多的系列。这是使用 MSE、MAPE 和其他措施完成的。

但是,我不确定是否应该简单地确定哪种模型最适合任何给定的单个系列,然后使用它。我没有这样做的原因是因为对所有系列使用相同的模型似乎更直观。

所以我的问题是,是否有任何特定的理论或实践原因,为什么我要选择一种方法或另一种方法?

4个回答

我将详细说明其他答案未提及的一点。

对于不同的商店/产品有许多系列,可能存在竞争/替代效应,因此您可能希望使用某种形式的分层预测。具体来说,某些产品可能会替代其他产品,从而导致销售量呈负相关。所有/大多数产品可能存在共同的季节性影响,从而导致正相关。我可能会通过主成分分析开始研究这种影响。

如果这种影响很重要(它们可能很重要),那么某种分层预测可能比单变量建模要好得多。多种方法是可能的。我在一个项目中使用的一种方法是首先对总销售额进行建模,然后对总销售额的比例进行建模。那将是自上而下的,也可以采用另一种方式,从单个系列开始,然后在总数变得不切实际时对其进行纠正。这在本网站的其他一些帖子中进行了讨论,例如具有复杂聚合约束的分层时间序列预测单一预测与汇总更细粒度的 n 步提前预测

现在甚至还有一个R用于分层预测的包CRANhts https://CRAN.R-project.org/package=hts 它的文档包含您应该查看的参考资料。

对于此类模型选择/超参数优化问题,我建议您研究交叉验证方法。特别是由于您的主要目标似乎是样本外预测,因此您要小心过度拟合训练数据。

我想不出为什么你不能为不同的项目使用不同的模型,但你可能还想在不同的模型之间共享信息(也许是某种分层设置),如果模型不兼容。

ARIMA 模型可以轻松地结合经验识别的脉冲、电平变化和本地时间趋势,同时结合参数和误差方差变化。HW 模型是一个固定过程,缺乏具有干预检测的 ARIMA 模型的鲁棒性和适应性,并且由于包含不必要/不重要的参数而变得臃肿。此外,ARIMA 模型很容易将用户指定的因果转化为传递函数模型。当诊断可以带来更好的建模时,为什么要满足于像硬件这样的假设模型形式。更好的建模通常包括星期效应、假日效应、每月效应、每周效应、每月效应等。你可能想看看这个参考http://www.autobox.com/cms/index.php/blog/entry/advantages-and-disadvantages-of-using-monthly-weekly-and-daily-data以更全面地了解您为什么需要每天使用数据

了解您关心的时间范围(提前一个月、一周还是一天?)以及您拥有多少数据(您能否可靠地估计年度季节性?)很有用。

就个人而言,我发现 ARIMA 不直观且充满陷阱,而且我在这方面并没有取得太大的成功。如果您有每日数据并关心每日波动,那么无论如何它可能是正确的选择。

但无论你最终做什么,我的建议是从一个“简单”回归模型开始,包括一些年度季节性(一些循环样条)、假期和趋势,理想情况下使用另一个答案中提到的层次结构来设置它。系数将是可以理解的,从简单和扩展开始很容易。

时间序列中的交叉验证不起作用,因此只需创建几个合理时间段的窗口(如果您想要具有年度季节性并且不使用分层模型,则至少两年)并通过它的预测来评估您的方法下一个周、月或年,无论您关心什么范围。评估并不简单(您是否更关心近期的预测而不是以后的预测?)并且还应该反映您的业务情况。