Tengo una muestra ponderada, para la cual deseo calcular cuantiles. 1
Idealmente, donde los pesos son iguales (ya sea = 1 o no), los resultados serían consistentes con los de scipy.stats.scoreatpercentile()
y R's quantile(...,type=7)
.
Un enfoque simple sería "multiplicar" la muestra usando los pesos dados. Eso efectivamente da un ecdf localmente "plano" en las áreas de peso> 1, que intuitivamente parece un enfoque incorrecto cuando la muestra es en realidad un submuestreo. En particular, significa que una muestra con pesos todos iguales a 1 tiene cuantiles diferentes que uno con pesos todos iguales a 2 o 3. (Tenga en cuenta, sin embargo, que el documento al que se hace referencia en [1] parece utilizar este enfoque).
http://en.wikipedia.org/wiki/Percentile#Weighted_percentile ofrece una formulación alternativa para el percentil ponderado. En esta formulación no está claro si las muestras adyacentes con valores idénticos deben combinarse primero y sumarse sus pesos, y en cualquier caso sus resultados no parecen ser consistentes con el tipo 7 predeterminado de R quantile()
en el caso no ponderado / igualmente ponderado. La página de wikipedia sobre cuantiles no menciona el caso ponderado en absoluto.
¿Existe una generalización ponderada de la función cuantil "tipo 7" de R?
[usando Python, pero solo buscando un algoritmo, realmente, así que cualquier lenguaje funcionará]
METRO
[1] Los pesos son enteros; los pesos son los de las memorias intermedias que se combinan en las operaciones de "colapso" y "salida" como se describe en http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf . Esencialmente, la muestra ponderada es un submuestreo de la muestra completa no ponderada, con cada elemento x (i) en la submuestra representando elementos de peso (i) en la muestra completa.