PCA和PCoA
三文讀懂PCA和PCoA(一)
在微生物NGS測序領域的高分文章中,PCA(主成分分析)和PCoA(主坐標分析)會很常見。甚至在RNA分析領域,很多研究和文章也會依據基因的表達量作PCA和PCoA分析。
常見的PCA和PCoA分析以下圖的形式呈現:
很明顯,我們可以通過分析坐標軸中樣本和樣本之間的距離直觀地看到2個樣本或2組樣本之間的菌群差異性。若2個樣本或2組樣本之間的直線距離較近,則表示這2個樣本或2組樣本的菌群差異性較小;相反,若2個樣本或2組樣本之間的直線距離較遠,則表示它們之間菌群差異性較大。所以,PCA和PCoA所呈現的結果,具有直觀性(直接看兩點之間的距離)和完整性(呈現所有樣本),且數據易於分析和解讀(大家都看得懂)。
那麽,PCA和PCoA是如何定義的?PCA和PCoA之間是否有區別?何時該選用PCA或何時該選用PCoA?PCA和PCoA背後的分析原理如何?相信這些問題是比較困擾讀者的。
PCA和PCoA的定義
PCA(Principal Components Analysis)即主成分分析,也稱主分量分析或主成分回歸分析法,首先利用線性變換,將數據變換到一個新的坐標系統中;然後再利用降維的思想,使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上。這種降維的思想首先減少數據集的維數,同時還保持數據集的對方差貢獻最大的特征,最終使數據直觀呈現在二維坐標系。
PCoA(Principal Co-ordinates Analysis)分析即主坐標分析,可呈現研究數據相似性或差異性的可視化坐標,是一種非約束性的數據降維分析方法,可用來研究樣本群落組成的相似性或相異性。它與PCA類似,通過一系列的特征值和特征向量進行排序後,選擇主要排在前幾位的特征值,找到距離矩陣中最主要的坐標,結果是數據矩陣的一個旋轉,它沒有改變樣本點之間的相互位置關系,只是改變了坐標系統。兩者的區別為PCA是基於樣本的相似系數矩陣(如歐式距離)來尋找主成分,而PCoA是基於距離矩陣(歐式距離以外的其他距離)來尋找主坐標。
好吧,定義比較抽象,我們還是無法看懂看透PCA和PCoA。不急,下面的文字很重要~~~
PCA和PCoA的區別
1.PCA的理解
a. 假如有3個實驗樣本,它們共有1個物種x,那麽我們其實可以用物種x的相對豐度來表示樣本和樣本之間的差異。這樣我們就可以畫一個一維坐標軸,將這3個樣本的物種x的豐度表示在一維軸線上,如下圖所示:
此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異(實際上樣本A和B間的距離即為A中的物種x的豐度與B中物種x的豐度的差值)。
b. 假如有3個實驗樣本,它們共有2個物種:x和y。那麽我們其實可以用物種x和物種y的相對豐度來在二維坐標系中定位樣本。A=(x1,y1), B=(x2,y2),C=(x3,y3),如下圖所示:
此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。
c. 假如有3個實驗樣本,它們共有k個物種: x, y, z…………k。那麽我們其實可以用物種x, y, z…………k的豐度來定位樣本A=(x1,y1,z1……………k1)。同理,樣本B與C也可以用這種形式表示。細心的同學可以發現,其實A=(x1,y1,z1……………k1)是一組向量,而且是k維向量(A=(x1)是一維向量,A=(x1,y1)是二維向量,A=(x1,y1,z1)是三維向量)。但是k維向量無法在二維坐標系(平面)中表示(一維和二維向量可以,如上a和b兩種情況)。此時我們要麽將K維向量作出一些取舍,如削去一些不重要的向量僅保留2個關鍵向量(削去一些不重要的物種僅保留2個關鍵物種);要麽將K維向量投射到二維坐標系中(降維),但是此時數據便會損失,例如下圖,我們將二維坐標系中的數據投射到一維坐標系中,實際數據會折扣掉一部分(A和B的直線距離為5,投射到x軸的一維距離為4,投射到y軸的一維距離為3。從第一維坐標軸上觀察A和B的距離只有4,從第二維坐標軸上觀察A和B的距離只有3。)。
因此將k維空間的數據投射到二維空間上(降維),就會產生數據損失,此時坐標軸的貢獻率就不再是100%,而是小於100%(而a和b兩種情況無需降維處理,因此貢獻率為100%)。此時數據如下圖所示:
因降維處理,數據發生損失,樣本和樣本之間的距離代表樣本之間的物種豐度差異。
那麽如何來選擇投影?這就是定義當中所提到的“使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上”。
2.PCoA的理解
a. 假如有2個實驗樣本,它們都有很多物種,那麽我們可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了2個樣本的物種相對豐度的差異。這樣我們就可以畫一個一維坐標軸,將這2個樣本表示在一維軸線上,如下圖所示:
此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。
b. 假如有3個實驗樣本,同樣可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了每2個樣本的物種相對豐度的差異。這樣我們就可以畫一個二維坐標軸(三點組成一個面),將這3個樣本表示在二維軸線上,如下圖所示:
此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。
c. 以此類推,假如有n個實驗樣本,同樣可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了每2個樣本的物種相對豐度的差異。這樣我們就可以畫一個n-1維坐標軸,將這n個樣本表示在n-1維空間中。但是n-1維空間無法在平面上表示(一維和二維除外,三維勉強可以),因此只能利用矩陣呈現,如下圖所示:
若要將n-1維的數據在二維坐標系中呈現,需降維處理,即將n-1維的數據投影到二維空間當中,方法與思路同PCA類似。此時,2個坐標軸的貢獻率均小於100%,如下圖所示:
因降維處理,數據發生損失,樣本和樣本之間的距離代表樣本之間的物種豐度差異。
這個時候, PCA和PCoA就好理解了。我們再回過頭看定義“PCA是基於樣本的相似系數矩陣(如歐式距離)來尋找主成分,而PCoA是基於距離矩陣(歐式距離以外的其他距離)來尋找主坐標”,其實淺顯地來理解,就是上面這麽回事。
我們知道了PCA和PCoA的定義,也理解了PCA和PCoA的區別,那麽它們該何時選用,以及背後的算法如何?欲知後事如何,且聽下回分解。
三文讀懂PCA和PCoA(二)
通過上一篇文章《三文讀懂PCA和PCoA(一)》的學習,我們對PCA和PCoA有了較為深刻的理解,我們了解到“PCA是基於樣本的相似系數矩陣(如歐式距離)來尋找主成分,而PCoA是基於距離矩陣(歐式距離以外的其他距離)來尋找主坐標”。
不過,我們知道了PCA和PCoA的定義只能加深對它們的認識,那麽又該何時使用PCA,何時使用PCoA,以及如何制作PCA和PCoA圖呢?這就是我們科研工作者比較關心的一個問題了(#就比如我們知道水稻和小麥都能吃,但是什麽季節吃水稻什麽季節吃小麥以及怎麽做米飯和饅頭才是老百姓最為關心的問題#)。
同樣的,這篇文章小編就來談談對這些問題的理解和感悟。(#咳,專業術語實在玩不來#)
1
根據樣本數和物種數判斷
通過《三文讀懂PCA和PCoA(一)》,我們知道PCA基於物種豐度矩陣來定義的,而PCoA基於樣本間的距離矩陣來定義的。這一點非常關鍵。
PCA基於物種豐度矩陣就意味著PCA分析的矩陣維度是就等於物種數目。換句話說,你要分析的樣本如果要做PCA分析,那麽一般來說有多少個物種就有多少個維度(2個物種就是在二維空間上分布,3個物種就是在三維空間上分布)。
同樣的道理,PCoA基於樣本間的距離矩陣就意味著PCoA分析的矩陣維度與樣本數目相關。如果你要分析的樣本做PCoA分析的話,那麽一般來說有n個樣本就至多有n-1個維度。比如3個樣本就是在二維空間上分布,4個樣本就是在三維空間上分布。如果把樣本理解成點的話,簡單地說就是三點一面,四點一空間。
另外,我們還知道無論是PCA還是PCoA,一般都需要降維處理(一般物種數目都超過3個,樣本數目都超過4個),而降維就會產生數據損失。多數情況下,我們在做降維處理的時候,期望維數越低越好,這樣我們就可以最大程度地保真原始數據。比如一維和二維數據一般不需要降維處理(直接呈現);再比如要想把三維坐標系的數據降維到一維坐標系上,我們首先要把三維空間的數據降維到二維空間上(此時損失一部分),再將二維空間的數據降維到一維空間上(再損失一部分)。
那這樣就好辦了。
如果樣本數目比較多,而物種數目比較少,那肯定首選PCA;如果樣本數目比較少,而物種數目比較多,那肯定首選PCoA。
舉兩個極端的例子:
a. 如果有100個樣本,但一共有2個物種,此時肯定首選PCA;
b. 如果有3個樣本,但一共有100個物種,此時肯定首選PCoA。
a這種情況如果選用PCA,2個物種就可在二維坐標系上分析,如果選用PCoA,100個樣本可能就需要在99維坐標系上分析,然後還需要再降維處理;同樣的道理,b這種情況如果選用PCoA,3個樣本就可以在二維坐標系上分析,如果選用PCA可能就需要在100維坐標系上分析。
那麽選用PCA和PCoA分析時,這個樣本數和物種數有沒有一個界限或者標準呢?很遺憾,小編也無法解答這個問題。或許存在這樣一個界限或者標準,但是小編更傾向於認為統計分析並不是死板的。像a和b這兩種情況畢竟都是少數,如果物種數和樣本數相當以致於難以抉擇時,不妨根據項目經驗做一些調整,或者兩種分析都做選擇一個合適的(怎麽看都感覺這是一句廢話)。靈活調整實驗策略對於科研工作者來說同樣重要(還是一句廢話。。。。)
2
對物種或樣本做出取舍
實際上,我們往往會遇到“100個樣本,100個物種”這種比較容易常見的情況。對於絕大多數學者而言,一般不會將每一個物種都研究透徹, 通常情況我們會選擇幾十個較為關鍵的物種或感興趣的物種進行後續的研究。同樣的,對於樣本,我們往往會設置3個以上的重復(視情況而定,有的需要5個重復以上),此時我們需要選擇重復性好的樣本進行後續研究。
因此,小編認為,在做PCA和PCoA分析之前,首先要對物種和樣本做一些簡單的取舍,選擇合適的樣本或物種進行分析準確度會比較好(比如某一個物種,在1個樣本出現,在其他99個樣本均未出現,那這個物種很有可能是一個汙染的物種,個人認為可以剔除),特別是那些之前研究認為關鍵的物種、豐度較高的物種或者有顯著性差異的物種,往往會有意想不到的效果(假設某一物種在100個樣本裏的豐度都是1%,那其實這個物種會拉近各個樣本的距離)。
那麽如何選擇這些差異性的物種呢?通過統計假設檢驗(顯著性分析)就可以選出這些物種,如有需求,小編在後面幾篇文章中詳細介紹一些統計假設檢驗的方法。一般而言,很多老師會選擇做微生物16S測序,其實很多公司在測序報告當中都會有PCA和PCoA分析,而且也會有統計假設檢驗分析,所以將PCA或PCoA分析與統計假設檢驗相結合的話,分析效果會比較好。
3
PCA和PCoA都做分析
如今計算能力如此發達,做PCA和PCoA基本都是分分鐘的事情,不妨2個都可進行分析,這裏不再贅述。(那之前說的這些還有什麽用?古人雲:知其然,知其所以然)
講到這裏,我們對PCA和PCoA的選用就有了一個基本的認識了。還剩最後一篇章,小編計劃再介紹一下PCA和PCoA背後的算法就預備完結了。如果大家有有疑問或其他見解,歡迎留言討論~
PCA和PCoA