大熊猫是否表现出错误的百分位数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大熊猫是否表现出错误的百分位数?相关的知识,希望对你有一定的参考价值。
我正在使用这个WNBA数据集here。我正在分析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
答案
有各种方法来估计分位数。 175.0 vs 176.5涉及两种不同的方法:
- 包括Q1(这给出了176.5)和
- 不包括Q1(给出175.0)。
估计的不同之处如下
#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⌋)
另一答案
这是一个统计问题。百分位数有很多定义。以下是为什么在计算第25百分位指数时加1的原因之一:
一个直观的答案是数字1到n的平均值不是n / 2而是(n + 1)/ 2。所以这给你一个提示,简单地使用p * n会产生稍微过小的值。
资源:
- Why add one to the number of observations when calculating percentiles?
- Why the plus one in the percentile formula p(n+1)?
另一答案
这是因为默认情况下describe()
进行线性插值。
所以,没有pandas
没有显示错误的百分位数
(它只是没有显示你想看到的百分位数)。
为了得到你所期望的,你可以在.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
有关更多选项,请参阅documentation。
请注意,作为@jpp said:
百分位数有很多定义
你可以看到这个answer too谈论numpy
和pandas
百分位数计算之间的差异。
以上是关于大熊猫是否表现出错误的百分位数?的主要内容,如果未能解决你的问题,请参考以下文章