如何时间序列的曲线中发现异常点

我有个X轴是时间(以小时为单位),Y轴是数据值,能画出一个大体圆滑的曲线(如下图),但是异常时,会出现一个特别明显的突出点或凹进去的点(数据相对而言变化特别大),请问有什么算法可以识别出这些异常的点吗?

正常时:图片描述
异常时:图片描述

请问那个凹下去的点怎么用算法发现?

阅读 8.6k
2 个回答

没有看到具体的时间序列的最小值和最大值。

  1. 如果每天最小值、最大值变化不大,可以考虑使用周期函数$$ts = csin(frac{24}{2pi}t + a )+ b = beta_1 sin(frac{24}{2pi}t) +beta_2 cos(frac{24}{2pi}t) + beta_0$$来做回归分析,然后通过区间估计,估计出每一时刻的值。设置一个可以接受的阈值,比如90%,如果实际点落在90%估计的区间外,可以考虑这个点为异常值。

  2. 如果出现的异常值往往只有一个点,直接用$$|ts_{t_2} - ts_{t_1}|$$不就好了,如果这个值很大,就可以考虑这个点异常了。

新手上路,请多包涵

用差分的逻辑就行。

检验每个数据,一但出现巨大差距就报警。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题