从不会到不怕——层次聚类

文摘   2025-01-06 00:41   德国  

基本概念

层次聚类常与热图(Heat Map)相关联。在热图中:
  • 列(Columns)通常代表不同样本
  • 行(Rows)通常代表不同基因的测量值
  • 红色typically表示基因的高表达
  • 蓝色或紫色表示基因的低表达
层次聚类的主要作用是基于相似性对行和/或列进行排序,使数据中的相关性更容易被观察。

聚类过程示例

让我们通过一个具体案例来说明聚类过程(以4个基因、3个样本为例):

聚类步骤:

  1. 第一步: 计算与基因1最相似的基因
  • 比较基因1与基因2:表达模式不同
  • 比较基因1与基因3:表达模式相似
  • 比较基因1与基因4:表达模式相似,但不如基因3相似
  • 第二步: 对基因2进行相似性比较
    • 与其他基因进行比较
    • 发现与基因4最相似
  • 第三步: 合并最相似的基因为簇
    • 在本例中,基因1和基因3最相似
    • 形成第一个簇(Cluster 1)
  • 第四步: 重复过程
    • 将新形成的簇视为单个单位
    • 继续比较相似性
    • 最终形成完整的聚类树

    树状图(Dendrogram)

    树状图用于展示:
    • 聚类的相似性
    • 簇的形成顺序
    • 分支长度表示相似程度:
      • 最短分支 = 最相似
      • 最长分支 = 最不相似

    距离计算方法

    欧几里得距离(Euclidean Distance)

    最常用的距离计算方法,计算公式:
    # 欧几里得距离计算示例euclidean_distance <- function(gene1, gene2) {  sqrt(sum((gene1 - gene2)^2))}
    曼哈顿距离(Manhattan Distance)
    # 曼哈顿距离计算示例manhattan_distance <- function(gene1, gene2) {  sum(abs(gene1 - gene2))}
    簇间比较方法

    # 使用hclust进行层次聚类library(stats)
    # 创建示例数据data <- matrix(rnorm(20), nrow=4) # 4个基因,5个样本row.names(data) <- paste0("Gene", 1:4)colnames(data) <- paste0("Sample", 1:5)
    # 计算距离矩阵d <- dist(data)
    # 使用不同方法进行聚类hc_complete <- hclust(d, method="complete")hc_single <- hclust(d, method="single")hc_average <- hclust(d, method="average")
    # 绘制热图library(gplots)heatmap.2(data, Rowv=as.dendrogram(hc_complete), trace="none", col=colorRampPalette(c("blue", "white", "red"))(100))

    注意事项

    1. 距离度量方法的选择是任意的,没有严格的生物学或物理学原因要求使用某种特定方法

    2. 不同的聚类方法可能会产生略有不同的结果

    3. R语言中hclust函数默认使用完全连接法

    4. 选择适当的方法应基于数据特征和研究目的

    Dr Leo
    ENT医生的科研分享
     最新文章