tengo que contar los cuantiles para un gran conjunto de datos.de manera incremental de contar cuantiles de gran conjunto de datos
Asumamos que podemos obtener los datos sólo a través de algunas partes (es decir, una fila de una matriz grande). Para contar el cuantil Q3 una necesidad de conseguir todas las partes de los datos y almacenarlo en algún lugar, a continuación, ordenar y contar el cuantil:
List<double> allData = new List<double>();
// This is only an example; the portions of data are not really rows of some matrix
foreach(var row in matrix)
{
allData.AddRange(row);
}
allData.Sort();
double p = 0.75 * allData.Count;
int idQ3 = (int)Math.Ceiling(p) - 1;
double Q3 = allData[idQ3];
me gustaría encontrar una manera de obtener el cuantil sin almacenar los datos en una variable intermedia. La mejor solución sería contar algunos parámetros de resultados intermedios para la primera fila y luego ajustarlos paso por paso para las siguientes filas.
Nota:
- Estos datos son muy grandes (ca 5000 elementos en cada fila)
- El Q3 se puede estimar, que no tiene que ser un valor exacto.
- que llamar las porciones de datos "filas", pero pueden tener diferentes leghts! Por lo general, no varía mucho (+/- cientos de muestras) ¡pero varía!
Esta pregunta es similar a “On-line” (iterator) algorithms for estimating statistical median, mode, skewness, kurtosis, pero necesito contar los cuantiles.
También hay pocas noticias en esta sección, es decir:
- An Efficient Algorithm for the Approximate Median Selection Problem
- Incremental quantile estimation for massive tracking
Antes de tratar de poner en práctica estos enfoques, me preguntaba si tal vez hay alguna otra manera, más rápido de contar los cuantiles 0.25/0.75?
desea buscar algoritmos en línea/streaaming para el cálculo de cuantiles.Gran parte de la literatura está motivada por la investigación de bases de datos. – Ron
[Ver este hilo] (http://stats.stackexchange.com/questions/7959/algorithm-to-dynamically-monitor-quantiles/70905) – Quartz