Python SciPy 统计 percentilofscore

标签 python numpy scipy percentile

考虑以下 Python 代码:

In [1]: import numpy as np
In [2]: import scipy.stats as stats
In [3]: ar = np.array([0.8389, 0.5176, 0.1867, 0.1953, 0.4153, 0.6036, 0.2497, 0.5188, 0.4723, 0.3963])
In [4]: x = ar[-1]
In [5]: stats.percentileofscore(ar, x, kind='strict')
Out[5]: 30.0
In [6]: stats.percentileofscore(ar, x, kind='rank')
Out[6]: 40.0
In [7]: stats.percentileofscore(ar, x, kind='weak')
Out[7]: 40.0
In [8]: stats.percentileofscore(ar, x, kind='mean')
Out[8]: 35.0

kind 参数表示对结果分数的解释。

现在,当我对相同数据使用 Excel 的 PERCENTRANK 函数时,我得到 0.3333。这似乎是正确的,因为有 3 个值小于 x=0.3963。

有人可以解释为什么我得到不一致的结果吗?

最佳答案

当我在 scipy.stats 中重写这个函数时,我发现了很多不同的定义,其中一些包含在内。

基本示例是当我想根据分数对学生进行排名时。在这种情况下,分数包括所有学生,percentileofscore 给出所有学生中的排名。主要区别在于如何处理领带。

Excel 似乎使用了相对于现有量表对学生进行排名的方式,例如历史 GRE 量表上的分数排名是多少。如果分数不在现有列表中,我不知道 excel 是否会删除一个条目。

统计中的一个类似问题是分位数的“绘图位置”。我在互联网上找不到很好的引用资料。这是一个通用公式 http://amsglossary.allenpress.com/glossary/search?id=plotting-position1 维基百科只有一小段:http://en.wikipedia.org/wiki/Q-Q_plot#Plotting_positions

文献中有大量 b 的不同选择(甚至是第二个参数 a 的选择)的案例,这些案例对应于不同分布的不同近似值。有几个在 scipy.stats.mstats 中实现。

我认为这不是哪个对的问题。就是,你想用它做什么?您的问题或领域的通用定义是什么?

关于Python SciPy 统计 percentilofscore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138552/

相关文章:

python - 从二进制序列到时间序列频率

Python 列表理解不适用于 itertools.groupby 解码

python numpy `np.take` 与二维数组

Python 最小二乘法拟合数据

python - R 用户的 Numpy?

python - Scipy odeint 非负解

python - 如何从Python中的嵌套for循环创建数据框?

Python/Numpy : problems with type conversion in vectorize and item

python - 使用 scipy.sparse.diags 的 Scipy 三对角矩阵

Python - csv writer 按列写入,而不是行