审稿人:这么简单吗!5行R语言代码就能做出聚类分析的热图?

文摘   2024-11-09 09:02   爱尔兰  

在数据分析和可视化中,热图(heatmap)是一个常见而强大的工具。热图常用于直观展示数据矩阵,通过颜色变化显示不同数值的大小。这种方法广泛应用于基因表达分析、代谢分析等领域,可以帮助我们快速识别数据中的模式。然而,热图不仅仅是一张“热力图”,结合聚类分析(Clustering Analysis)后,它可以进一步揭示数据间的结构性关联。在本文中,我们将一起了解热图和聚类分析的基本概念,并在R语言中实战操作,完成热图和聚类分析的可视化。

一、什么是热图?

热图是一种通过颜色梯度来显示数值大小的矩阵图表。每个单元格的颜色代表该位置数值的大小,颜色从浅到深反映数值从小到大的变化。热图在多维数据展示中尤其有用,便于研究人员快速获取各变量的整体分布趋势。在基因表达分析、气候数据等研究中,热图已成为展示多维度关系的核心工具。

二、什么是聚类分析?

聚类分析是一种无监督学习方法,旨在将数据集中的对象分为若干组,组内对象的相似性较高,而不同组间的差异较大。聚类分析能够在不依赖于标签的情况下,揭示数据间的内在结构,应用广泛,如数据挖掘、市场细分、生物信息学等。

常用的聚类方法

聚类方法多种多样,常见的有: 
层次聚类:构建层次结构,将样本逐步合并或拆分,形成树状图(树状图即聚类的树形图结构)。它分为凝聚层次聚类(由个体逐步合并)和分裂层次聚类(由整体逐渐分裂)。 
K均值聚类:将数据分为K个簇,使每个簇内的样本均方误差最小。K均值聚类对数据的形状和数量较为敏感。 
密度聚类(如DBSCAN):基于样本密度分组,能够发现任意形状的聚类,适用于非线性分布的聚类问题。

常用的距离度量

聚类分析依赖于样本间的距离测量,常见的距离度量包括: 
欧几里得距离:衡量点间的直线距离,适合处理数值型变量。 
曼哈顿距离:衡量各维度的绝对差值之和,适合离散数据或高维数据。 
相关性距离:基于相关系数的距离度量,在基因表达等高维数据分析中广泛应用。

三、为什么将热图和聚类分析结合使用?

将热图与聚类分析结合在同一张图片中,不仅可以展示数据的分布和大小,还能按相似性将数据进行重新排列。通过对行和列分别进行聚类分析,我们可以更直观地观察到变量或样本之间的相似性。结合的聚类树状图(dendrogram)提供了群体间关系的结构化信息,使得热图中的分布模式更具解释性。

四、R语言绘制热图及聚类分析:实操教程

接下来,我们将基于R语言内置的mtcars数据集,进行热图和聚类分析的绘制。mtcars数据集记录了汽车的各类性能指标,是学习多变量分析的经典数据集。我们将用pheatmap包来绘制热图和聚类树。

步骤 1:加载数据和所需包

在R中,使用mtcars数据集,并加载绘制热图的pheatmap包。确保已安装pheatmap,否则先安装。
# 加载pheatmap包
library(pheatmap)

# 查看mtcars数据集
data("mtcars")
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

步骤 2:计算相关性矩阵

我们首先计算mtcars数据集中变量的相关性矩阵。这里使用皮尔逊相关系数来衡量各变量的相似性。
# 计算相关性矩阵
cor_matrix <- cor(mtcars)

步骤 3:绘制热图并进行聚类分析

使用pheatmap函数绘制热图,同时对行和列进行聚类分析。聚类将基于样本的相似性,将相似的变量和样本排列在一起。
# 绘制热图,进行行和列的聚类分析
pheatmap(cor_matrix,
clustering_distance_rows = "euclidean",
clustering_distance_cols = "euclidean",
clustering_method = "complete",
display_numbers = TRUE,
color = colorRampPalette(c("blue", "white", "red"))(100))
在上述代码中: 
clustering_distance_rows 和 clustering_distance_cols 参数指定行和列的距离度量,这里使用欧几里得距离(“euclidean”)。 
clustering_method 指定了聚类方法,选择完全链接法(“complete”)。 
display_numbers = TRUE 允许在热图中显示具体数值。 
color 参数设置颜色梯度,从蓝到红反映数据相关性的高低。

步骤 4:个性化热图设置

通过自定义颜色、字体、图形边框等,可以使热图更加美观并适应实际需求。
# 个性化设置热图
pheatmap(cor_matrix,
clustering_distance_rows = "euclidean",
clustering_distance_cols = "euclidean",
clustering_method = "average",
display_numbers = TRUE,
color = colorRampPalette(c("navy", "white", "firebrick3"))(100),
fontsize = 10,
fontsize_row = 8,
fontsize_col = 8,
main = "mtcars Data Correlation Heatmap",
border_color = NA)

总结

结合R语言的pheatmap包,本文实现了数据集的热图和聚类分析的可视化展示。在实际应用中,热图和聚类分析的结合能有效揭示数据的分布和相似性,让复杂的数据结构更为清晰。希望这篇教程对您的数据分析和可视化工作有所帮助!
感谢关注,你的支持是我不懈的动力!

科研代码
专注R和Python的数据分析。
 最新文章