Tengo varias distribuciones (10 distribuciones en la figura a continuación).
De hecho, estos son histogramas: hay 70 valores en el eje x que son los tamaños de algunas partículas en una solución y para cada valor de x el valor correspondiente de y es la proporción de partículas cuyo tamaño es alrededor del valor de x.
Me gustaría agrupar estas distribuciones. Actualmente uso un agrupamiento jerárquico con la distancia euclidiana, por ejemplo. No estoy satisfecho con la elección de la distancia. He probado la distancia teórica de la información, como Kullback-Leibler, pero hay muchos ceros en los datos y esto causa dificultades. ¿Tiene una propuesta de una distancia apropiada y / u otro método de agrupamiento?
fuente
Si sus datos son histogramas, es posible que desee buscar funciones de distancia apropiadas para eso, como la "distancia de intersección del histograma".
Existe una herramienta llamada ELKI que tiene una amplia variedad de algoritmos de agrupación (mucho más modernos que k-means y agrupación jerárquica) e incluso tiene una versión de distancia de intersección de histograma incluida, que puede usar en la mayoría de los algoritmos. Es posible que desee probar algunos de los algoritmos disponibles en él. De la trama que diste arriba, no me queda claro qué quieres hacer. Agrupe los histogramas individuales, ¿verdad? A juzgar por los 10 que mostraste arriba, puede que no haya grupos.
fuente
Es posible que desee utilizar alguna técnica de extracción de características para derivar descriptores para un k-means u otro tipo de agrupación.
Un enfoque básico sería ajustar una determinada distribución a sus histogramas y usar sus parámetros como descriptores. Por ejemplo, parece tener distribuciones bimodales, que puede describir con 2 medias y 2 desviaciones estándar.
Otra posibilidad es agrupar sobre los primeros dos o tres componentes principales de los recuentos de los histogramas.
Alternativamente, se pueden usar enfoques wavelets.
Esta página explica cómo hacerlo cuando se trata de picos extracelulares. Los datos son diferentes, pero la idea debería ser aplicable a su caso. También encontrará muchas referencias en la parte inferior.
http://www.scholarpedia.org/article/Spike_sorting
En R puede calcular los componentes principales de sus picos utilizando la función
princomp
oprcomp
. Aquí encontrarás un tutorial sobre PCA en R.Para wavelets puedes mirar el
wavelets
paquete.La agrupación de k-means se puede lograr usando la
kmeans
función.fuente