涉及预测区间的预测准确度指标

机器算法验证 时间序列 预测 预测区间 准确性
2022-03-21 04:03:54

我正在为公司的产品收入生成时间序列预测,并且正在寻找某种方式来显示随着时间推移的准确性 - 例如,在说 6 个月后,他们想看看实际收入与预测收入相比如何产生 6 个月前。

我正在使用 Rets() 包生成预测,并对接下来 6 个月的每个月进行预测,包括预测间隔。

是否有任何将这些预测间隔考虑在内的预测准确性指标?

我知道标准 MAPE、MASE 等,但这些都适用于点预测。我正在寻找的是一种同时考虑预测间隔有多准确的度量 - 例如,如果我们生成 95% 的预测间隔,但实际值只出现在其中 10% 的时间,我希望能够来识别这一点。

3个回答

这是一个很好的问题。不幸的是,虽然学术预测文献确实(缓慢地)从几乎完全强调点预测转向区间预测和预测密度,但评估区间预测的工作却很少。(编辑:请参阅此答案的底部以获取更新。)

正如gung 所指出的,给定的 95% 预测区间是否包含真实的实际值,原则上是的伯努利试验。给定足够多的 PI 和实现,原则上您可以检验实际覆盖概率实际上至少为 95% 的原假设。p=0.95

但是,您需要考虑统计功效和样本量。最好事先确定与目标覆盖率的哪种偏差仍然可以接受(92% 可以吗?90%?),然后找到在给定概率下检测如此强或更强的偏差所需的最小样本量,说,这是标准的。模拟次伯努利试验,用置信区间估计,看看它是否包含 95% 的值,“经常”这样做,然后调整直到的案例中,95% 位于 CI 之外。或使用任何伯努利功率计算器。β=80%np=0.92p^nβ=80%

好的,现在我们有了我们的样本量,您可以批量处理您的 PI 和实现,查看您的 PI 包含真实实现的频率,然后开始测试。您的批次可以是单个时间序列的最后PI/实现,或者您正在预测的大量时间序列的所有最新 PI/实现,或其他。n

这种方法的优点是易于解释和理解。当然,如果您有大量试验,即使与目标覆盖范围的微小偏差也会在统计上显着,这就是为什么您需要从业务角度考虑实际上哪些偏差是显着的,如上所述。

或者,分位数预测(例如,2.5% 和 97.5% 的分位数预测,以产生 95% 的 PI)作为某些损失函数下的最佳预测自然而然地出现,这些损失函数是基于目标分位数参数化的。这篇论文给出了一个很好的概述。这可能是上述伯努利测试的替代方法:为您的目标上下分位数找到正确的损失函数,然后在这些损失函数下评估您的 PI 的两个端点。然而,损失函数相当抽象,不容易理解,尤其是对于非技术人员而言。

例如,如果您要比较多种预测方法,您可以首先根据伯努利假设检验或损失函数丢弃那些 PI 明显低于预期的方法,然后根据其 PI的宽度评估通过初始筛选的方法。在正确覆盖率相同的两个 PI 中,通常越窄的 PI 越好。

有关使用零假设显着性检验对 PI 的简单评估,请参阅本文还有一些更精细的 PI 评估方案,它们还可以处理覆盖范围偏差的连续依赖性(也许你的财务 PI 在一年中的某些时候是好的,但在特定时间很差),比如这篇论文那篇论文不幸的是,这些需要大量的 PI/实现,因此可能只与高频财务数据相关,例如每天多次报告的股票价格。

最后,最近有一些兴趣超越 PI 到潜在的预测密度,可以使用(适当的)评分规则进行评估。Tilmann Gneiting 在这方面一直很活跃,他的这篇论文给出了很好的介绍。然而,即使您决定更深入地研究预测密度,评分规则仍然非常抽象,难以与非技术人员交流。


编辑- 更新:

您的质量度量需要平衡预测间隔的覆盖率长度:是的,我们想要高覆盖率,但我们也想要短间隔。

有一种质量度量可以做到这一点并且具有吸引人的特性:区间得分为预测区间的下端和上端。分数由下式给出u

S(,u,h)=(u)+2α(h)1(h<)+2α(hu)1(h>u).

这里是指标函数,是您的算法所针对的覆盖范围。(您需要根据您计划对预测间隔执行的操作来预先指定这一点。以的覆盖率为目标是没有意义的,因为生成的间隔太宽而对任何事情都没有用。)1αα=100%

然后,您可以对许多预测的区间得分进行平均。平均分越低越好。请参阅Gneiting & Raftery (2007, JASA ) ] 了解讨论和进一步文献的指示。例如,在最近的 M4 预测竞赛中评估预测区间时,使用了该分数的缩放版本。

(完全披露:这是从我的这个答案中无耻地抄袭的。)

正如 Stephan Kolassa 的回答中所反映的那样,有大量关于预测评估的学术文献。让我从该文献中添加另一个想法,我认为这很符合您的问题。

假设您的预测区间有下限pl和上限pu, 目标是设计一个水平的中心预测区间α(即你允许α/2% 的观测值低于pl,并且对于α/2% 低于pu)。

给定一个实现y,预测区间的统计分数由下式给出

Score=(pupl)+2α(ply)1(y<pl)+2α(ypu)1(y>pu),
在哪里1是指标函数;参见 Gneiting 和 Raftery 中的第 6.2 节(“Strictly Proper Scoring Rules, Prediction and Estimation”,Journal of the American Statistical Association,2007)。重要的是,请注意,较小的分数对应于更好的预测区间。

分数公式背后的直觉如下:在最好的情况下,我们希望有非常短的预测间隔(pu仅略大于pl),但仍然涵盖了实现y (plypu)。在这个理想世界中,分数公式的第一个和将接近于零,而第二个和第三个和将恰好为零。

当然,在实践中,在产生短预测间隔和实际覆盖实现之间存在权衡y. 上面的分数在这两个目标之间取得了平衡。

这似乎是您可以使用数据框完成的事情 - 假设您每天都有置信区间 - 即两列,有天行:一个上限估计值和一个下限估计值。您也可以只使用当天置信区间的高斯平均值和标准偏差作为每天的两列。

然后,您只需存储另一列产品收入的实际测量值。

接下来,您只加载带有估计数据和实际数据的日期,取高斯平均值与实际数据之间的差异,除以标准差,然后使用该数字对预测的有效性进行“排名”。

如果它在〜2个标准偏差内(|predictedmeanactual|σ2),那么它在您的置信区间内。

所以关键问题是:

在 R 中使用数据框,存储数据(数据库等),正确选择数据......只是机制。