numpy.quantile 和 statistics.quantiles 计算不同。哪一个是真的?
numpy.quantile and statistics.quantiles are calculating different. which one is true?
所以,假设我们有一个这样的数组:4,6,9,10,2,25,12,6,9
然后我尝试用 numpy.quantile 和 statistics.quantile
计算分位数
import numpy as np
from statistics import quantiles
arr = np.array([4,6,9,10,2,25,12,6,9,])
np.quantile(arr, (0.25, 0.50, 0.75))
quantiles(arr)
当我用numpy计算结果时:
array([ 6., 9., 10.])
当我统计计算结果时:
[5.0, 9.0, 11.0]
那么哪个库计算正确?
内置的statistics.quantiles'
default method is “exclusive”, however the numpy.quantile
是包容性的。如果你写
quantiles(arr, method='inclusive')
你得到的答案与 numpy 的答案相同。您应该阅读文档以找出适合您需要的文档。
事实上,MATLAB 甚至 returns 第三个选项:[5.5 9.0 10.5]
你的问题很有道理:怎么可能?
让我们先回顾一下分位数的定义:
In statistics and probability quantiles are cut points dividing the
range of a probability distribution into continuous intervals with
equal probabilities (...). q-quantiles are values that partition a finite set of values into q subsets of (nearly) equal sizes.
From the introduction of Wikipedia.
问题大小不一 populations/groups。 (这里是 example (Wikipedia)。)您将不得不选择如何处理分数。问题是是否包括划分点。
显然,numpy
选择包括导致较高分位数向上舍入 (ceil
) 和较低分位数向下舍入 (floor
) 的点;而 statistics
决定不包括边界点; MATLAB 只是提供确切的边界——不一定是集合的一部分。
现在开始真正的问题:什么是正确的? 所有这些。
差异在更大 groups/populations 时可以忽略不计,这是典型的统计数据;)
所以,假设我们有一个这样的数组:4,6,9,10,2,25,12,6,9 然后我尝试用 numpy.quantile 和 statistics.quantile
计算分位数import numpy as np
from statistics import quantiles
arr = np.array([4,6,9,10,2,25,12,6,9,])
np.quantile(arr, (0.25, 0.50, 0.75))
quantiles(arr)
当我用numpy计算结果时:
array([ 6., 9., 10.])
当我统计计算结果时:
[5.0, 9.0, 11.0]
那么哪个库计算正确?
内置的statistics.quantiles'
default method is “exclusive”, however the numpy.quantile
是包容性的。如果你写
quantiles(arr, method='inclusive')
你得到的答案与 numpy 的答案相同。您应该阅读文档以找出适合您需要的文档。
事实上,MATLAB 甚至 returns 第三个选项:[5.5 9.0 10.5] 你的问题很有道理:怎么可能?
让我们先回顾一下分位数的定义:
In statistics and probability quantiles are cut points dividing the range of a probability distribution into continuous intervals with equal probabilities (...). q-quantiles are values that partition a finite set of values into q subsets of (nearly) equal sizes. From the introduction of Wikipedia.
问题大小不一 populations/groups。 (这里是 example (Wikipedia)。)您将不得不选择如何处理分数。问题是是否包括划分点。
显然,numpy
选择包括导致较高分位数向上舍入 (ceil
) 和较低分位数向下舍入 (floor
) 的点;而 statistics
决定不包括边界点; MATLAB 只是提供确切的边界——不一定是集合的一部分。
现在开始真正的问题:什么是正确的? 所有这些。 差异在更大 groups/populations 时可以忽略不计,这是典型的统计数据;)