如何使用 R“准确”预测具有大量未知因素的多元时间序列?

机器算法验证 r 时间序列 预测 神经网络 有马
2022-04-01 17:09:46

我对统计学比较陌生,没有受过正式培训,但遇到了一个复杂的问题需要解决,需要一些指导。我意识到我在这里有点超出我的深度,但我会很感激我能得到的任何帮助,因为没有预算,因此无法购买软件或聘请顾问。

问题

我工作的企业有大量的移动代表,可以被派往各种不同的工作。有大约 100 种不同的工作类型,每个工作可以分为 4 种不同的最终结果。这 400 个结果中的每一个都需要分配工时来完成。我计算了过去 5 年中每个小时段中每种结果发生了多少次。

我被要求预测从现在起的 28 天内每个小时段内每个结果中会发生多少个结果。由此产生的预测将用于按小时预测人员配备需求。因此,每个小时段的预测需要相当准确。

因素

在我的数据中,显然有一些年、周和日的季节性影响。一般来说,每个结果更有可能发生在一周中某些天的特定时间,并且具有一些年度趋势。

每个不同的结果都可能与许多不同结果的频率有关。即如果x发生,则y和/或z可能,但a和/或b不是。

有许多环境因素会影响每个结果的频率。这些可以包括但不限于天气、社会政治、金融趋势、一次性事件。

我试过的

到目前为止,我已经尝试过使用简单的 auto.arima、holtwinters 和 ets 预测。holtwinters 最终生产出一条平坦的生产线(即接下来的 672 小时为 5 小时)。ets 不起作用,因为季节超过 24 个间隔。auto.arima 产生了最好的结果,但距离准确还有很长的路要走。

然后建议我尝试 tbats() 并为其提供多个季节长度。我通过给它 8760 (1yr) 和 168 (1wk) 的季节性长度来获得最好的结果。令人沮丧的是,当将这些结果视为 1 个月内所有小时段的总和时,这些结果在 1% 以内,但在考虑每个单独的小时段时,这些结果的差异高达 300%(平均 20%)。

这两种方法都应用于单个结果,而不是考虑所有可能的结果(以及它们之间的相关性)。

到目前为止我的想法

在这个阶段,我觉得我的两个选择是找到一种方法来使用类似于 tbats() 的东西,它将查看多个不同结果之间的关系以及基于该信息的季节性和预测。

或者

为神经网络模型放弃这种方法。我的理解(有限)是,使用神经网络方法,我可以“考虑”大量未知的环境因素,而无需实际识别它们。我知道这很懒,但我对数据的感觉是,将有相当多的未知因素来识别和预测它们本身可能最终成为一项工作(即天气条件)

问题(最后)

我正在寻找的是一些指导。

考虑到上述信息以及我几乎仅限于 R 的事实,最好的方法是什么?

我需要遵循哪些基本步骤?

虽然我不能在线发布我的数据(由于我的雇主的限制),如果有人有兴趣帮助我们寻找解决方案,我可以发送一两个人。

1个回答

以我的经验,您只能使用传统的时间序列模型到目前为止。鉴于您描述的复杂性,我会尝试使用随机森林等非线性机器学习算法。玩一下 R 包 'rf'。这里有一篇不错的博客文章,其中包含来自 Kaggle 比赛的示例代码:

http://blog.kaggle.com/2012/05/01/chucking-everything-into-a-random-forest-ben-hamner-on-winning-the-air-quality-prediction-hackathon/

如果您对机器学习不熟悉,那么这是参考:

http://statweb.stanford.edu/~tibs/ElemStatLearn/

另请参阅 Andrew Ng 的斯坦福讲座或 Coursera 课程。