溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

R語言如何實現(xiàn)一致性聚類

發(fā)布時間:2022-03-21 09:49:43 來源:億速云 閱讀:830 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下R語言如何實現(xiàn)一致性聚類的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

ConsensusClusterPlus 包對基因表達(dá)數(shù)據(jù)進(jìn)行一致性聚類

Consensus Clustering(一致性聚類)是一種無監(jiān)督聚類方法,是一種常見的癌癥亞型分類研究方法,可根據(jù)不同組學(xué)數(shù)據(jù)集將樣本區(qū)分成幾個亞型,從而發(fā)現(xiàn)新的疾病亞型或者對不同亞型進(jìn)行比較分析。這類文章一般會對基因表達(dá)量(芯片數(shù)據(jù)或者RNA-seq數(shù)據(jù))或甲基化等數(shù)據(jù)進(jìn)行聚類分析,選出最優(yōu)聚類數(shù);對聚出的類組進(jìn)行差異化表達(dá)分析得到DEGs,差異表達(dá)基因做GO、pathway,PPI等一系列分析,在分析一下與生存的關(guān)系、免疫細(xì)胞豐度的區(qū)別,等等。

Consensus Clustering 的基本原理假設(shè):從原數(shù)據(jù)集不同的子類中提取出的樣本構(gòu)成一個新的數(shù)據(jù)集,并且從同一個子類中有不同的樣本被提取出來,那么在新數(shù)據(jù)集上聚類分析之后的結(jié)果,無論是聚類的數(shù)目還是類內(nèi)樣本都應(yīng)該和原數(shù)據(jù)集相差不大。因此所得到的聚類相對于抽樣變異越穩(wěn)定,我們越可以相信這一樣的聚類代表了一個真實的子類結(jié)構(gòu)。重采樣的方法可以打亂原始數(shù)據(jù)集,這樣對每一次重采樣的樣本進(jìn)行聚類分析然后再綜合評估多次聚類分析的結(jié)果給出一致性(Consensus)的評估??偨Y(jié),一致聚類通過基于重采樣的方法來驗證聚類合理性,其主要目的是評估聚類的穩(wěn)定性,可用于確定最佳的聚類數(shù)目K。

相比其他聚類方法一致性聚類的優(yōu)勢:

不能提供“客觀的”分類數(shù)目的標(biāo)準(zhǔn)和分類邊界,例如Hierarchical Clustering。

需要預(yù)先給定一個分類的數(shù)目,且沒有統(tǒng)一的標(biāo)準(zhǔn)去比較不同分類數(shù)目下分類的結(jié)果,例如K-means Clustering。

聚類結(jié)果的合理性和可靠性無法驗證。

R實現(xiàn)一致性聚類

ConsensusClusterPlus則將Consensus Clustering在 R 中實現(xiàn)了。

#安裝包

if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("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")

常用參數(shù):

d

提供的需要聚類的數(shù)據(jù)矩陣,其中列是樣本,行是features,可以是基因表達(dá)矩陣。

maxK

聚類結(jié)果中分類的最大數(shù)目,必須是整數(shù)。

reps

重抽樣的次數(shù)

pItem

樣品的抽樣比例,如 pItem=0.8 表示采用重抽樣方案對樣本的80%抽樣,經(jīng)過多次采樣,找到穩(wěn)定可靠的亞組分類。

pFeature

Feature的抽樣比例

clusterAlg

使用的聚類算法,“hc”用于層次聚類,“pam”用于PAM(Partioning Around Medoids)算法,“km”用于K-Means算法,也可以自定義函數(shù)。


title

設(shè)置生成的文件的路徑

distance

計算距離的方法,有pearson、spearman、euclidean、binary、maximum、canberra、minkowski。

tmyPal

可以指定一致性矩陣使用的顏色,默認(rèn)使用白-藍(lán)色

seed

設(shè)置隨機種子。

plot

不設(shè)置時圖片結(jié)果僅輸出到屏幕,也可以設(shè)置輸出為'pdf', 'png', 'pngBMP' 。

writeTable

若為TRUE,則將一致性矩陣、ICL、log輸出到CSV文件

weightsItem

樣品抽樣時的權(quán)重

weightsFeature

Feature抽樣時的權(quán)重

verbose

若為TRUE,可輸出進(jìn)度信息在屏幕上

corUse

設(shè)置如何處理缺失值:

all.obs:假設(shè)不存在缺失數(shù)據(jù)——遇到缺失數(shù)據(jù)時將報錯

