一种方法是简单地使用标准时间序列模型,例如每个部门的 ETS/TBATS/ARIMA。这些方法会在适当的情况下考虑到您可能会看到的特定趋势(以及季节性),尽管预测趋势何时会下降/将持续多长时间是一项非常困难的任务。这不会是一种无效的方法,但这里的问题是每个时间序列都将孤立地拟合,并且您似乎拥有大量相似的时间序列以及有价值的外生数据,其中大部分不依赖于时间。上述方法意味着拟合可能大量的时间序列模型,这在很大程度上是不切实际和乏味的(在我看来),并且在 ARIMA 的情况下,您将无法包含不随时间变化的变量。
这是我建议您将时间(以某种方式)作为协变量的回归算法(统计或 ML)。您的数据集基本上会被扩展,以便一行是任何特定部门在任何特定月份 + 年份观察到的响应变量。您的时间协变量可以是两列;一个带有年份,另一个带有月份,或者只是一个连续变量,例如 2019 + 1/12、2019 + 2/12 等。
然后,您将使用“部门”作为分类变量,以及响应的滞后值(可能包含当前趋势信息)或变量,例如“部门在过去 k 个月内的平均卫生服务生产”或“中位数”过去一年所有部门的卫生服务生产=所有数据”等。选择需要多少个月,以及您汇总到的级别(超过一个部门?超过所有部门?仅超过特定部门? ) 将根据您认为合理的情况确定。
如果您有与时间相关的事件,您可以使用指标变量对其进行建模,也可以使用“自与时间相关的事件开始/结束以来的月份”等变量来捕捉滞后效应。季节性(如果存在)可以通过指标变量/傅里叶级数变换轻松捕获。要获得更多趋势特征,您还可以使用过去几个月的数据(从特定观察/数据行的时间段)运行另一个回归算法,以获取当前的总体趋势(在那个时间点)。非时间相关的连续变量(例如“我们的患者在我们的医院与其他医院有多少髋关节手术”)是按部门扩展数据集的简单连接。
在许多这些特征工程的想法中,你最终会在系列开始时得到 NA 值,这意味着在开始时放弃可能几个月的数据(我认为如果你有这应该没什么大不了的) 120 个单位长的时间序列)。无论如何,我建议使用时间序列交叉验证,使用最新数据作为测试指标,然后继续前进,直到数据用完。在您的情况下,每个测试集将包含 12 个月的数据,并且您将一次将一个月的数据添加到训练集中(将测试集时间段提前一个月)。
我希望这有帮助。