你如何比较“相似性”在两个树形图之间(在R中)?

我有两个树形图,我希望相互比较,以找出它们是如何“相似”。但我不知道有任何方法可以这样做(更不用说实现它的代码了,比方说,在R中)。 任何线索? 更新(2014-09-13): 自从提出这个问题以来,我编写了一个名为dendextend的R包,用于树形图的可视化,操作和比较。此软件包在CRAN上,附带详细的插图。它包括
cor_cophenetic
cor_bakers_gamma
Bk
/
Bk_plot
等功能。以及用于在视觉上比较两棵树的
tanglegram
功能。     
已邀请:
比较树形图与比较层次聚类并不完全相同,因为前者包括分支的长度以及分裂,但我也认为这是一个好的开始。我建议你阅读E. B. Fowlkes& C. L. Mallows(1983)。 “比较两个分层聚类的方法”。 Journal of the American Statistical Association 78(383):553-584(link)。 他们的方法是基于切割每个级别k的树,获得一个度量Bk,将分组比较为k个簇,然后检查Bk对k图。度量Bk基于查看对象对并查看它们是否属于同一群集。 我确信可以根据这种方法编写代码,但首先我们需要知道如何在R中表示树形图。     
如您所知,树形图来自层次聚类 - 所以您真正要问的是如何比较两个层次聚类运行的结果。我不知道有哪些标准指标,但我会查看找到的集群数量,并比较类似集群之间的成员资格相似性。以下是我的同事在聚集苏格兰威士忌时所写的层次聚类的概述。     
看看这个页面: 我在这里也有类似的问题 似乎我们可以使用共生相关来测量两个树状图之间的相似性。但目前在R中似乎没有用于此目的的功能。 编辑于2014,9,18:  
stats
包中的
cophenetic
函数能够计算共生相异矩阵。并且可以使用
cor
函数计算相关性。因为@Tal指出
as.dendrogram
函数返回了不同顺序的树,如果我们根据树形图结果计算相关性,将导致错误的结果。如
dendextend
包中的函数
cor_cophenetic
函数示例所示:
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中生成了树形图,则可能会这样做),您是否只能使用两个矩阵的相应值之间的相关性?我知道这并没有解决你所问的问题,但这是你所要求的精神的一个很好的解决方案。     
请查看此页面,其中包含有关处理树木的软件的大量信息,包括树形图。我注意到了几种处理树比较的工具,尽管我还没有亲自使用它们。此处还引用了许多参考文献。     
在系统发育学界有很多关于树距离度量的文献,似乎从计算机科学的角度来看是被忽视的。对于两个树距离度量和几个引用(Penny和Hardy 1985,Kuhner和Felsenstein,1994),考虑树分区的相似性,以及在
phangorn
包中具有R实现的Robinson-Foulds度量,参见
ape
包的
dist.topo
。 一个问题是这些指标没有固定的比例,因此它们仅在1)树比较或2)与某些生成的基线进行比较的情况下有用,可能通过类似于Tal在Baker的Gamma中所做的排列测试。他梦幻般的dendextend套餐。 如果你有从
R
层次聚类生成的hclust或树形图对象,使用
ape
包中的
as.phylo
会将你的树状图转换为系统发育树,以便在这些函数中使用。     

要回复问题请先登录注册