我正在使用这个WNBA数据集这里。我正在分析Height
变量,下面的表格显示了记录的每个高度值的频率、累积百分比和累积频率:
从表中我可以很容易地得出结论,第一个四分位数(第25个百分位数)不能大于175。
然而,当我使用Series.describe()
时,我被告知第25百分位数是176.5。为什么是这样?
wnba.Height.describe()
count 143.000000
mean 184.566434
std 8.685068
min 165.000000
25% 176.500000
50% 185.000000
75% 191.000000
max 206.000000
Name: Height, dtype: float64
发布于 2018-02-28 01:02:41
估计分位数的方法有多种。
175.0 vs 176.5涉及两种不同的方法:
估计值如下所示
#1
h = (N − 1)*p + 1 #p being 0.25 in your case
Est_Quantile = x⌊h⌋ + (h − ⌊h⌋)*(x⌊h⌋ + 1 − x⌊h⌋)
#2
h = (N + 1)*p
x⌊h⌋ + (h − ⌊h⌋)*(x⌊h⌋ + 1 − x⌊h⌋)
发布于 2018-02-28 01:03:28
这是一个统计问题。百分位数有很多定义。以下是在计算第25百分位数索引时添加1的原因:
一个直观的答案是,数字1到n的平均值不是n/2,而是(n+1)/2,这给了你一个提示,简单地使用p*n会产生稍微太小的值。
资源:
发布于 2018-02-28 01:08:58
这是因为在默认情况下,describe()
会进行线性插值。
因此,pandas
no 没有显示错误的百分位数。
(只是没有显示你想看到的百分位数)。
为了得到您期望的结果,您可以在.quantile()
系列文章中使用Height
,指定对'lower'
的内插:
df = pd.read_csv('../input/WNBA Stats.csv')
df.Height.quantile(0.25,interpolation='lower') #interpolation lower to get what you expect
有关更多选项,请参见文档。
注意,作为@jpp said
百分位数有很多定义。
例如,您可以看到这个回答也是讨论了numpy
和pandas
百分位数计算之间的差异。
https://stackoverflow.com/questions/49025162
复制