在加权样本上定义分位数

机器算法验证 算法 分位数 加权抽样
2022-03-06 09:51:00

我有一个加权样本,我希望计算分位数。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) 元素。

1个回答

这是一种可能的方法:

假设您有一个有序样本,其权重分别为X1X2XnW1,W2,,Wn

定义所以

Sk=(k1)Wk+(N1)i=1k1Wi
S1=0Sn=(N1)i=1NWi

对于分位数的插值,求使得你的估计可能是pkSkSnpSk+1Sn

Xk+(Xk+1Xk)pSnSkSk+1Sk.

我想你会发现如果都相等,那么这会重现 R-7。还有其他方法也可以,但我怀疑它们不会将所有有序权重视为同等重要。Wi