Как вы сравниваете «сходство» между двумя дендрограммами (в R)?

StackOverflow https://stackoverflow.com/questions/2218395

Вопрос

У меня есть две дендрограммы, которые я хочу сравнить друг с другом, чтобы выяснить, насколько они «похожи».Но я не знаю ни одного способа сделать это (не говоря уже о коде для его реализации, скажем, в R).

Есть какие-нибудь зацепки?

ОБНОВЛЯТЬ (2014-09-13):

Задав этот вопрос, я написал пакет R под названием Дендекстенд, для визуализации, манипулирования и сравнение дендрограммы.Этот пакет включен КРАН и поставляется с подробная виньетка.Он включает в себя такие функции, как cor_cophenetic, cor_bakers_gamma и Bk / Bk_plot.Также как и tanglegram функция для визуального сравнения двух деревьев.

Это было полезно?

Решение

Сравнение дендрограмм — это не совсем то же самое, что сравнение иерархических кластеров, поскольку первое включает в себя длину ветвей и разбиений, но я также думаю, что это хорошее начало.Я бы посоветовал вам прочитать книгу Э.Б.Фаулкс и К.Л.Мальвы (1983).«Метод сравнения двух иерархических кластеров».Журнал Американской статистической ассоциации 78 (383):553–584 (связь).

Их подход основан на вырубке деревьев на каждом уровне. к, получение меры Бк который сравнивает группировки в к кластеры, а затем исследуя Бк против к сюжеты.Мера Бк основан на рассмотрении пар объектов и определении того, попадают ли они в один кластер или нет.

Я уверен, что на основе этого метода можно написать код, но сначала нам нужно узнать, как дендрограммы представляются в R.

Другие советы

Как вы знаете, Дендрограммы возникают в результате иерархической кластеризации - поэтому вы на самом деле спрашиваете, как я могу сравнить результаты двух прогонов иерархической кластеризации.Мне не известны стандартные показатели, но я бы посмотрел на количество найденных кластеров и сравнил сходство членства между похожими кластерами. Здесь — это хороший обзор иерархической кластеризации, который мой коллега написал о кластеризации шотландского виски.

посмотри на эта страница:

мне тоже задали аналогичный вопрос здесь

Кажется, мы можем использовать кофенетическую корреляцию для измерения сходства между двумя дендрограммами.Но, похоже, в R в настоящее время нет функции для этой цели.

РЕДАКТИРОВАТЬ в 2014,9,18:А cophenetic функционировать в stats Пакет способен рассчитывать матрицу кофенетических несходств.и корреляцию можно рассчитать с помощью cor функция.как @Tal указал as.dendrogram Функция вернула дерево в другом порядке, что приведет к неверным результатам, если мы рассчитаем корреляцию на основе результатов дендрограммы.Как показано на примере функции cor_cophenetic функционировать в 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!

Если у вас есть доступ к базовой матрице расстояний, которая генерировала каждую дендрограмму (вероятно, у вас есть, если вы генерировали дендрограммы в R), не могли бы вы просто использовать корреляцию между соответствующими значениями двух матриц?Я знаю, что это не соответствует букве того, что вы спросили, но это хорошее решение сути того, что вы спросили.

Взгляни на этот страница, содержащая много информации о программном обеспечении, работающем с деревьями, включая дендрограммы.Я заметил несколько инструментов, которые занимаются сравнением деревьев, хотя лично я еще не использовал ни один из них.Там же есть ряд ссылок.

В филогенетическом сообществе существует богатая литература по метрикам расстояний между деревьями, которой, похоже, пренебрегают с точки зрения информатики.Видеть dist.topo принадлежащий ape пакет для двух метрик расстояния между деревьями и несколько цитат (Пенни и Харди 1985, Кунер и Фельзенштейн 1994), которые учитывают сходство разбиений дерева, а также Метрика Робинсона-Фолдса который имеет реализацию R в phangorn упаковка.

Одна из проблем заключается в том, что эти метрики не имеют фиксированного масштаба, поэтому они полезны только в случаях 1) сравнения деревьев или 2) сравнения с некоторым сгенерированным базовым уровнем, возможно, с помощью тесты на перестановку, аналогичные тому, что Таль сделал с Гаммой Бейкера в его фантастическом пакете dendextend.

Если у вас есть объекты hclust или дендрограммы, созданные из R иерархическая кластеризация с использованием as.phylo из ape пакет преобразует ваши дендрограммы в филогенетические деревья для использования в этих функциях.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top