为什么hclust和heat map.2的结果有所不同?使用相同的聚类函数?

时间:2016-05-02 18:28:51

标签: r cluster-analysis heatmap hclust

我试图更多地了解我的数据进行一些聚类分析。使用相同的数据,我首先使用此代码完成了一项工作:

# Dissimilarity matrix
df <-scale(m.sel)
d <- dist(df, method = "euclidean")
# Hierarchical clustering using Ward's method
res.hc <- hclust(d, method = "ward.D2")

我有两个明确的集群。很好。

然后我再次使用相同的数据和相同的设置做热图.2(我已经获得了遗传数据)。这是代码:

dist.method <- function(x) dist(x, method="euclidean")
hclust.method <- function(x) hclust(x, method="ward.D2")
heatmap.2(scale(m.sel),  dendrogram = "col", distfun = dist.method, hclustfun = hclust.method, trace = "none", col=bluered, margins = c(6, 9), cexCol = 1, density.info = "none", ColSideColors = colors)

问题在于我根本没有像使用hclust那样获得两个清晰的集群。任何人都可以指出我为什么会这样做?我找到的唯一类似的问题是这个Understanding heatmap dendogram clustering in R,但是关于两个执行热图的命令并且设置存在差异,但我的理解是我设置了相同的设置,所以我应该这样做期待相同?有什么东西真的很明显我不见了吗?

另外,我得到两个集群的唯一方法是改变热图.2,距离函数中的方法是&#34;曼哈顿&#34;然后,为了完成&#34;然而,有些样本仍然处于不同的群集中,而不是我只做了hclust。原因是什么?那我该相信什么呢?

对不起我不能把真实的数据显示出来,因为它有点保密,所以你需要相信我不会得到相同的结果:/

非常感谢任何帮助或启发!谢谢!

- 编辑 -

所以我尝试使用虹膜数据,虽然群集相似,但它们并不完全相同。这是hclust的代码:

d <- dist(scale(iris[, 1:4]), method="euclidean")
# Hierarchical clustering using Ward's method
res.hc <- hclust(d, method = "ward.D2" )
# Plot the obtained dendrogram
plot(res.hc, cex = 0.6, hang = -1)

这是热图的一个.2:

data(iris)
m.sel <- as.matrix(t(iris[,1:4]))
dist.method <- function(x) dist(x, method="euclidean")
hclust.method <- function(x) hclust(x, method="ward.D2")
heatmap.2(scale(m.sel),  dendrogram = "col", distfun = dist.method, hclustfun = hclust.method, trace = "none", col=bluered, margins = c(3, 10), cexCol = 0.5, density.info = "none")

我知道这不是有史以来最好的例子,在我的例子中,集群更加不同......

0 个答案:

没有答案