2022-11-08 ConsensusClusterPlus 包进行一致性聚类

Consensus Clustering 是一种可用于鉴定数据集(比如 microarray 基因表达)中的簇集 (clusters) 成员及其数量的算法。说人话就是一致性聚类通常被用于确定最佳的聚类数目K。一致聚类通过基于重采样的方法来验证聚类合理性,其主要目的是评估聚类的稳定性。
Consensus Clustering 的基本原理假设:从原数据集不同的子类中提取出的样本构成一个新的数据集,并且从同一个子类中有不同的样本被提取出来,那么在新数据集上聚类分析之后的结果,无论是聚类的数目还是类内样本都应该和原数据集相差不大。因此所得到的聚类相对于抽样变异越稳定,我们越可以相信这一样的聚类代表了一个真实的子类结构。重采样的方法可以打乱原始数据集,这样对每一次重采样的样本进行聚类分析然后再综合评估多次聚类分析的结果给出一致性(Consensus)的评估。

先来看看ConsensusClusterPlus 包中的两个主函数:

(1)ConsensusClusterPlus函数:
用法:
ConsensusClusterPlus(
d=NULL, maxK = 3, reps=10, pItem=0.8, pFeature=1, clusterAlg='hc',title='untitled_consensus_cluster',
innerLinkage='average', finalLinkage='average', distance='pearson', ml=NULL,

tmyPal=NULL,seed=NULL,plot=NULL,writeTable=FALSE,weightsItem=NULL,weightsFeature=NULL,verbose=F,corUse='everything')

(2)calcICL函数:
用法:
calcICL(res,title='untitled_consensus_cluster',plot=NULL,writeTable=FALSE)
library(ALL)
data(ALL)
d=exprs(ALL)
dim(d)
#[1] 12625   128
d[1:5,1:5]  #共128个样品,12625个探针数据

mads=apply(d,1,mad)   #计算每个基因的标准差
d=d[rev(order(mads))[1:5000],]

#sweep函数减去中位数进行标准化
d = sweep(d,1, apply(d,1,median,na.rm=T))

library(ConsensusClusterPlus)
results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1)
#这里设置的maxK=6、reps=50,但是实际上需要更高的reps(如1000)和更高的maxK(如20)

生成的图片如下
(1)图例:矩阵热图的颜色图例



(2)k = 2, 3, 4, 5, 6 时的矩阵热图:矩阵的行和列表示的都是样本,一致性矩阵的值按从0(不可能聚类在一起)到1(总是聚类在一起)用白色到深蓝色表示,一致性矩阵按照一致性分类(热图上方的树状图)来排列。树状图和热图之间的长条即分出来的类别。







(3)一致性累积分布函数(CDF)图:此图展示了k取不同数值时的累积分布函数,用于判断当k取何值时,CDF达到一个近似最大值,此时的聚类分析结果最可靠。即考虑CDF下降坡度小的k值。



(4)Delta Area Plot:此图展示的是 k 和 k-1 相比CDF曲线下面积的相对变化。当k=2时,因为没有k=1,所以第一个点表示的是k=2时CDF曲线下总面积,而非面积的相对变化值。当k=6时,曲线下面积仅小幅增长,故5为合适的k值。

查看结果

ConsensusClusterPlus输出的是一个列表,其中列表对应于来自Kth集群的结果,例如,results[[2]]是k=2的结果。

View(results)
#输出K=2时的一致性矩阵,consensusMatrix输出一致矩阵。
results[[2]][['consensusMatrix']][1:5,1:5]
# hclust选项
results[[2]][['consensusTree']]
#consensusClass可以看到各个样品被分到了哪个类别里面去
results[[2]][['consensusClass']][1:5]

计算聚类一致性 (cluster-consensus) 和样品一致性 (item-consensus)

icl <- calcICL(results)

结果:
(1)Tracking Plot:此图下方的黑色条纹表示样品,展示的是样品在k取不同的值时,归属的分类情况,不同颜色的色块代表不同的分类。取不同k值前后经常改变颜色分类的样品代表其分类不稳定。若分类不稳定的样本太多,则说明该k值下的分类不稳定。



2)Cluster-Consensus Plot:此图展示的是不同k值下,每个分类的cluster-consensus value(该簇中成员pairwise consensus values的均值)。该值越高(低)代表稳定性越高(低)。可用于判断同一k值下以及不同k值之间cluster-consensus value的高低。



(3)item-Consensus Plot:纵坐标代表Item-consensus values。k值不同时,每个样本都会有一个对应不同簇的item-consensus values。竖条代表每一个样本,竖条的高度代表该样本的总item-consensus values。每个样本的上方都有一个小叉叉,小叉叉的颜色代表该样本被分到了哪一簇。从这张图,可以看到每个样本的分类是否足够“纯净”,从而帮助决定k值,例如当k=6时,样本的分类变得没有那么纯净,说明k=5才是合适的。

## 返回了具有两个元素的list,分别查看一下
dim(icl[['clusterConsensus']])
# [1] 20 3
icl[["clusterConsensus"]]
      k cluster clusterConsensus
 [1,] 2       1        0.8447769
 [2,] 2       2        0.9752694
 [3,] 3       1        0.6613792
 [4,] 3       2        0.7499191
 [5,] 3       3        1.0000000
 [6,] 4       1        0.8486466
 [7,] 4       2        0.8856553
 [8,] 4       3        0.7037400
 [9,] 4       4        1.0000000
[10,] 5       1        0.9144969
[11,] 5       2        0.8730016
[12,] 5       3        0.5858013
[13,] 5       4        0.7977151
[14,] 5       5        1.0000000
[15,] 6       1        0.8567648
[16,] 6       2        0.8528658
[17,] 6       3        0.7009412
[18,] 6       4        0.7327485
[19,] 6       5        0.7977151
[20,] 6       6        1.0000000
dim(icl[["itemConsensus"]])
[1] 2560    4
icl[['itemConsensus']][1:5,]
  k cluster  item itemConsensus
1 2       1 01007     0.1073574
2 2       1 01003     0.1138066
3 2       1 02020     0.1170829
4 2       1 04018     0.1162691
5 2       1 09002     0.1019760

参考:R语言|ConsensusClusterPlus 包进行一致性聚类 (360doc.com)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容