【R分享|實戰】普魯克分析 (Procrustes Analysis) : 評估物種與環境/功能的關係

2022-01-14 科白君的土壤世界

 不求做的最好,但求做的更好。」   --科白君今天與大家分享一種分析方法,與Mantel test非常相似,常用於評估物種與環境或功能的關聯度,被稱為普魯克分析Procrustes Analysis),也稱為普氏分析。為什麼分享呢?因為當我們只聚焦於兩個數據集一致性時,普氏分析似乎更為直觀,略勝一籌。簡要介紹該分析方法的原理適用範圍R語言實現過程、提取相應結果進行繪圖

普魯克分析(Procrustes analysis)的簡介

普魯克分析(Procrustes analysis)是一種用於形狀分布的分析方法。數學上:通過不斷迭代,尋找標準形狀(canonical shape),並利用最小二乘法尋找每個樣本形狀到這個標準形狀的仿射變化方式。普氏分析可基於不同多元數據集的排序構型(≥2組),通過平移、旋轉、縮放等轉換方式,實現最大疊合(maximal superimposition),用於各數據集間的對比分析。排序方法可選擇PCA、PCoA、NMDS等。換句話說,普氏分析的作用可以看作是一種對原始數據的預處理,目的是為了獲取更好的局部變化模型作為後續模型學習的基礎。如下圖所示,每一個人臉特徵點可以用一種單獨的顏色表示;經過歸一化變化,人臉的結構越來越明顯,即臉部特徵簇的位置越來越接近他們的平均位置;經過一系列迭代,尺度和旋轉的歸一化操作,這些特徵簇變得更加緊湊,它們的分布越來越能表達人臉表情的變化。(剔除剛性部分、保留柔性部分)

對於微生態領域,該方法通常用於分析自相同樣本不同數據集之間是否存在相似性關係。例如物種與環境物種與功能基因等等,可以分析兩個數據集之間的關聯度/是否存在潛在的一致性
下面我們將利用R語言vegan包procrustesprotest兩個函數來實現普氏分析,並利用ggplot2包完成對應分析的繪圖。

1) 加載R包和自帶數據集(varespecvarechem),並對數據進行相應的距離轉換

# Procrustes Anaylsis
# 評估物種群落結構與環境因子間是否具存在顯著的相關性(兩個數據集)
# 加載R包
library(vegan)
# 加載數據
data(varespec)
head(varespec)
data(varechem)
head(varechem)
# 需要先對數據計算其樣本間的距離
# 一般物種群落使用bray-curtis距離,而環境因子使用歐式距離
spe.dist <- vegdist(varespec) # 默認Bray-Curtis
env.dist <- vegdist(scale(varechem), "euclid")


查看數據格式,需要注意:無論分析何種數據,兩個數據表格的樣品均要一一對應;數據的格式如下,就是普通的寬格式的表格,第一行為物種或環境因子名,第一列為樣本名

2)由於兩個數據集的屬性不同,需要分別對兩個數據集進行降維分析,並提取前兩軸坐標(具有數據集代表性的線性組合)進行比較。

# 在進行普魯克分析前,需要先對兩個數據進行降為分析,這裡使用的是NMDS
# 也可以使用PCA或者PCoA,然後進行普魯克分析,計算顯著性
mds.s <- monoMDS(spe.dist)
mds.e <- monoMDS(env.dist)


3) 進行普氏分析,用到procrustes函數,我們先大概了解一下該函數。


4) 通過對該函數中各參數的了解,可知X為目標矩陣也就是降維後的環境(功能基因等)坐,Y為降維後的物種數據的坐標,因為後續普氏分析中旋轉和縮放操作是針對Y,將Y匹配給X。

另外,當symmetric=FALSE時,處於"非對稱"模式,X和Y的分配值調換後,普氏分析的偏差平方和(M2)也會隨之改變。而當symmetric=TRUE時,從而給出更合適比例的對稱統計。「對稱」模式下,X和Y的分配值調換後,普氏分析的偏差平方和(M2)不會發生改變,但注意旋轉仍將是非對稱的。

# 以對稱模式為例進行普氏分析(symmetric = TRUE)
pro.s.e <- procrustes(mds.s,mds.e, symmetric = TRUE)
summary(pro.s.e)


可得知:通過最小二乘求得組坐標之間的偏差平方和(M2統計量)為0.65

5) 進一步通過各樣本之間的殘差來判斷物種群落與環境因子的一致性。

plot(pro.s.e, kind = 2)
residuals(pro.s.e)


