检测极值向量C ++

时间:2018-04-06 10:36:44

标签: c++ vector standard-deviation

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

根据极值,我的意思是96将是大于2或3或4的X倍。但是,如果我有{15,23,10,26,...}的延迟然后是值550,这是Y次大于正常 - 我想检测。

我需要从标准差开始,但不确定最佳方法。

谢谢。

1 个答案:

答案 0 :(得分:3)

在没有任何其他统计信息的情况下,计算现有数据的均值标准差标准偏差,如果新点数大于3平均值之外的平均值的标准偏差,然后不要添加它。

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

这是一项棘手的科学 - 您必须根据自己的要求进行校准,但我建议您开始学习。