异常值检测。曲线拟合(即具有置信区间的 LOWESS、LOESS 等)或 MATLAB 中的任何其他适用方法

问题描述 投票:0回答:1

我正在尝试自动检测 x,y 散点图中的一些数据点。我有数千个,因此我需要实施一种在准确性和灵敏度之间取得良好权衡的方法。从视觉上看,我可以看到我的“异常”数据点,但我很难从统计上拾取它们。

这是我的 x,y 数据的典型散点图(请查找此处附加的 xy 数据:https://onlinetextsharing.com/untitled-722):

Scatterplot

我最感兴趣的是识别具有正偏差的数据点,即下面用红色圈出的数据点:

Outliers

用蓝色圈出的那些可能是“异常的”,但我知道它们可能离主星团太近,无法清楚地(和/或统计上)被选为异常。具有负偏差的那些(即那些用绿色圈出的)也可以被标记为异常,但我对它们不太感兴趣。

我想要实现的目标如下图所示(尽管任何其他方法都非常受欢迎)。基本上,我想拟合一条穿过主簇的曲线并隔离该主簇内的数据点。最后,我可以将那些超出这些假设边界的人标记为潜在异常。请注意,边界(如红色阴影区域所示)不需要沿曲线等距分布,它们可以随着点的扩散程度而变化(如果有意义的话)。

Theoretical Example

我在这个论坛上找到了一些想法(即Python中LOWESS的置信区间),但我不确定这些是否适用于我的数据。 这几乎就是我所追求的:

Example 来自:https://github.com/cerlymarco/tsmoothie

非常感谢任何帮助。 预先感谢!

matlab statistics scatter-plot outliers anomaly-detection
1个回答
0
投票

没有一些代码,除了一般性建议外,几乎无法说(我将其作为答案,而不是由于格式原因而发表的评论)

您可以使用 polyfit() 将曲线拟合到分散的数据。

一旦获得曲线,您就可以使用距离不等式(使用阈值)来确定异常值。

Mathworks 论坛中还有两个类似的查询,可能有用:

曲线拟合散点图 1 曲线拟合散点图 2

© www.soinside.com 2019 - 2024. All rights reserved.