我正在使用ip_hex = hex(int('0x73FF0861', 16))
包在R中工作,尝试将dendextend
个对象与hclusts
进行比较。
我有两个从聚类中升起的对象:cop_cophenetic
和clusts
,我想比较它们之间的共生相关性。我有以下几个选项:
clusts1
我也可以尝试使用基础R
更直接的方法cor_cophenetic(as.phylo(clusts), as.phylo(clusts1))
[1] 0.1632751
cor_cophenetic(as.dendrogram(clusts), as.dendrogram(clusts1))
[1] 0.1632751
cor_cophenetic(clusts, clusts1)
[1] 0.689649
cor_cophenetic(as.phylo.hclust(clusts), as.phylo.hclust(clusts1))
[1] 0.1632751
首先,我不理解在cor(as.vector(cophenetic(clusts)), as.vector(cophenetic(clusts1)))
[1] 0.689649
个对象上调用cor_cophenetic
,在树形图上调用hclusts
或者phylos之间的区别。这里有正确的方法吗?
接下来,我尝试对cor_cophenetic
的标签进行随机化测试。
clusts1
虽然dendros上的共生在随机化方面有所不同(我得到了分布)。 per <- sample(length(clusts1$labels))
clusts1$labels <- clusts1$labels[per]
上的直接共同作用保持不变(0.689649) - 并且不会改变。为什么?
答案 0 :(得分:0)
使用共生相关时要记住的事情是两棵树的(共生)距离矩阵必须以相同的方式排序,以使检查具有可比性。因此,旋转树或更改其数据类型结构不应对值产生影响。你报道的是一个潜在的错误。但我无法重现它。这是一个给出正确结果的例子:
library(dendextend)
dend15 <- c(1:5) %>% dist %>% hclust(method = "average") %>% as.dendrogram %>% set("labels", as.character(labels(.)))
dend51 <- dend15 %>% set("labels", as.character(5:1)) %>% match_order_by_labels(dend15)
dend15_r <- rev(dend15)
tanglegram(dend15 ,dend15_r )
tanglegram(dend15 ,dend51 )
cor_cophenetic(dend15 ,dend15_r )
cor_cophenetic(dend15 ,dend51 )
cor_cophenetic(as.hclust(dend15),as.hclust(dend15_r) )
cor_cophenetic(as.hclust(dend15) ,as.hclust(dend51) )
输出:
>
> cor_cophenetic(dend15 ,dend15_r )
[1] 1
> cor_cophenetic(dend15 ,dend51 )
[1] 0.3125
>
> cor_cophenetic(as.hclust(dend15),as.hclust(dend15_r) )
[1] 1
> cor_cophenetic(as.hclust(dend15) ,as.hclust(dend51) )
[1] 0.3125
>
请创建一个小的自包含示例来重现此问题,并在此处发布:https://github.com/talgalili/dendextend/issues