2012-01-01 256 views
9

我试图使用python statlib模块计算得分percentile rankpercentntileofscore函数应该返回一个介于0和100之间的值,但它会定期生成超出此范围的数字。举个例子:百分位数计算

>> a = [0,1,2,3,4,5] 
>> percentileofscore(a, 0) 
108.33333333333333 

我已经试过scipy模块,并也推出自己具有相似的结果。

我误解了一些事情。这个功能?

编辑 - 更多的例子:

percentileofscore([23,23,23,25], 23) 
137.5 
percentileofscore([12,19,65,25], 12) 
112.5 
percentileofscore([112,109,605,25], 25) 
112.5 

看来,查询得分最低的百分引起该问题。一个错误可能?

+0

+1:有趣 – 2012-01-01 02:39:48

+0

有趣确实如此。出于好奇,你能否增加一些这样的例子? – 2012-01-01 02:45:16

+0

一个错误毫无疑问。很好的接收。 – 2012-01-01 06:41:46

回答

7

scipy.stats.percentileofscore似乎按预期方式工作:

In [2]: import scipy.stats as stats 

In [3]: stats.percentileofscore([0,1,2,3,4,5], 0) 
Out[3]: 16.666666666666664 
+0

在测试scipy时,我一定没有正确地检查过我的导入,谢谢你清除它。问题似乎只与statlib有关。 – monofonik 2012-01-01 03:21:00

+0

我不认为statlib是维护的,而在最初从statlib继承的代码中有一些错误修正和scipy.stats的改进,例如对于这种情况http://projects.scipy.org/scipy/ticket/560 – user333700 2012-01-02 05:11:56