我有一个加权样本,我希望为其计算分位数。1个
理想情况下,在权重相等的情况下(无论是否等于1),结果将与scipy.stats.scoreatpercentile()
和的结果一致quantile(...,type=7)
。
一种简单的方法是使用给定的权重“乘以”样本。这样可以有效地在权重> 1的区域中提供局部“平坦”的ecdf,这在样本实际上是次采样时在直觉上似乎是错误的方法。特别是,这意味着权重均等于1的样本与权重均等于2或3的样本具有不同的分位数。(但是,请注意,[1]中引用的论文确实使用了这种方法。)
http://en.wikipedia.org/wiki/Percentile#Weighted_percentile提供了加权百分比的另一种表示方式。在此公式中尚不清楚是否应首先合并具有相同值的相邻样本并对其权重求和,无论如何quantile()
,在未加权/相等加权的情况下,其结果似乎与R的默认类型7不一致。关于分位数的维基百科页面根本没有提到加权情况。
R的“类型7”分位数函数有加权概括吗?
[使用Python,但实际上只是在寻找一种算法,因此任何语言都可以使用]
中号
[1]权重是整数;权重是在http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf中描述的在“折叠”和“输出”操作中组合的缓冲区的权重。本质上,加权样本是整个未加权样本的子采样,子样本中的每个元素x(i)代表整个样本中的weight(i)元素。