【问题标题】:Understanding heatmap dendogram clustering in R了解 R 中的热图树状图聚类
【发布时间】:2013-03-01 13:13:46
【问题描述】:

我将不胜感激有关 R 的热图函数的树状图(Colv、Rowv)的任何信息材料。比如聚类是如何工作的(是欧几里得距离吗?)。您不必发布冗长的解释,我已经很高兴有一些关键字可以让我走上正轨,这样我就可以做一些在线研究。

这是帮助手册的摘录,这让我有点困惑。在这种情况下,“尊敬”是什么意思?它与重新排序有何不同?

如果 Rowv 或 Colv 是树状图,则它们被尊重(而不是 重新排序)。

【问题讨论】:

  • 这只是意味着您可以提供自己的树状图(在 Rowv 和/或 Colv 中传递),或者您可以让热图为您计算树状图。所以“尊重”只是意味着如果你提供自己的树状图,热图将“尊重”它们,即使用它们。

标签: r cluster-analysis heatmap


【解决方案1】:

要查看它如何准确处理 Rowv/Colv,您还可以使用 body(heatmap) 来显示其源代码。

【讨论】:

  • 谢谢,body 对我来说是一个新功能;)
【解决方案2】:

Rowv 和 Colv 控制是否应重新排序数据集的行和列,如果需要,如何重新排序。

它们的可能值是TRUE、NULL、FALSE、整数向量或树状图对象。

  • 在默认模式TRUE 下,heatmap.2 使用hclustfun 和distfun 参数进行聚类。这默认使用欧几里德距离度量来完成链接聚类。然后使用行/列方式对树状图重新排序。您可以通过为hclustfun 或distfun 指定不同的函数来控制它。例如,使用曼哈顿距离而不是欧几里得距离:

    heatmap.2(x,...,distfun=function (y) dist(y,method = "manhattan") )
    

    查看?dist 和?hclust。如果您想了解有关聚类的更多信息,可以从“距离度量”和“聚集方法”开始。

  • 如果Rowv/Colv 是NULL 或FALSE,则不进行重新排序或聚类,矩阵按原样绘制。

  • 如果Rowv/Colv 是一个数值向量,则按照TRUE 计算聚类,并使用提供给Rowv/Colv 的向量完成树状图的重新排序。

  • 如果Rowv/Colv 是一个树状图对象,那么这个树状图将用于对矩阵进行重新排序。例如,可以通过以下方式生成树状图对象:

    rowDistance = dist(x, method = "manhattan")
    rowCluster = hclust(rowDistance, method = "complete")
    rowDend = as.dendrogram(rowCluster)
    rowDend = reorder(rowDend, rowMeans(x))
    

    在曼哈顿距离上生成完整的聚类,按行方式排序。您现在可以将rowDend 传递给Rowv。

    heatmap.2(x,...,Rowv = rowDend)
    

    这可能很有用,例如,如果您想以不同的方式对行和列进行聚类,或者使用其他人给您的聚类,或者您想做一些仅通过指定 hclustfun 无法满足的时髦的事情和distfun。这就是“尊重树状图”的意思:它被用来代替 hclustfun 和 distfun 指定的内容。

【讨论】:

  • 感谢您的详尽解释!我发现 heatmap() 与 heatmap.2() 的行为有点令人困惑。在我看来,在 heatmap.2 Rowv=TRUE 是默认值,而在 heatmap() Rowv=NULL 是默认值。但是这两个默认选项都是基于欧几里德距离计算完整的链接聚类?
  • 是的。 heatmap 中的 Rowv=NULL 等效于 heatmap.2 中的 Rowv=TRUE。在这两种情况下,基于欧几里德距离的完整链接聚类是默认聚类,因为这是 Rs 默认聚类模式,独立于用于绘制结果的任何函数。
【解决方案3】:

来自手册:

distfun : 用于计算之间距离(​​相异度)的函数 行和列。默认为 dist。

hclustfun : 用于计算层次聚类的函数 Rowv 或 Colv 不是树状图。默认为 hclust。应该作为 参数 distfun 的结果并返回一个对象 as.dendrogram 可以应用。

dist() 默认为欧式距离,hclust() 默认为完整的链接方法。

【讨论】:

  • If either Rowv or Colv are dendrograms they are honored (and not reordered). Otherwise, dendrograms are computed as dd <- as.dendrogram(hclustfun(distfun(X))) where X is either x or t(x). 我还是一头雾水:当我没有设置Colv=NA和Rowv=NA的时候,是欧式距离还是全联动方式?因为如果我理解正确的话 as.dendrogram 会调用 hclustfun 和 distfun
  • 不是“或”是“和”!在 eclidean 距离矩阵上完成链接聚类。我建议您阅读一些关于层次聚类的内容。
  • 好的,谢谢,我会的!编辑:我在分层聚集聚类的正确轨道上吗?
猜你喜欢
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2011-10-06
  • 2013-12-19
  • 2013-07-29
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多