python - 四分位数间距应该如何在 Python 中计算?

标签 python statistics median percentile wolframalpha

我有一个数字列表 [1, 2, 3, 4, 5, 6, 7] 我想要一个函数来返回这个数字列表的四分位数范围。四分位数间距是上四分位数和下四分位数之间的差值。我尝试使用 NumPy 函数和 Wolfram Alpha 来计算四分位数范围。我发现所有答案,从我的手册答案到 NumPy 答案,再到 Wolfram Alpha,都是不同的。我不知道这是为什么。

我在Python中的尝试如下:

>>> a = numpy.array([1, 2, 3, 4, 5, 6, 7])
>>> numpy.percentile(a, 25)
2.5
>>> numpy.percentile(a, 75)
5.5
>>> numpy.percentile(a, 75) - numpy.percentile(a, 25) # IQR
3.0

我在 Wolfram Alpha 中的尝试如下:

因此,我发现 NumPy 和 Wolfram Alpha 返回的值对于我认为的第一个四分位数、第三个四分位数和四分位数范围并不一致。为什么是这样?我应该在 Python 中做什么才能正确计算四分位数间距?

据我所知,[1, 2, 3, 4, 5, 6, 7] 的四分位数范围应该如下:

median(5, 6, 7) - median(1, 2, 3) = 4.

最佳答案

numpy 的 1.9 版具有一个方便的“插值”参数,可帮助您达到 4。

a = numpy.array([1, 2, 3, 4, 5, 6, 7])
numpy.percentile(a, 75, interpolation='higher') - numpy.percentile(a, 25, interpolation='lower')

关于python - 四分位数间距应该如何在 Python 中计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472330/

相关文章:

python - 随着我写的帖子越来越多,鹈鹕花费的时间越来越长……它也在重新制作旧帖子吗?

带有数千个逗号和空格的 python f-string 整数

r - 如何解决r中的未知变量?

R 如何在数据框中获取行的中位数

python - Django 休息框架中的异步

statistics - 如何根据分数标准化评论

csv - Gnuplot 统计数据无法按预期工作 : max value not right

python,在中位数附近找到置信区间

java - 如何在通用类型的数组中找到三个点(未排序)的中位数?

python - 如何在 django 命令中实现应用程序命名空间?