Pregunta

Tengo dos dendrogramas que deseo comparar entre sí con el fin de conocer de qué manera "similar" que son. Pero no conozco ningún método para hacerlo (por no hablar de un código para ponerlo en práctica, por ejemplo, en I).

¿Alguna pista?

Actualizar (09/13/2014):

Desde hace esta pregunta, he escrito un paquete denominado R dendextend , para la visualización, manipulación y Comparación del dendrograma. Este paquete está en CRAN y viene con un detallada viñeta . Incluye funciones tales como cor_cophenetic, cor_bakers_gamma y Bk / Bk_plot. Así como una función tanglegram para comparar visualmente dos árboles.

¿Fue útil?

Solución

Al comparar dendrogramas no es exactamente lo mismo que la comparación de agrupamientos jerárquicos, debido a que el primero incluye las longitudes de las ramas, así como las divisiones, pero también creo que es un buen comienzo. Yo sugeriría que lea E. B. Fowlkes & C. L. Malvas (1983). "Un método para comparar dos agrupamientos jerárquicos". Revista de la Asociación Americana de Estadística 78 (383): 553-584 (enlace) .

Su enfoque se basa en el corte de los árboles en cada nivel k , para conseguir una medida Bk que compara las agrupaciones en k racimos, y a continuación, examinar el Bk vs k parcelas. La medida Bk se basa en mirar a pares de objetos y ver si están incluidos en el mismo grupo o no.

Estoy seguro de que se puede escribir código basado en este método, pero primero tendría que saber cómo los dendrogramas se representan en I.

Otros consejos

Como saben, Dendrogramas surgen de la agrupación jerárquica - así que lo que realmente está haciendo es: ¿Cómo puedo comparar los resultados de dos carreras de agrupamiento jerárquico. No hay métricas estándar que conozco, pero me estarían buscando en el número de grupos que se encuentran y la comparación de similitud entre las agrupaciones de miembros similares. Aquí es una buena visión general de la agrupación jerárquica que mi colega escribió en la agrupación de whisky escocés.

echar un vistazo a esta página :

También he pedido pregunta similar aquí

Parece que podemos utilizar cophenetic correlación para medir la similitud entre dos dendrogramas. Sin embargo, no parece haber ninguna función para este propósito en R actualmente.

Editar en 2014,9,18:  La función cophenetic en paquete stats es capaz de calcular la matriz de disimilitud cophenetic. y la correlación se puede calcular utilizando la función cor. @Tal como ha señalado la función as.dendrogram devolvió el árbol con diferente orden, lo que provocará resultados erróneos si calculamos la correlación en base a los resultados del dendrograma. Según lo demostrado en el ejemplo de la función función cor_cophenetic en paquete 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!

Si usted tiene acceso a la matriz de distancia subyacente que genera cada dendrograma (si es probable que haya generado los dendorograms en I), no se puede simplemente utilizar la correlación entre los valores correspondientes de las dos matrices? Sé que esto no se refiere a la letra de lo que pidieron, pero es una buena solución para el espíritu de lo que has pedido.

Tome un vistazo a esta página que tiene un montón de información sobre el software que se ocupa de árboles, incluyendo dendrogramas. Me di cuenta de varias herramientas que tienen que ver con la comparación árbol, aunque no he utilizado personalmente cualquiera de ellos todavía. Hay una serie de referencias citadas allí también.

Hay un rico cuerpo de literatura de métricas de distancia del árbol en la comunidad filogenética que parece haber sido descuidado desde la perspectiva de la informática. Ver dist.topo del paquete ape por dos métricas de distancia del árbol y varias citas (Penny y Hardy 1985, Kuhner y Felsenstein 1994) que teniendo en cuenta la similitud de las particiones de los árboles, y también el Robinson-Foulds métrica que tiene una aplicación R en el phangorn paquete "nofollow".

Uno de los problemas es que estos indicadores no tienen una escala fija, por lo que sólo son útiles en los casos de 1) Comparación de árbol o 2) comparación con algunos de línea de base generada, tal vez a través de pruebas de permutación similar a lo que ha hecho con Tal Baker Gamma en su fantástico paquete dendextend .

Si usted tiene hclust o dendrograma objetos generados a partir de la agrupación jerárquica R, utilizando as.phylo del paquete ape convertirá sus dendrogramas a los árboles filogenéticos para el uso en estas funciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top