检测极值向量C+​​+

Detect extreme value vector C++

我在 C++ 中有一个像 {2,4,6,3,4,5,6,4,..} 这样的值(延迟)向量。我的 objective 是检测新值何时为极值 - 例如 96。我正在尝试进行一般检查以进行检测,而不是进行特定的数值检查。

我所说的极值是指 96 比 2 或 3 或 4 大 X 倍。但是,如果我的延迟为 {15,23,10,26,..} 然后是值 550,即比正常大 Y 倍 - 我想检测。

我需要从标准偏差开始,但不确定进一步的最佳方法。

谢谢。

在没有任何其他统计信息的情况下,计算现有数据的均值和均值的标准差,以及如果新点超过均值的 3 个标准差,则不要添加它。

在你有一定数量的分数之后,你可以合理地确定中心极限定理已经开始发挥它的魔力(20 分作为经验法则,特别是 "delays" 意味着 "Poisson" 乍一看),开发一种算法来消除可能已添加到初始集合中的任何异常值。通过依次考虑每个添加的点来做到这一点——消除它,并查看它是否符合包含的标准。这一步很重要:它旨在使早期引入的异常值失效;例如{2, 96, 4, 6, 3, 4, 5}。对于真正具有敌意的数据,您可能需要增加该算法的维数。

这是一门棘手的科学 - 您必须对其进行校准以满足您的要求,但我的建议可以帮助您入门。