migrado de math.stackexchange .
Estoy procesando un largo flujo de enteros y estoy considerando rastrear algunos momentos para poder calcular aproximadamente varios percentiles para el flujo sin almacenar muchos datos. ¿Cuál es la forma más sencilla de calcular percentiles desde unos momentos? ¿Existe un mejor enfoque que implique solo almacenar una pequeña cantidad de datos?
algorithms
mathematical-statistics
moments
jonderry
fuente
fuente
Respuestas:
No declaras esto explícitamente, pero a partir de tu descripción del problema, parece probable que buscas un conjunto de cuantiles de alto sesgo (por ejemplo, percentiles 50, 90, 95 y 99).
Si ese es el caso, he tenido mucho éxito con el método descrito en "Cálculo efectivo de cuantiles sesgados sobre flujos de datos" por Cormode et al. Es un algoritmo rápido que requiere poca memoria y que es fácil de implementar.
El método se basa en un algoritmo anterior de Greenwald y Khanna que mantiene una pequeña muestra del flujo de entrada junto con los límites superior e inferior en el rango de los valores de la muestra. Requiere más espacio que una colección de pocos momentos, pero será mucho mejor para describir con precisión la interesante región de cola de la distribución.
fuente
Hay un algoritmo más reciente y mucho más simple para esto que proporciona muy buenas estimaciones de los cuantiles extremos.
Ver https://github.com/tdunning/t-digest
fuente