Distribuzioni a grappolo


10

Ho diverse distribuzioni (10 distribuzioni nella figura seguente). distribuzioni

In realtà si tratta di istogrammi: ci sono 70 valori sull'asse x che sono le dimensioni di alcune particelle in una soluzione e per ogni valore di x il valore corrispondente di y è la proporzione di particelle la cui dimensione è attorno al valore di x.

Vorrei raggruppare queste distribuzioni. Attualmente, ad esempio, utilizzo un cluster gerarchico con la distanza euclidea. Non sono soddisfatto della scelta della distanza. Ho provato la distanza teorica dell'informazione come Kullback-Leibler ma ci sono molti zeri nei dati e questo causa difficoltà. Hai una proposta di una distanza adeguata e / o un altro metodo di raggruppamento?

Risposte:


16

Vi capisco in modo tale che tutte le distribuzioni possono potenzialmente assumere gli stessi 70 valori discreti. Quindi sarà facile per te confrontare le curve cumulative delle distribuzioni (confrontare le curve cumulative è il modo generale di confrontare le distribuzioni). Sarà un confronto omnibus per le differenze di forma, posizione e diffusione.

Quindi, prepara i dati nel modulo come (A, B, ... ecc. Sono le distribuzioni)

Value CumProp_A CumProp_B ...
1       .01       .05
2       .12       .14
...     ...       ...
70      1.00      1.00

e calcolare una matrice di distanza tra le distribuzioni. Invia al clustering gerarchico (consiglierei il metodo di collegamento completo). Quale distanza? Bene, se pensi che due curve cumulative siano molto diverse se sono distanti solo per un valore ( b ), usa la distanza di Chebyshev. Se pensi che due curve cumulative siano molto diverse solo se una è stabilmente sopra l'altra lungo un ampio intervallo di valori ( c ), usa la distanza autocorrelativa. Nel caso in cui eventuali differenze locali tra le curve siano importanti ( a ), utilizzare la distanza di Manhattan.

inserisci qui la descrizione dell'immagine

PS La distanza autocorrelativa è solo un coefficiente non normalizzato di autocorrelazione delle differenze tra le curve cumulative X e Y:

i=2N(XY)i(XY)i1


Eccellente - molte grazie! Lo farò domani
Stéphane Laurent,

La distanza autocorrelativa è probabilmente negativa. È davvero la buona definizione?
Stéphane Laurent

Ho dimenticato di fare un'altra domanda: perché consiglieresti il ​​collegamento completo?
Stéphane Laurent,

È possibile impostare a zero termini di prodotto negativi, se presenti. Non insisto sul collegamento completo, piuttosto, metterei in guardia contro metodi "geometrici" come Ward o centroide perché le distanze non sono euclidee. Ho anche pensato che un metodo "dilatativo" come il collegamento completo sarà di tuo gradimento
ttnphns

4

Se i tuoi dati sono istogrammi, potresti voler esaminare le funzioni di distanza appropriate per quello come la "distanza di intersezione dell'istogramma".

Esiste uno strumento chiamato ELKI che ha una grande varietà di algoritmi di clustering (molto più moderni di k-medie e cluster gerarchici) e ha anche una versione della distanza di intersezione dell'istogramma inclusa, che è possibile utilizzare nella maggior parte degli algoritmi. Potresti voler provare alcuni degli algoritmi disponibili in esso. Dalla trama che hai dato sopra, non mi è chiaro cosa vuoi fare. Raggruppa i singoli istogrammi, giusto? A giudicare dai 10 che hai mostrato sopra, potrebbero non esserci cluster.


Grazie. Ma sto cercando uno strumento disponibile in R o SAS. Quindi dieci distribuzioni sopra sono solo un esempio, ho un sacco di serie di distribuzioni da raggruppare.
Stéphane Laurent,

2

È possibile che si desideri utilizzare alcune tecniche di estrazione delle funzionalità per derivare descrittori per un k-mean o altro tipo di clustering.

Un approccio di base sarebbe quello di adattare una certa distribuzione agli istogrammi e utilizzare i suoi parametri come descrittori. Ad esempio, sembra che tu abbia distribuzioni bimodali, che puoi descrivere con 2 medie e 2 deviazioni standard.

Un'altra possibilità è quella di raggruppare i primi due o tre componenti principali dei conteggi degli istogrammi.

In alternativa è possibile utilizzare approcci wavelet.

Questa pagina spiega come farlo quando si hanno a che fare con picchi extracellulari. I dati sono diversi, ma l'idea dovrebbe essere applicabile al tuo caso. Troverai anche molti riferimenti in fondo.

http://www.scholarpedia.org/article/Spike_sorting

In R puoi calcolare i componenti principali dei tuoi picchi usando la funzione princompo prcomp. Qui troverai un tutorial su PCA in R.

Per le wavelet puoi dare un'occhiata al waveletspacchetto.

k-significa che il clustering può essere realizzato usando la kmeansfunzione.


Grazie, darò un'occhiata alla tua proposta ogni volta che sarà possibile.
Stéphane Laurent,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.