Cluster analysis 如何计算两个密度图中两个个体之间或两种聚类方法之间的同素相似性?

Cluster analysis 如何计算两个密度图中两个个体之间或两种聚类方法之间的同素相似性?,cluster-analysis,dendrogram,dendextend,heatmaply,Cluster Analysis,Dendrogram,Dendextend,Heatmaply,我如何计算两棵树内(而不是两棵整棵树之间)个体的共生距离 我想计算两个树状图中每个个体位置的相似性/不相似性,并使用R包Dendestend和heatmaply以组合热图和树状图的行颜色显示结果。已聚集的两个观测值之间的共相距离定义为在这两个观测值首先合并成一个单独的簇。寻找一个有效的例子。要进行深入的讨论,我建议这样做。您可以看到R实现。已聚类的两个观测值之间的共线性距离定义为两个观测值首次合并为单个聚类时的组间差异。寻找一个有效的例子。要进行深入的讨论,我建议这样做。您可以看到R实现。感谢大

我如何计算两棵树内(而不是两棵整棵树之间)个体的共生距离


我想计算两个树状图中每个个体位置的相似性/不相似性,并使用R包Dendestend和heatmaply以组合热图和树状图的行颜色显示结果。

已聚集的两个观测值之间的共相距离定义为在这两个观测值首先合并成一个单独的簇。寻找一个有效的例子。要进行深入的讨论,我建议这样做。您可以看到
R
实现。

已聚类的两个观测值之间的共线性距离定义为两个观测值首次合并为单个聚类时的组间差异。寻找一个有效的例子。要进行深入的讨论,我建议这样做。您可以看到
R
实现。

感谢大家的帮助,基于vilisSO提供的链接和Grant的答案,我编写了以下代码,以计算基于完整数据和数据子样本的两棵树中的同伦距离之间的相关性。对于树状图中的每一片叶子,计算两棵树中的共生距离向量之间的相关性o:

基于完整数据和数据子样本,比较两棵树叶子之间的共生相似性 #1)生成随机数据以构建树 结实种子(2015-04-26)
dat感谢大家的帮助,基于vilisSO提供的链接和Grant的答案,我编写了以下代码,根据完整数据和数据的子样本计算两棵树中的共生距离之间的相关性。对于树状图中的每一片叶子,计算两棵树中的共生距离向量之间的相关性o:

基于完整数据和数据子样本,比较两棵树叶子之间的共生相似性 #1)生成随机数据以构建树 结实种子(2015-04-26)
dat cophenetic是树状图(tree)中两个项目(叶子)之间的距离。你可以看到树状图的距离矩阵,使用协元函数。这就是你要找的吗?(如果没有,我想你的问题可能需要更多的澄清,一个简单的例子也会有帮助:)Thx,基本上这就是我需要的。我只能找到比较两棵整棵树的例子,所以所有共根距离的平均值,而不是单一的共根距离。在我的例子中,我想比较一棵树中所有一对叶子与所有其他叶子的相关联的共价距离,因此树1:a-B,a-C,a-D,a-E…a-n在一棵树中,并将它们与树2:a-B,a-C,a-D,a-E相关联。这应该给我一个两棵树中一个叶子位置的相似性度量。Thx帮助我澄清。cophenetic是树状图(树)中两个项目(叶子)之间的距离。你可以看到树状图的距离矩阵,使用协元函数。这就是你要找的吗?(如果没有,我想你的问题可能需要更多的澄清,一个简单的例子也会有帮助:)Thx,基本上这就是我需要的。我只能找到比较两棵整棵树的例子,所以所有共根距离的平均值,而不是单一的共根距离。在我的例子中,我想比较一棵树中所有一对叶子与所有其他叶子的相关联的共价距离,因此树1:a-B,a-C,a-D,a-E…a-n在一棵树中,并将它们与树2:a-B,a-C,a-D,a-E相关联。这应该给我一个两棵树中一个叶子位置的相似性度量。谢谢你帮我澄清。对不起,我没有资格投票支持你的答案。谢谢,使用这些链接,我编写了代码来解决我的问题,我将把它作为答案。@niels zondervan没问题。很高兴为您提供帮助。对不起,我没有资格投票给您答案。谢谢,使用这些链接,我编写了代码来解决我的问题,我将把它作为答案。@niels zondervan没问题。很乐意帮忙。
## Compare cophenetic similarity between leaves in two trees build on full data and subsample of the data

# 1 ) Generate random data to build trees
set.seed(2015-04-26)
dat <- (matrix(rnorm(100), 10, 50)) # Dataframe with 50 columns
datSubSample <- dat[, sample(ncol(dat), 30)] #Dataframe with 30 columns sampled from the dataframe with 50
dat_dist1 <- dist(datSubSample)
dat_dist2 <- dist(dat)
hc1 <- hclust(dat_dist1)
hc2 <- hclust(ddat_dist2)

# 2) Build two dendrograms, one based on all data, second based a sample of the data (30 out of 50 columns)
dendrogram1 <- as.dendrogram(hc1)
dendrogram2 <- as.dendrogram(hc2)

# 3) For each leave in a tree get cophenetic distance matrix, 
# each column represent distance of that leave to all others in the same tree
cophDistanceMatrix1 <- as.data.frame(as.matrix(cophenetic(dendrogram1)))
cophDistanceMatrix2 <- as.data.frame(as.matrix(cophenetic(dendrogram2)))

# 4) Calculate correlation between cophenetic distance of a leave to all other leaves, between two trees
corPerLeave <- NULL # Vector to store correlations for each leave in two trees
for (leave in colnames(cophDistanceMatrix1)){
  cor <- cor(cophDistanceMatrix2[leave],cophDistanceMatrix1[leave])
  corPerLeave <- c(corPerLeave, unname(cor))
}

# 5) Convert cophenetic correlation to color to show in side bar of a heatmap
corPerLeave <-corPerLeave/max(corPerLeave) #Scale 0 to 1 correlation
byPal <- colorRampPalette(c('yellow','blue')) #blue yellow color palette, low correlatio = yellow
colCopheneticCor <- byPal(20)[as.numeric(cut(corPerLeave, breaks =20))]

# 6) Plot heatmap with dendrogram with side bar that shows cophenetic correlation for each leave 
row_dend  <- dendrogram2[enter image description here][1]
x  <- as.matrix(dat_dist)
heatmaply(x,colD = row_dend,row_side_colors=colCopheneticCor)