我有两个树状图,我希望将它们相互比较,以找出它们的“相似性”。但我不知道有什么方法可以做到这一点(更不用说实现它的代码了,比如在 R 中)。

有线索吗?

更新 (2014-09-13):

自从问这个问题以来,我写了一个 R 包,名为 树状延伸, ,用于可视化、操作和 比较 树状图。此套餐已上线 克兰 并配有一个 详细的小插图. 。它包括以下功能 cor_cophenetic, cor_bakers_gammaBk / Bk_plot. 。以及ASA tanglegram 用于直观比较两棵树的函数。

有帮助吗?

解决方案

比较树状图是不太一样的层次比较聚类,因为前者包含分支以及劈叉的长度,但我也认为这是一个良好的开端。我建议你读E. B. Fowlkes&C. L.锦葵(1983)。 “一个用于比较两个层次聚类方法”。杂志美国统计协会78(383)的:553-584 (链接)

他们的方法是基于在每个级别切割树ķ,获得的测量值的 BK 该分组进行比较成ķ集群,并然后检查所述 BK VS ķ图。这项措施的 BK 是基于寻找对对象的,看它们是否属于同一群集或没有。

我相信,人们可以基于该方法编写代码,但首先我们需要知道的树状图如何在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中的dendorograms),不能你只需要使用两个矩阵的相应值之间的相关性的基本的距离矩阵?我知道这不会解决你问的信,但它是一个很好的解决你问的精神。

看看有很多有关软件与涉及此页树木,包括树状图。我注意到一些工具与树打交道比较,虽然我没有亲自使用任何他们呢。有许多参考文献中引用的,也有。

系统发育学界有大量关于树距离度量的文献,但从计算机科学的角度来看,这些文献似乎被忽视了。看 dist.topoape 两个树距离度量的包和一些引用(Penny 和 Hardy 1985,Kuhner 和 Felsenstein 1994),考虑了树分区的相似性,以及 罗宾逊-福兹度量 其中有一个 R 实现 phangorn 包裹。

一个问题是这些指标没有固定的比例,因此它们仅在 1) 树比较或 2) 与某些生成的基线比较的情况下有用,可能通过 排列测试类似于 Tal 对 Baker Gamma 所做的测试 在他出色的 denextend 包中。

如果您有从生成的 hclust 或树状图对象 R 层次聚类,使用 as.phylo 来自 ape 包会将您的树状图转换为系统发育树,以便在这些函数中使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top