代码之家  ›  专栏  ›  技术社区  ›  AviD

统计删除错误值

  •  2
  • AviD  · 技术社区  · 16 年前

    在绘制图表之前,我可以使用什么统计方法来分析这些值,以排除任何与其他值不同的值?

    编辑: 在骨头上加些肉。假设价格是股票价格(它们不是,但它们的行为方式相同)。你可以看到价格在一天中显著上升或下降。我们平均每天记录大约150个价格,有时一两个价格是错误的。其他时候他们都很好。。。

    6 回复  |  直到 16 年前
        1
  •  1
  •   Hank Gay    16 年前

    计算并跟踪 standard deviation 有一段时间。在您有了一个合理的积压工作之后,您可以通过查看偏离平均值的标准偏差来忽略异常值。更好的是,如果你有时间,你可以利用这些信息做一些事情 naive Bayesian classification .

        2
  •  1
  •   Matt Haughton    16 年前

    这是一个很好的问题,但可能会引起相当多的讨论,因为答案可能会非常不同。这取决于

    • 你愿意为此付出多少努力?

    • 有些答案真的会相差+/-20%吗?或者你发明的任何测试?那么,是否总是需要一些人为干预?

    • 为了发明一个相关的测试,我需要对主题有更多的了解。

    • 根据之前的值(或之前10或20个值的平均值/模式)进行简单测试可以直接实现

    • 下一个复杂程度将涉及对所有值(或之前的x值,或过去3个月的值)的一些统计测量,正态分布或高斯分布将使您能够确定每个值是错误还是准确。这种确定程度通常以百分比表示。

    看见 http://en.wikipedia.org/wiki/Normal_distribution http://en.wikipedia.org/wiki/Gaussian_function 这些页面有足够的链接来帮助编程,也取决于您使用的语言,可能有函数和/或插件可用于帮助编程

    • 一种更高级的方法是使用某种学习算法,该算法可以考虑其他参数(在最后的x值之上),例如,学习算法可以考虑产品类型或制造商。或者甚至监控一天中的时间或输入图形的用户。此选项似乎超出了您所需的范围。但是,编写代码和训练学习算法需要大量工作。

    我认为第二种选择对你来说是正确的。使用标准偏差(很多语言都包含一个函数)可能是一个更简单的选择,这只是一个测量值偏离x之前值的平均值有多远的方法,我将标准偏差选项放在选项1和选项2之间

        3
  •  0
  •   Whisk    16 年前

    您可以测量现有人群中的标准偏差,并排除平均值大于1或2个标准偏差的人群?

        4
  •  0
  •   Roel    16 年前

    或者用价格的移动平均值代替实际价格。

        5
  •  0
  •   tzot    16 年前

    引用 here :

    统计学家设计了几种检测异常值的方法。所有方法首先量化异常值与其他值的距离。这可以是离群值与所有点的平均值之间的差值、离群值与剩余值的平均值之间的差值或离群值与下一个最近值之间的差值。接下来,将该值标准化,方法是除以一些分散度量,例如所有值的SD、剩余值的SD或数据范围。最后,计算一个P值来回答这个问题:如果所有的值都是从一个高斯总体中抽样的,那么从其他值中随机获得离群值的几率有多大?如果P值很小,则得出结论,异常值与其他值的偏差在统计上是显著的。

    你知道,谷歌是你的朋友

        6
  •  0
  •   Gregg Lind    16 年前

    关于你的具体问题 策划 修剪方法

    如果您真的关心一天价格的真最大值和真最大值,那么您必须将异常值作为异常值处理,并适当排除它们,可能使用之前提出的异常值测试之一(数据点比下一个点多x%,或最后n个点,或离日平均值超过5个标准差)。另一种方法是查看异常值之后发生的情况。如果它是一个异常值,那么它将有一个急剧上升,然后是急剧下降。

    然而,如果你关心整体趋势,绘制每日平均值、中位数、5%和95%的百分位数将很好地描绘历史。

    基于对问题的分析 . 如果你关心中位数或百分位数,它们可能是不相关的。