從圖1來看,如果樣本中物種與環境一致性(相似性)越近,則對應的殘差越小,反之物種與環境的相似性越遠,則殘差越大(三條輔助線對應的位置分別為殘差25%、50%和75%);圖2為對應的樣本殘差值。

6) 事後檢驗,對偏差平方和M2統計量進行置換999次的普氏檢驗。由於置換999次檢驗會存在細微的誤差,我們設定了種子數,避免重複存在差異。

# 普氏分析中M2統計量的顯著性檢驗
set.seed(1)
pro.s.e_t <- protest(mds.s,mds.e, permutations = 999)
pro.s.e_t


提取對應的結果:

# 偏差平方和(M2統計量)
pro.s.e_t$ss
# 對應p值結果
pro.s.e_t$signif

999次置換檢驗後顯示p<0.001,結果是非常顯著的

基於ggplot2包ggplot函數將其結果繪製成圖,並利用export包導出圖片。首先提取降維後的數據軸1和2的坐標,並且提取轉換的坐標;然後進行繪製。

library(ggplot2)
# 獲得x和y軸的坐標及旋轉過的坐標
Pro_Y <- cbind(data.frame(pro.s.e$Yrot), data.frame(pro.s.e$X))
Pro_X <- data.frame(pro.s.e$rotation)

# 繪圖
ggplot(data=Pro_Y) +
  geom_segment(aes(x = X1, y = X2,
               xend = (X1 + MDS1)/2, yend = (X2 + MDS2)/2),
               # geom_segment 繪製兩點間的直線
               arrow = arrow(length = unit(0, 'cm')),
               color = "#9BBB59", size = 1) +
  geom_segment(aes(x = (X1 + MDS1)/2, y = (X2 + MDS2)/2,
               xend = MDS1, yend = MDS2),
               arrow = arrow(length = unit(0.2, 'cm')),
               color = "#957DB1", size = 1) +
  geom_point(aes(X1, X2), color = "#9BBB59", size = 3, shape = 16) +
  geom_point(aes(MDS1, MDS2), color = "#957DB1", size = 3, shape = 16) +
  theme(panel.grid = element_blank(), # 繪製背景
        panel.background = element_rect(color = 'black',
        fill = 'transparent'),
        legend.key = element_rect(fill = 'transparent'),
        axis.ticks.length = unit(0.4,"lines"),
        axis.ticks = element_line(color='black'),
        axis.line = element_line(colour = "black"),
        axis.title.x=element_text(colour='black', size=14),
        axis.title.y=element_text(colour='black', size=14),
        axis.text=element_text(colour='black',size=12)) +
  labs(x = 'Dimension 1', y = 'Dimension 2', color = '') +
  labs(title="Correlation between community and environment") +
  geom_vline(xintercept = 0, color = 'gray', linetype = 2, size = 0.3) +
  geom_hline(yintercept = 0, color = 'gray', linetype = 2, size = 0.3) +
  geom_abline(intercept = 0, slope = Pro_X[1,2]/Pro_X[1,1], size = 0.3) +
  geom_abline(intercept = 0, slope = Pro_X[2,2]/Pro_X[2,1], size = 0.3) +
  annotate('text', label = 'Procrustes analysis:\n
                    M2 = 0.6297, p-value = 0.001',
           x = -0.3, y = 0.3, size = 4,hjust = 0) +
  theme(plot.title = element_text(size=14,colour = "black",
                      hjust = 0.5,face = "bold"))

library(export)
graph2ppt(file="Procrustes.ppt", append=T, height=5, width=5)


Forcino(2015)也證實了Jackson(1995)和Peres-Neto和Jackson(2001)的說法,即Protest是一種強大而準確用於度量數據集間相似性的分析方法,甚至優於Mantel test。然而,在某些情況下,Mantel test產生的結果與Protest不同。例如,Manteltest更接近於三個更相似的數據集比較中的兩個數據集的評估評分的變化幅度。因此,我們在分析時要根據我們的目標和實際情況進行選擇,特別是聚焦於兩個數據集的一致性時,Procrustes可能是更優的方案。

參考連結:

1.https://www.cnblogs.com/nsnow/p/4745730.html

2.https://www.freesion.com/article/8301917564/

3.https://www.jianshu.com/p/ec8faacac230

4.https://www.sciencedirect.com/science/article/pii/S0031018215001546

(Evaluating the effectiveness of the Mantel test and Procrustes randomization test for exploratory ecological similarity among paleocommunitie)

分析中的數據可以添加我們的微信群獲得,

獲得途徑1,關注本公眾號,後臺回復 「客服微信」,小編將邀請您進群和我們一起交流和學習~

