基于R语言的样本聚类-1


1. 概述

1.1 聚类和分类

有人会觉得聚类就是分类,而其实在严格意义上,聚类与分类并不是一回事,两者有着很大的差异。

分类是按照已定的程序模式和标准进行判断划分,如男人女人,在这里,你可以理解为这是分类/分组数据(注意了,不同的数据类型有不同的检验方法哟)。再比如,我们直接规定把数据的平均值作为中心轴,那么我们可以把这一组数据分为两个组别,即高于平均和等于平均的两个组,这也是分类。顺便扩展一下,我们后期会讲一期单基因GESA分析,用到的分组原理大概就是这个呢。因此,分类是按照固有或者某个标准将数据进行分组

而聚类则分析,事先我们并不知道具体的划分标准,要靠算法进行判断数据之间的相似性,把相似的数据放在一起,也就是说聚类最关键的工作是:探索和挖掘数据中的潜在差异和联系

在聚类的结论出来之前,我完全不知道每一类有什么特点,一定要根据聚类的结果通过人的经验来分析,看看聚成的这一类大概有什么特点。

1.2 聚类的方法

关于聚类的各种算法,推荐知乎的一篇文章点我学习,下例图片来源于知乎

image-20210703122657356

2 聚类在R语言中的实现

2.1 包的安装

这里,我们首先用到两个包,第一个是WGCNA,第二个是openxlsx,加载它们:

# Load the WGCNA package
library(openxlsx) # 导入Excel数据
library(WGCNA) # 画聚类图

如果还没有安装这两个包,安装方法请移步我的另一篇博文用R语言如何画一张漂亮的热图

2.2 数据读入

先上数据格式,见下图:

image-20210703151850922

再上代码:

dat <- read.xlsx("filename.xlsx")

将上述矩阵转置并转化为数据框

datExpr0 = as.data.frame(t(dat[,]))

转置之后数据格式如下图,行名是样本名,列名是基因名:

image-20210703153427860

画图

如下就可以画图啦

sampleTree = hclust(dist(datExpr0), method = "average") # 选择计算中心距方法
sizeGrWindow(16,9) # 设置画图框的大小
par(mar = c(4,4,4,4)) # 设置边距,根据实际情况选择
plot(sampleTree, 
     main = "Filemane",#图名字
     sub="", # 标题名字
     xlab="", # X轴名字
     cex.lab = 1.5, # X轴Y轴名字大小
     cex.axis = 1.5, #Y轴刻度大小大小
     cex.main = 1.5) #标题大小
dev.off() # 关闭画图装置

上述可以画的是聚类树,效果图如下:

image-20210703154332418

下一期我们做样本间的各种相关图,期待与您下次再见~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


文章作者: chaoyuny
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chaoyuny !
  目录