Eu tenho uma amostra ponderada, para a qual desejo calcular quantis. 1
Idealmente, onde os pesos são iguais (seja = 1 ou não), os resultados seriam consistentes com os de scipy.stats.scoreatpercentile()
e R's quantile(...,type=7)
.
Uma abordagem simples seria "multiplicar" a amostra usando os pesos fornecidos. Isso efetivamente fornece um ecdf localmente "plano" nas áreas de peso> 1, que intuitivamente parece a abordagem errada quando a amostra é realmente uma subamostra. Em particular, isso significa que uma amostra com pesos iguais a 1 possui quantis diferentes de uma amostra com pesos iguais a 2 ou 3. (Observe, no entanto, que o artigo mencionado em [1] parece usar essa abordagem).
http://en.wikipedia.org/wiki/Percentile#Weighted_percentile fornece uma formulação alternativa para o percentil ponderado. Não está claro nesta formulação se amostras adjacentes com valores idênticos devem primeiro ser combinadas e seus pesos somados e, em qualquer caso, seus resultados não parecem ser consistentes com o tipo padrão de R 7 quantile()
no caso não ponderado / igualmente ponderado. A página da Wikipedia sobre quantis não menciona o caso ponderado.
Existe uma generalização ponderada da função quantil "tipo 7" de R?
[usando Python, mas apenas procurando por um algoritmo, realmente, qualquer linguagem serve]
M
[1] Pesos são inteiros; os pesos são os dos buffers combinados nas operações "recolhimento" e "saída", conforme descrito em http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf . Essencialmente, a amostra ponderada é uma subamostragem da amostra completa não ponderada, com cada elemento x (i) na subamostra representando elementos de peso (i) na amostra completa.