考虑以下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
< p > < em > kind 参数表示结果分数的解释。 < / p >
< p > 现在,当我使用Excel的PERCENTRANK函数与相同的数据时,我得到0.3333。由于小于x = 0.3963的值有3个,因此这似乎是正确的。 < / p >
< p > 有人能解释一下为什么我得到不一致的结果吗? < / p >
In[6]
可能使用了kind='rank'
。我认为您没有在相同的参数下得到两个不同的结果。) - Sven Marnach0.8389, 0.5176, 0.1867, 0.1953, 0.4153, 0.6036, 0.2497, 0.5188, 0.4723, 0.3963
,其中0.8389在A1,0.3963在A10。然后我使用=PERCENTRANK(A1:A10,A10)
,返回值为0.3333。看起来Scipy使用的是(大于X的值的数量) / (总数)
,在这种情况下为3/10=0.3
,而Excel使用的是(大于X的值的数量) / (总数-1)
,在这种情况下为3/9=0.3333
。 - Jason Strimpel