我有一个数字列表[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 中的尝试如下:
- “第一个四分位数 1、2、3、4、5、6、7”:2.25 http://www.wolframalpha.com/input/?i=first+quartile+1%2C+2%2C+3%2C+4%2C+5%2C+6%2C+7
- “第三个四分位数 1、2、3、4、5、6、7”:5.75 http://www.wolframalpha.com/input/?i=third+quartile+1%2C+2%2C+3%2C+4%2C+5%2C+6%2C+7
- (评论:5.75 - 2.25 = 3.5)
- “四分位数间距 1、2、3、4、5、6、7”:~3.5 https://www.wolframalpha.com/input/?i=interquartile+range+1%2C+2%2C+3%2C+4%2C+5%2C+6%2C+7
因此,我发现 NumPy 和 Wolfram Alpha 返回的值(我认为的第一四分位数、第三四分位数和四分位数范围)不一致。为什么是这样?我应该在 Python 中做什么才能正确计算四分位数范围?
据我所知,四分位数范围[1, 2, 3, 4, 5, 6, 7]
应该是以下内容:
median(5, 6, 7) - median(1, 2, 3) = 4.