【发布时间】:2016-05-30 09:20:12
【问题描述】:
在阅读a related question in StackOverflow的答案时,我看到了matplotlib中使用的代码to compute the wiskers positions and detect outliers:
# get high extreme
iq = q3 - q1
hi_val = q3 + whis * iq
wisk_hi = np.compress(d <= hi_val, d)
if len(wisk_hi) == 0 or np.max(wisk_hi) < q3:
wisk_hi = q3
else:
wisk_hi = max(wisk_hi)
现在,else 部分非常有意义 - 根据 Tukey boxplots 的规范,我们找到了上四分位数 1.5 IQR 内的最高基准。事实上,这就是max(wish_hi) - 低于 Q3+1.5*IQR 的最大数据条目。
但是or 部分......我不明白。 if len(wisk_hi) == 0 转换为...
if we find no elements below the `hi_val` ...
这个条件如何适用? Q3是通过中位数拆分数据,然后取上半部分的中位数,然后在上面加上1.5*IQR - 怎么可能没有数据lower strong> 比这个值?
如果这是关于一个空数据集,那么or 的第二部分也没有意义(因为没有数据,Q3 或 IQR 也没有意义)。
可能遗漏了一些明显的东西 - 帮助?
【问题讨论】:
标签: python matplotlib boxplot iqr tukey