PCA和PCoA


講解很詳細:http://blog.genesino.com/2016/10/PCA/

PCA分析一般流程: 中心化(centering, 均值中心化,或者中位數中心化),定標(scale,如果數據沒有定標,則原始數據中方差大的變量對主成分的貢獻會很大。)

根據前面的描述,原始變量的協方差矩陣表示原始變量自身的方差(協方差矩陣的主對角線位置)和原始變量之間的相關程度(非主對角線位置)。如果從這些數據中篩選主成分,則要選擇方差大(主對角線值大),且與其它已選變量之間相關性最小的變量(非主對角線值很小)。如果這些原始變量之間毫不相關,則它們的協方差矩陣在除主對角線處外其它地方的值都為0,這種矩陣成為對角矩陣。

而做PCA分析就是產生一組新的變量,使得新變量的協方差矩陣為對角陣,滿足上面的要求。從而達到去冗余的目的。然后再選取方差大的變量,實現降維和去噪。

如果正向推導,這種組合可能會有很多種,一一計算會比較麻煩。那反過來看呢? 我們不去尋找這種組合,而是計算如何使原變量的協方差矩陣變為對角陣。

數學推導中謹記的兩個概念:

  1. 假設: 把未求解到的變量假設出來,用符號代替;這樣有助於思考和演算
  2. 逆向:如果正向推導求不出,不妨倒着來;盡量多的利用已有信息

前面提到,新變量(Ym,k)是原始變量(Xm,n)(原始變量的協方差矩陣為(Cn,n))的線性組合,那么假設我們找到了這么一個線性組合(命名為特征矩陣(Pn,k)),得到一組新變量Ym,k=Xm,nPn,k,並且新變量的協方差矩陣(Dk,k)為對角陣。那么這個特征矩陣(Pn,k)需要符合什么條件呢?

 

從矩陣運算可以看出,最終的特征矩陣(Pn,k)需要把原變量協方差矩陣(Cn,n)轉換為對角陣(因為新變量的協方差矩陣(Dk,k)為對角陣),並且對角元素從大到小排列(保證每個主成分的貢獻度依次降低)。

現在就把求解新變量的任務轉變為了求解原變量協方差矩陣的對角化問題了。在線性代數中,矩陣對角化的問題就是求解矩陣的特征值和特征向量的問題。

所以,只要求出原矩陣協方差的特征值和特征向量,將特征值按從大到小排序,得到相應特征向量,即P矩陣,就是新的變量。用R的promp包計算得到的就是該變量。

 

求出原限量的協方差特征矩陣,乘以原向量(標准化后) 得到新的向量,,,,即可用於作圖。

 

三文讀懂PCA和PCoA(一)

 

在微生物NGS測序領域的高分文章中,PCA(主成分分析)和PCoA(主坐標分析)會很常見。甚至在RNA分析領域,很多研究和文章也會依據基因的表達量作PCA和PCoA分析。

常見的PCA和PCoA分析以下圖的形式呈現:

國際空間站與噴氣推進實驗室依據種群多樣性進行的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),如下圖所示:

物種x和y在A, B, C三個樣本中的相對豐度

此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。

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%)。此時數據如下圖所示:

將k維空間數據投射到二維空間中

 

因降維處理,數據發生損失,樣本和樣本之間的距離代表樣本之間的物種豐度差異。

那么如何來選擇投影?這就是定義當中所提到的“使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上”。

2.PCoA的理解

a. 假如有2個實驗樣本,它們都有很多物種,那么我們可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了2個樣本的物種相對豐度的差異。這樣我們就可以畫一個一維坐標軸,將這2個樣本表示在一維軸線上,如下圖所示:

2個樣本在一維坐標系中呈現

 

此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。

b. 假如有3個實驗樣本,同樣可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了每2個樣本的物種相對豐度的差異。這樣我們就可以畫一個二維坐標軸(三點組成一個面),將這3個樣本表示在二維軸線上,如下圖所示:

3個樣本在二維坐標系中呈現

 

此時數據不發生偏移,樣本和樣本之間的距離代表樣本之間的物種豐度差異。

c. 以此類推,假如有n個實驗樣本,同樣可以用Bray-Curtis或UniFrac(或其他算法)計算每個樣本的物種組成差異度(用一個數值表示物種相對豐度),數值之間的差異就代表了每2個樣本的物種相對豐度的差異。這樣我們就可以畫一個n-1維坐標軸,將這n個樣本表示在n-1維空間中。但是n-1維空間無法在平面上表示(一維和二維除外,三維勉強可以),因此只能利用矩陣呈現,如下圖所示:

n個樣本的矩陣示意圖

若要將n-1維的數據在二維坐標系中呈現,需降維處理,即將n-1維的數據投影到二維空間當中,方法與思路同PCA類似。此時,2個坐標軸的貢獻率均小於100%,如下圖所示:

n個樣本在二維空間中呈現(只展示了3個樣本)

因降維處理,數據發生損失,樣本和樣本之間的距離代表樣本之間的物種豐度差異。

這個時候, 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;

2個物種PCA分析只有2個維度

 

b. 如果有3個樣本,但一共有100個物種,此時肯定首選PCoA。

3個樣本做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%,那其實這個物種會拉近各個樣本的距離)。

物種1在3個樣本中的豐度較高

 

那么如何選擇這些差異性的物種呢?通過統計假設檢驗(顯著性分析)就可以選出這些物種,如有需求,小編在后面幾篇文章中詳細介紹一些統計假設檢驗的方法。一般而言,很多老師會選擇做微生物16S測序,其實很多公司在測序報告當中都會有PCA和PCoA分析,而且也會有統計假設檢驗分析,所以將PCA或PCoA分析與統計假設檢驗相結合的話,分析效果會比較好。

3

PCA和PCoA都做分析

如今計算能力如此發達,做PCA和PCoA基本都是分分鍾的事情,不妨2個都可進行分析,這里不再贅述。(那之前說的這些還有什么用?古人雲:知其然,知其所以然)

講到這里,我們對PCA和PCoA的選用就有了一個基本的認識了。還剩最后一篇章,小編計划再介紹一下PCA和PCoA背后的算法就預備完結了。如果大家有有疑問或其他見解,歡迎留言討論~

 

關注下方公眾號可獲得更多精彩


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM