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