R hclust:多棵树的公共顺序

R hclust: common order for multiple trees

我正在使用 hclust 制作树。我在一个公共集上定义了几个距离。我想尽可能地找到每个距离的集合的公共顺序,而情节中没有任何交叉边缘。例如,在此示例中,我希望两棵树的左侧都有 1 到 5 片叶子。

x<-seq(1,10)
y<-c(1.3,2.4,3.6,4.9,5.2,6.9,7.9,8.7,9.6,10.1)
X<-hclust(dist(x))
Y<-hclust(dist(y))
par(mfrow=c(2,1))
plot(X)
plot(Y)

一般来说,是否有算法可以找到这个订单(如果存在的话)?或者,至少为每个接近其他距离的距离找到一个订单?我知道这可以通过使用顺序或排序的树状图来完成,但我认为这些树的信息量较少。

Plots as hclust

Plots as dendrograms

您可以使用 dendextend 库中的 sort 函数:

library(dendextend)

x<-seq(1,10)
y<-c(1.3,2.4,3.6,4.9,5.2,6.9,7.9,8.7,9.6,10.1)
X<-hclust(dist(x)) %>% as.dendrogram %>% sort %>% as.hclust
Y<-hclust(dist(y)) %>% as.dendrogram %>% sort %>% as.hclust
par(mfrow=c(2,1))
plot( X )
plot( Y )

该函数只是尝试按每片叶子的索引对绘图进行排序。