Domanda

Ho due dendrogrammi che desidero per confrontare tra di loro al fine di scoprire come "simile" che sono. Ma io non conosco nessun metodo per farlo (per non parlare di un codice per la sua attuazione, per esempio, in R).

Qualche pista?

Aggiorna (2014/09/13):

Dal momento che questa domanda, ho scritto un pacchetto R chiamato dendextend , per la visualizzazione, la manipolazione e confronto di dendrogramma. Questo pacchetto è in CRAN e viene fornito con un dettagliate vignette . Esso include funzioni quali cor_cophenetic, cor_bakers_gamma e Bk / Bk_plot. Così come una funzione tanglegram per confrontare visivamente due alberi.

È stato utile?

Soluzione

Confrontando dendrogrammi non è proprio la stessa confrontando clustering gerarchico, in quanto il primo comprende le lunghezze dei rami così come le spaccature, ma penso anche che è un buon inizio. Vorrei suggerire di leggere E. B. Fowlkes & C. L. Mallows (1983). "Un metodo per il confronto di due raggruppamenti gerarchici". Journal of the American Statistical Association 78 (383): 553-584 (link) .

Il loro approccio si basa sul taglio degli alberi ad ogni livello k , ottenendo una misura di Bk che mette a confronto i raggruppamenti in k cluster, e quindi esaminare il Bk vs k Locali. La misura Bk si basa su guardando coppie di oggetti e di vedere se rientrano nello stesso cluster o meno.

Sono sicuro che uno può scrivere il codice in base a questo metodo, ma prima ci sarebbe bisogno di sapere come le dendrogrammi sono rappresentati in R.

Altri suggerimenti

Come sapete, dendrogrammi nascono dal clustering gerarchico - così che cosa si sta realmente chiedendo è come posso confrontare i risultati di due piste di clustering gerarchico. Non ci sono metriche standard che conosco, ma mi sarebbe guardando il numero di cluster trovati e confrontando l'appartenenza somiglianza tra i cluster come. Qui è una buona panoramica di clustering gerarchico che il mio collega ha scritto su di clustering di scotch whisky.

dare un'occhiata a questa pagina :

Ho anche domanda simile chiesto qui

Sembra possiamo utilizzare la correlazione cophenetic per misurare la similarità tra due dendrogrammi. Ma ci sembra alcuna funzione per questo scopo in R attualmente.

Modifica al 2014,9,18:  La funzione cophenetic in pacchetto stats è in grado di calcolare la matrice dissomiglianza cophenetic. e la correlazione può essere calcolata utilizzando la funzione cor. come @Tal ha sottolineato la funzione as.dendrogram restituito l'albero con ordine diverso, che causerà risultati sbagliati se calcoliamo la correlazione in base ai risultati Dendrogram. Come mostrato nell'esempio della Funzione cor_cophenetic in pacchetto dendextend:

set.seed(23235)
ss <- sample(1:150, 10 )
hc1 <- iris[ss,-5] %>% dist %>% hclust("com")
hc2 <- iris[ss,-5] %>% dist %>% hclust("single")
dend1 <- as.dendrogram(hc1)
dend2 <- as.dendrogram(hc2)
# cutree(dend1)
cophenetic(hc1)
cophenetic(hc2)
# notice how the dist matrix for the dendrograms have different orders:
cophenetic(dend1)
cophenetic(dend2)
cor(cophenetic(hc1), cophenetic(hc2)) # 0.874
cor(cophenetic(dend1), cophenetic(dend2)) # 0.16
# the difference is becasue the order of the distance table in the case of
# stats:::cophenetic.dendrogram will change between dendrograms!

Se si ha accesso alla matrice distanza sottostante che generato ogni dendrogramma (probabilmente non se è stato generato il dendorograms in R), non potrebbe semplicemente utilizzare la correlazione tra i valori corrispondenti delle due matrici? So che questo non affronta la lettera di quello che hai chiesto, ma è una buona soluzione per lo spirito di quello che hai chiesto.

Date un'occhiata a questa pagina che ha un sacco di informazioni sul software che si occupa di alberi, tra cui dendrogrammi. Ho notato diversi strumenti che si occupano di confronto albero, anche se non ho ancora usato personalmente nessuno di essi. Ci sono una serie di riferimenti ivi citata anche.

C'è un corpo ricco di letteratura per le metriche albero a distanza nella comunità filogenesi che sembra essere stata trascurata dal punto di vista informatico. Vedere dist.topo del pacchetto ape per due metriche albero a distanza e diverse citazioni (Penny e Hardy 1985 Kuhner e Felsenstein 1994) che considerando la somiglianza delle partizioni di alberi, e anche il metrica "nofollow" Robinson-Foulds che ha un'implementazione R nella phangorn pacchetto .

Un problema è che questi parametri non hanno una scala fissa, quindi sono utili solo in casi di 1) Confronto albero o 2) rispetto ad alcuni basale generato, forse tramite test di permutazione simile a quello che ha fatto con Tal di Baker Gamma nel suo fantastico pacchetto dendextend .

Se avete hclust o dendrogramma oggetti generati da R clustering gerarchico, utilizzando as.phylo dal pacchetto ape permette di convertire i tuoi dendrogrammi per gli alberi filogenetici per l'uso in queste funzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top