原文鏈接(可關(guān)注公眾號微生態(tài)與微進(jìn)化索取示例數(shù)據(jù)):
聚類分析
在生態(tài)學(xué)研究當(dāng)中,有些環(huán)境中的對象是連續(xù)(或者離散)的,而有些對象是不連續(xù)的,聚類的目的是識(shí)別在環(huán)境中不連續(xù)的對象子集,從而探索隱藏在數(shù)據(jù)背后的屬性特征。聚類分析主要處理那些對象有足夠的相似性被歸于一組,并且確定組與組之間的差異或分離程度。聚類可以分為特征聚類(Vector Clustering)和圖聚類(Graph Clustering)。特征聚類是指根據(jù)對象的特征向量矩陣來計(jì)算距離或者相關(guān)性來實(shí)現(xiàn)聚類,例如各種層次聚類和非層次聚類。而圖聚類則針對的是復(fù)雜網(wǎng)絡(luò)數(shù)據(jù),有隨機(jī)游走、貪心策略、標(biāo)簽傳播等算法等。
根據(jù)對象歸屬方法,有以下兩種:
⑴硬劃分,也即將總體劃分為不同的部分,每個(gè)對象或者變量只能歸屬于某一組(身份信息為0或1)。
⑵模糊劃分,對象歸屬身份信息可以是連續(xù)的,也即身份信息可以是0到1中間的任意值。
聚類的結(jié)果可以輸出為無層級分組,也可以是具有嵌套結(jié)構(gòu)的層次聚類樹。非約束的聚類分析只是一種數(shù)據(jù)劃分,不是典型的統(tǒng)計(jì)方法,因此不必進(jìn)行統(tǒng)計(jì)檢驗(yàn),但是約束的聚類分析(多元回歸樹)需要進(jìn)行統(tǒng)計(jì)檢驗(yàn)。
層次聚類
層次聚類(hierarchical clustering)就是通過對數(shù)據(jù)集按照某種方法進(jìn)行層次分解,直到滿足某種條件為止。在R中最常用的為stats包中的hclust()函數(shù)。
⑴單連接聚合聚類
單連接聚合聚類(singlelinkage agglomerative clustering)也稱作最近鄰分類(nearestneighbour sorting),依據(jù)最短的成對距離或最大相似性來依次連接對象直到連接完畢,兩個(gè)組之間最近的兩個(gè)對象之間距離即為組的距離。此方法一般使用弦距離矩陣(歐氏距離)進(jìn)行分析,在hclust()函數(shù)中為"single"。
⑵完全連接聚合聚類
完全連接聚合聚類(completelinkage agglomerative clustering)也稱作最遠(yuǎn)鄰分類(furthestneighbour sorting),依據(jù)最遠(yuǎn)距離決定一個(gè)對象或者一個(gè)組是否與另一個(gè)組聚合,所有對象之間的距離必須完全計(jì)算然后進(jìn)行比較。単連接聚合聚類更容易體現(xiàn)數(shù)據(jù)的梯度,而完全連接聚合聚類分類組之間差異更加明顯。在在hclust()函數(shù)中為"complete"。
⑶平均聚合聚類
平均聚合聚類(averageagglomerative clustering)是一類基于對象之間平均相異性或者聚類簇形心(centroid)的進(jìn)行聚類的方法。一個(gè)對象加入一個(gè)組依據(jù)的是這個(gè)對象與這個(gè)組成員的平均距離。在hclust()函數(shù)中有等權(quán)重算術(shù)平均聚類"average"(UPGMA)、不等權(quán)重算術(shù)平均聚類"mcquitty"(WPGMA)、等權(quán)重形心聚類"centroid"(UPGMC)、不等權(quán)重形心聚類"median"(WPGMC)四種方法。在生態(tài)學(xué)中Bray-Curtis距離矩陣一般使用方法"average"進(jìn)行分析,其聚類樹結(jié)構(gòu)介于單連接和完全連接聚類之間。
⑷最小方差聚類
Ward最小方差聚類是一種基于最小二乘法線性模型準(zhǔn)則的聚類方法。分組的依據(jù)是使組內(nèi)距離平方和(方差)最小化,由于使用了距離的平方,常常使聚類樹基部過于膨脹,可取平方根再進(jìn)行可視化。在hclust()函數(shù)中有"ward.D"、"ward.D2"兩種方法。
聚類樹
聚類樹是聚類分析最常用的可視化方法。這里以微生物群落抽平后的otu table數(shù)據(jù)為例進(jìn)行分析,計(jì)算Bray-Curtis距離矩陣并進(jìn)行UPGMA聚類:
#讀取群落數(shù)據(jù)并計(jì)算Bray-Curtis距離矩陣
data=read.table(file="sample.subsample.otu_table.txt", header=T, check.names=FALSE)
rownames(data)=data[,1]
data=data[,-1]
library(vegan)
data=decostand(data, MARGIN=2, "total")
otu=t(data)
otu_dist=vegdist(otu, method="bray", diag=TRUE, upper=TRUE, p=2)
#進(jìn)行聚類分析并作圖
hclust=hclust(otu_dist, method="average")
plot(hclust)

其中縱坐標(biāo)為Bray-Curtis距離,越往樹的基部(上圖頂端)距離越大,樹枝節(jié)點(diǎn)對應(yīng)的縱坐標(biāo)值為兩個(gè)對象/聚類簇之間的距離/平均距離。
更多的展示方法:

聚類簇劃分與美化:


比較聚類
不同對象之間的關(guān)系可以通過聚類樹展現(xiàn)出來,通過聚類樹我們可以觀察哪些對象比較相似,哪些對象距離較遠(yuǎn),從而對所有對象的關(guān)系有一個(gè)整體的把握。然而,這時(shí)候我們并沒有獲得一個(gè)明顯的聚類簇劃分,也即不知道對象可以劃分為幾類、誰和誰歸為一類,以及這個(gè)聚類結(jié)果是不是合理,這可以通過比較聚類來實(shí)現(xiàn)。
