在Julia vs Python中使用分位数时出现意外结果



我刚从Julia开始,我正在尝试做一些简单的统计。

我正在使用StatsBase软件包,并尝试计算分位数。

using StatsBase
lst = 1:10
print(nquantile(lst, 4))

并获得

[1.0, 3.25, 5.5, 7.75, 10.0]

其中,我假设Q_1=3.25,Q_2=7.75

在python上运行类似的代码:

from statistics import quantiles
lst = [_ for _ in range(1, 11)]
print(quantiles(lst))

收益率:

[2.75, 5.5, 8.25]

其中Q_1=2.75和Q_3=8.25。

根据我对统计学的理解,蟒蛇的结果与实际的数学结果相对应。

所以,我猜测的是,Julia变体正在使用某种高斯分布来寻找分位数。如果是的话,有没有办法使其遵循均匀分布?

有许多分位数定义,Julia实现了Hyndman,R.J和Fan,Y.(1996(Sample Quantiles in Statistical Packages中的所有选项;,美国统计学家,第50卷,第4期,第361-365页

为了得到Python等价物做:

julia> quantile(1:10, (0:4)/4; alpha=0,beta=0)
5-element Vector{Float64}:
1.0
2.75
5.5
8.25
10.0

说明(见文档(:

help?> nquantile
(...)
Equivalent to quantile(x, [0:n]/n). 
(...)
help?> quantile
quantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)
(...)
By default (alpha = beta = 1), quantiles are computed via linear interpolation between the points ((k-1)/(n-1),
v[k]), for k = 1:n where n = length(itr). This corresponds to Definition 7 of Hyndman and Fan (1996), and is the  same as the R and NumPy default.
(...)
•  Def. 6: alpha=0, beta=0 (Excel PERCENTILE.EXC, Python default, Stata altdef)
(...)

最新更新