【问题标题】:Python Seaborn - How are outliers determined in boxplotsPython Seaborn - 如何在箱线图中确定异常值
【发布时间】:2020-12-17 07:57:11
【问题描述】:

我想知道 Seaborn 使用什么算法来确定箱线图分布中的“异常值”。

在他们的网站seaborn.boxplot 他们简单的状态:

该框显示了数据集的四分位数,而胡须延伸 显示分布的其余部分,除了点 使用一种方法确定为“异常值”,该方法是 四分位间距。

我真的很想知道他们使用什么方法。我从数据框中创建了箱线图,我似乎有很多“异常值”。

谢谢

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

    通过测试,seaborn 使用whis=1.5 作为默认值。

    whis 被定义为

    IQR 超过低四分位数和高四分位数的比例以扩展绘图 胡须。

    对于正态分布,interquartile range 包含 50% 的总体,1.5 * IQR 包含大约 99%。

    【讨论】:

      【解决方案2】:

      你可以这样计算:

      Q1 = df.quartile(0.25)
      Q3 = df.quartile(0.75)
          
      IQR = Q3 - Q1
      

      如果小于就是异常值:

      Q1 - 1.5 * IQR
      

      或者如果大于:

      Q3 + 1.5 * IQR
      

      【讨论】:

        【解决方案3】:

        如果您在链接的页面上进一步阅读(或 ctrl-f 表示“异常值”),您将看到:

        whis : float, optional
            Proportion of the IQR past the low and high quartiles to extend the plot whiskers.
            Points outside this range will be identified as outliers.
        

        【讨论】:

        • 这不是说每个分布都会有异常值吗?不是我的所有人都这样做
        • 没有。为什么会这样?
        • 规则是 Tukey 定义的,正如 here 所解释的那样。
        • 对于正态分布,1.5xIQR 的标准晶须范围覆盖了 99.3% 的分布(参见 @mwaskon 的维基百科链接中的图 5)。但是当然,如​​果你有足够的数据,你最终会得到异常值。这就是你的想法,@jut199?
        猜你喜欢
        • 2018-07-02
        • 2019-05-21
        • 2020-08-27
        • 2017-03-21
        • 2023-03-12
        • 1970-01-01
        • 2020-08-21
        • 1970-01-01
        • 2023-04-07
        相关资源
        最近更新 更多