獲得途徑2,添加小編個人微信,小編將拉你進群。          

期待您的"分享"點讚"在看"

相關焦點

  • 因子分析(Factor Analysis)
    。4 因子分析例子     下面通過一個簡單例子,來引出因子分析背後的思想。     因子分析的實質是認為m個n維特徵的訓練樣例     因子分析實際上是降維,在得到各個參數後,可以求得z。但是z的各個參數含義需要自己去琢磨。     下面從一個ppt中摘抄幾段話來進一步解釋因子分析。     因子分析(factor analysis)是一種數據簡化的技術。它通過研究眾多變量之間的內部依賴關係,探求觀測數據中的基本結構,並用少數幾個假想變量來表示其基本的數據結構。
  • 富集分析的R包神器-ClusterProfiler使用
    ,不管是轉錄組、甲基化、ChIP-seq還是重測序,都會用到對一個或多個集合的基因進行功能富集分析。分析結果可以指示這個集合的基因具有什麼樣的功能偏好性,進而據此判斷相應的生物學意義。 GO富集分析是先篩選差異基因,再判斷差異基因在哪些注釋的通路存在富集。
  • 物種的定殖,而不是競爭排斥,在長期的演替過程中驅動了群落的過度分散
    正的SES值表示系統發育或功能過度分散,而負的SES值表示聚集。我們計算了每個年齡段的每個地塊的SES.MPD,SES.MNTD,SES.MFD以及SES.MNFD。      最近的研究表明,系統發育和功能結構分析的統計能力可能對不同的系統發育和性狀方法、零模型和物種庫敏感。
  • 基因組survey中的神助攻——K-mer分析
    因此在對高等真核生物進行全基因組De novo之前,我們需要設法提前獲知該物種基因組特徵的一些信息,為後續的測序方案、基因組組裝方案、基因組結構注釋等提供參考依據。這種情況下,我們一般會在基因組大規模測序或者正式組裝之前,首先構建DNA小片段文庫進行中低深度的二代測序,使用PE文庫測序所得的reads信息進行基因組Survey分析以初步評估基因組特徵。
  • ​無代碼高效繪製富集分析氣泡圖
    掃描下方二維碼免費領取☟☟☟解螺旋公眾號·陪伴你科研的第2180天
  • 【技術分享】深度偽造(Deepfake)原理分析及實戰
    本文會首先介紹Deepfake的相關背景及技術特點,然後以實戰為導向詳細介紹Deepfake的一種典型生成方案,最後會給出常用的防禦(檢測)策略。本文就採用這一定義,並針對「視聽記錄」中的視頻領域的技術進行分析及實戰。視頻偽造視頻偽造是Deepfake技術最為主要的代表,製作假視頻的技術也被業界稱為人工智慧換臉技術(AI face swap)。其核心原理是利用生成對抗網絡或者卷積神經網絡等算法將目標對象的面部「嫁接」到被模仿對象上。
  • PEAK等價關係模塊評估報告範例
    蒂莫西等價關係模塊報告評估概述:作為對蒂莫西的技能進行綜合評估的一部分,進行了PEAK關係訓練系統等價關係評估(PEAK-E)(Dixon,2015
  • 機載武器系統作戰效能綜合評估方法
    而且,隨著高新技術的引入,新型機載武器系統的功能集成化程度越來越高,任務剖面和使用環境條件日益複雜,對作戰效能提出了更高的要求。傳統的效能評估方法通常以機載武器為核心,而忽視了實戰任務及機載武器協同作戰對武器系統效能的影響,難以對機載武器系統在實戰條件下的效能水平進行精確評價。
  • Scrapy實戰5:Xpath實戰訓練
    系列文章Scrapy實戰4:初識爬蟲框架ScrapyScrapy實戰3:URL去重策略Scrapy實戰2:爬蟲深度&&廣度優先算法Scrapy實戰1| 正則表達式    今天給大家分享的是,如何在cmd和pycharm中啟動自己的spider以及Xpath的基本介紹,並利用Xpath
  • 660多種外來物種入侵我國,影響幾何
    日前,生態環境部發布《2019中國生態環境狀況公報》,在涉及外來入侵物種的情況時,給出了以上數據。那麼,這些外來入侵物種主要集中在哪些物種,通過何種途逕入侵我國?它們對我國造成或具有哪些潛在威脅,應該如何防範?針對上述公眾關心的問題,本報記者採訪了生態環境部南京環境科學研究所副研究員馬方舟。
  • 實戰之關係分析三--圖資料庫
    而邊的細化主要是確定邊的關係到底是什麼,比如上圖,張三和車的關係就是所屬關係,而李四和車的關係是處理違章關係。邊的細化還有就是關係的方向,因為本來圖就分為有向圖和無向圖,有向和無向指的就是邊是否有方向性。比如上圖中張三給李四打了一通電話,那麼通聯關係邊的方向就是從張三到李四。當然如果你認為這個方向性重要性不大,你也可以弱化這個方向。
  • 廣義線性模型(GLM)概述及負二項回歸應用舉例和R計算
    這也是那些總所周知的基因表達分析R包如edgeR、DESeq2等廣為流行的原因,它們的原理就是負二項回歸。edgeR、DESeq2也廣泛用於微生物組數據分析中,同樣歸因於基於測序得到的OTU/ASV都是整數型變量,可以視為物種個體計數來看待(但僅限於整數數值的豐度計算,小數型的相對豐度運行edgeR、DESeq2時會直接報錯,負二項回歸不能用於純小數)。上述是用在差異計算上的舉例。
  • 660多種外來物種入侵我國,到底影響幾何?
    日前,生態環境部發布《2019中國生態環境狀況公報》,在涉及外來入侵物種的情況時,給出了以上數據。   那麼,這些外來入侵物種主要集中在哪些物種,通過何種途逕入侵我國?它們對我國造成或具有哪些潛在威脅,應該如何防範?針對上述公眾關心的問題,本報記者採訪了生態環境部南京環境科學研究所副研究員馬方舟。
  • 基於功能的評估FBA和功能性溝通訓練FCT
    在為了減少行為而設計幹預方案之前,教育團隊應該首先執行功能性行為分析(FBA)。FBA涉及到評估環境因素及其與目標行為關聯性而進行的數據收集。這個評估是以人為中心的,並不會用同一種方式幹預每個兒童的同一類問題行為(比如,踢打,旋轉),而是確定每個兒童為什麼會出現攻擊行為,並據此設計基於功能的幹預方案來幫助學生通過更合適的方式表達自己的需求(Cooper et al., 2007)。
  • 【乾貨】事故樹分析方法(FTA)最詳細解析分享
    ⑤表決門(e).表決門表示僅當n個輸入事件中有r個或r個以上的事件發生時,輸出事件才發生.⑥異或門(f).異或門表示僅當單個輸入事件發生時,輸出事件才發生.⑦禁門(g).禁門表示僅當條件事件發生時, 輸入事件的發生方導致輸出事件的發生.
  • 基於NSL-KDD數據集的網絡入侵檢測分析
    基於混合的IDS通過分析應用程式日誌,系統調用,文件系統修改(密碼文件,二進位文件,訪問控制列表和功能資料庫等)以及其他主機狀態和活動來檢測入侵。 入侵檢測系統通常與其他技術(例如路由器和防火牆)一起使用,如此可以將來自每個設備的數據關聯起來,並根據這些IDS監視的內容做出相應決策。入侵檢測方法有三種,包括基於籤名的檢測(也稱為誤用檢測),基於異常的檢測和混合入侵檢測。
  • 呼吸系統力學功能的評估(一)
    機械通氣支持期間對呼吸系統機械通氣功能的評估,包括通過各種方法評價呼吸系統物理學和呼吸機性能,最終達到弄清楚呼吸系統內部壓力與流速兩者之間關係的目的。早期檢測這種相互作用的異常至關重要,因為它可能影響患者的預後。在重症監護病房,認識到呼吸功能的改善或惡化、呼吸機設置與患者需求是否匹配以及呼吸機參數是否遵循肺保護策略,已經變得越來越重要。
  • 典型相關分析(CCA)與冗餘分析(RDA)
    軟體分析步驟如下:(1)數據格式轉換(將環境、物種變量從Excel複製到WcanoImp,轉換為軟體能夠識別的text文本文件,物種與環境數據分開,單獨導入(2)打開Canoco for Windows4.5 新建project,導入剛才保存的物種和環境數據(先導入物種數據,選擇間接梯度分析做DCA分析,判斷是做RDA分析合適還是CCA,一般軸長大於4選CCA(單峰模型),3-4之間兩者都可,小於3用RDA(線性模型)分析)。
  • 【關注】逾3.8萬個物種面臨滅絕威脅!當一個物種滅絕消失時,我們會失去什麼?
    在法國馬賽舉行的第七屆世界自然保護大會上,世界自然保護聯盟4日更新了瀕危物種紅色名錄,評估了全球138374個物種受到威脅的風險,其中38543