everything:遇到缺失數(shù)據(jù)時,相關(guān)系數(shù)的計算結(jié)果將被設(shè)為missing

complete.obs:行刪除

pairwise.complete.obs:成對刪除,pairwisedeletion

(2)calcICL函數(shù):
用法:

calcICL(res,title="untitled_consensus_cluster",plot=NULL,writeTable=FALSE)


參數(shù):

res

consensusClusterPlus的結(jié)果

title

設(shè)置生成的文件的路徑

plot

不設(shè)置時圖片結(jié)果僅輸出到屏幕,也可以設(shè)置輸出為'pdf', 'png', 'pngBMP' 。

writeTable

若為TRUE,則將一致性矩陣、ICL、log輸出到CSV文件

數(shù)據(jù)分析

首先收集用于聚類分析的數(shù)據(jù),比如 mRNA 表達(dá)微陣列或免疫組織化學(xué)染色強度的實驗結(jié)果數(shù)據(jù)。輸入數(shù)據(jù)的格式應(yīng)為矩陣。下面以 ALL 基因表達(dá)數(shù)據(jù)為例進(jìn)行操作。

##使用ALL示例數(shù)據(jù)library(ALL)data(ALL)d=exprs(ALL)d[1:5,1:5]  #共128個樣品,12625個探針數(shù)據(jù)
# 01005 01010 03002 04006 04007# 1000_at 7.597323 7.479445 7.567593 7.384684 7.905312# 1001_at 5.046194 4.932537 4.799294 4.922627 4.844565# 1002_f_at 3.900466 4.208155 3.886169 4.206798 3.416923# 1003_s_at 5.903856 6.169024 5.860459 6.116890 5.687997# 1004_at 5.925260 5.912780 5.893209 6.170245 5.615210
##對這個芯片表達(dá)數(shù)據(jù)進(jìn)行簡單的normalization,取在各個樣品差異很大的那些gene或者探針的數(shù)據(jù)來進(jìn)行聚類分析mads=apply(d,1,mad)   
#計算每個基因的標(biāo)準(zhǔn)差d=d[rev(order(mads))[1:5000],]
#sweep函數(shù)減去中位數(shù)進(jìn)行標(biāo)準(zhǔn)化d = sweep(d,1, apply(d,1,median,na.rm=T))#也可以對這個d矩陣用DESeq的normalization 進(jìn)行歸一化,取決于具體情況

聚類分析

title="F:/ConsensusClusterPlus"  #設(shè)置圖片輸出路徑results <- ConsensusClusterPlus(dataset, maxK = 6,
                                reps = 50, pItem = 0.8,
                                pFeature = 0.8,
                                clusterAlg = "hc",
                                seed=100,
                                distance = "pearson",
                                title = title,
                                plot = "png")
#結(jié)果將會輸出k從2-6各個情況下的分型情況,聚類的方法用的是 hc ,抽樣比例為0.8,最后輸出png圖#這里設(shè)置的maxK=6、reps=50,但是實際上需要更高的reps(如1000)和更高的maxK(如20)

結(jié)果展示與說明;

(1)k = 2, 3, 4, 5, 6 時的矩陣熱圖:矩陣的行和列表示的都是樣本,一致性矩陣的值按從0(不可能聚類在一起)到1(總是聚類在一起)用白色到深藍(lán)色表示,一致性矩陣按照一致性分類(熱圖上方的樹狀圖)來排列。樹狀圖和熱圖之間的長條即分出來的類別。注意第一張為圖例;


(2)一致性累積分布函數(shù)(CDF)圖:此圖展示了k取不同數(shù)值時的累積分布函數(shù),用于判斷當(dāng)k取何值時,CDF達(dá)到一個近似最大值,此時的聚類分析結(jié)果最可靠。即考慮CDF下降坡度小的k值。

(3)Delta Area Plot:此圖展示的是 k 和 k-1 相比CDF曲線下面積的相對變化。當(dāng)k=2時,因為沒有k=1,所以第一個點表示的是k=2時CDF曲線下總面積,而非面積的相對變化值。當(dāng)k=6時,曲線下面積僅小幅增長,故5為合適的k值。

分類樹及結(jié)果:

results[[2]][["consensusTree"]] 
# Call:# hclust(d = as.dist(1 - fm), method = finalLinkage)# # Cluster method   : average 
# Number of objects: 128 
results[[2]][["consensusClass"]][1:5] 
# 01005 01010 03002 04006 04007 
#     1     1     1     1     1

以上就是“R語言如何實現(xiàn)一致性聚類”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI