计算忽略异常值的平均值

机器算法验证 标准差 异常值
2022-03-23 00:22:07

这更像是一个一般的统计问题,但如果重要的话,我正在编写 PHP 代码。

假设我正在尝试计算在二级市场上通常买卖的玩具的平均值,并且我有一组从拍卖和用户输入的“已付价格”数据中剔除的价格值。代表拍卖的数据点非常可靠,但我也偶尔会得到“车库出售”类型的数据点,其中有人可能在车库出售中花钱从波莉阿姨那里买了东西。问题是$1数据点的类型对我来说并不真正有价值,因为它们并不能真正表明价值——波莉阿姨不知道,也不在乎。同样,我可能偶尔会从一个开玩笑的人那里得到一个数据点,该数据点来自一个$9000真正只有价值的玩具$9

那么,在计算价值时,从其他有用的数据中剔除这些类型的异常的最佳方法是什么?

我已经阅读了有关异常值的内容,以及通常忽略其余数据之外超过 2.5 个标准差的任何内容,但我正在寻找完整的配方,在这里。

非常感谢!

4个回答

在箱线图中,与四分位数相差超过 1.5 倍(四分位距,四分位数 1 和 3 之间的差)的值(如:在远离中位数的方向上)通常被视为异常值。

我不能说这是否适合您的数据,但......

您可以考虑使用修剪后的平均值这将涉及丢弃最高 10% 的值和最低 10% 的值,无论您是否认为它们是坏的。

在它被删除之前,我最初在 SO 上发布了这个:

https://stats.stackexchange.com/可能会更好地帮助您,并给出更全面的答案。我不是数学家,但我怀疑有多种方法可以解决这个问题。

作为一名程序员,这就是我解决问题的方式。我不够熟练,无法告诉您这是否合理,但对于简单的数据,它应该是可以接受的。

根据数据的类型,截断金额可能是可以接受的。您可能需要一个滚动平均值(通常用于股票市场),它采用过去 n 个月的平均价格,这有助于抵消通货膨胀的影响,然后有一个$n截止值或基于百分比的截止值,即任何值偏离滚动平均值的 +-20% 或 +-$n将被忽略。

这对于相对稳定的市场非常有效,如果您的实体存在于波动剧烈的波动市场中,那么您可能希望找到不同的方法。

您还需要认真考虑切断数据,您提到奶奶的庭院销售可以说是合法的切断,但您需要接受您可能会丢失合法的数据点,这可能会对您的结果产生重大影响。

但同样,将有多种方法来实现这一目标。

也许在这里可以使用RANSAC这样的稳健估计器。