Ho un campione ponderato, per il quale desidero calcolare i quantili. 1
Idealmente, dove i pesi sono uguali (se = 1 o meno), i risultati sarebbero coerenti con quelle scipy.stats.scoreatpercentile()
e R quantile(...,type=7)
.
Un approccio semplice sarebbe quello di "moltiplicare" il campione usando i pesi indicati. Ciò fornisce effettivamente un ecdf localmente "piatto" nelle aree di peso> 1, che sembra intuitivamente l'approccio sbagliato quando il campione è in realtà un sottocampionamento. In particolare, significa che un campione con pesi tutti uguali a 1 ha quantili diversi rispetto a uno con pesi tutti uguali a 2, o 3. (Notare, tuttavia, che l'articolo a cui si fa riferimento in [1] sembra usare questo approccio.)
http://en.wikipedia.org/wiki/Percentile#Weighted_percentile fornisce una formulazione alternativa per percentile ponderato. Non è chiaro in questa formulazione se i campioni adiacenti con valori identici debbano prima essere combinati e i loro pesi sommati, e in ogni caso i risultati non sembrano coerenti con il tipo predefinito 7 di R quantile()
nel caso non ponderato / equamente ponderato. La pagina di Wikipedia sui quantili non menziona affatto il caso ponderato.
Esiste una generalizzazione ponderata della funzione quantile di "tipo 7" di R?
[usando Python, ma sto solo cercando un algoritmo, davvero, quindi qualsiasi lingua lo farà]
M
[1] I pesi sono numeri interi; i pesi sono quelli dei buffer combinati nelle operazioni "collapse" e "output" come descritto in http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf . Essenzialmente il campione ponderato è un sottocampionamento dell'intero campione non ponderato, con ciascun elemento x (i) nel sottocampione che rappresenta gli elementi peso (i) nell'intero campione.