R包vegan的Mantel tests探索群落物種組成是否與環境相關

2021-02-19 宏基因組
Mantel tests是確定兩組距離測度矩陣(而非兩組變量矩陣)之間相關性的相關性測試方法,用於判斷一個矩陣中的樣本距離與另一矩陣中的樣本距離是否相關。Mantel tests零假設為響應變量矩陣中對象之間的距離與解釋變量矩陣不存在相關,如果結果中p值顯著,則拒絕零假設,即存在相關性,隨著一個矩陣中樣本之間距離的增加(或減少),另一矩陣中對應樣本之間的距離也增加(或減少)。此外,Mantel方法還可用於檢驗假設或模型。在這種模型測試方法中,一個矩陣包含響應數據,另一個矩陣代表了要測試的先驗模型(檢驗的備擇假設),如果找到了重要的Mantel統計信息,它們將為模型提供一些支持。本篇重點介紹Mantel tests確定相關性的方法。例如在群落分析中,為了探索群落物種組成是否與環境相關,經常使用到Mantel tests。群落分析中通常存在兩組變量矩陣,樣方-物種多度矩陣和樣方-環境測量矩陣。首先根據兩組變量矩陣計算樣方間的相異(距離)矩陣,即分別獲得通過物種豐度計算的樣方距離(通常為Bray-Curtis距離),以及通過某幾種環境參數計算的樣方距離(通常為歐幾裡得距離)。有時也會使用樣方間真實的地理距離直接作為某種距離測度。


之後使用兩組距離測度矩陣執行Mantel tests,例如確定樣方之間的群落組成差異是否與樣方之間的溫度差異或樣方之間的物理距離相關,或者說「共變」。這些測試可用於解決環境是針對微生物群落的「選擇」,還是存在強烈的距離衰減模式,表明存在擴散限制。這些通常是生物地理學研究中的重要問題。

本篇同樣以群落分析為例,簡介R包vegan的Mantel tests。

假設存在如下數據集。第1列是樣方名稱,第2-5列為各樣方中的環境參數(即鹽度、溫度等),第6-7列為各樣方的緯度和經度,第8列及之後為各樣方中的物種及其豐度。我們期望通過Mantel tests,查看對於該數據集,作用於物種變化的最主要因素,是由環境引起的「選擇」,還是由地理因素的擴散限制所致。

 

加載R包,如上所述,首先計算兩組樣方距離測度,然後執行Mantel tests。

library(vegan)
 
#讀取上述數據集
df <- read.csv('Your_OTU_table.csv', header= TRUE)
 
##計算距離
#根據物種豐度數據,計算樣方間的 Bray-curtis 距離
abund <- df[ ,8:ncol(df)]
dist.abund <- vegdist(abund, method = 'bray')
 
#根據環境測量指標,計算樣方間的歐幾裡得距離
#這裡只選擇了其中的溫度指標,期望關注物種變化與溫度的相關性
temp <- df$Temperature
dist.temp <- dist(temp, method = 'euclidean')
 
#如果期望關注多種環境的協同作用,就選擇一個環境子集,計算樣方間的歐幾裡得距離
#例如使用 4 種環境數據,但此時需要執行數據標準化,以消除量綱差異
env <- df[ ,2:5]
scale.env <- scale(env, center = TRUE, scale = TRUE)
dist.env <- dist(scale.env, method = 'euclidean')
 
#根據經緯度,計算樣方間實際的地理距離
geo <- data.frame(df$Longitude, df$Latitude)
d.geo <- distm(geo, fun = distHaversine)       #library(geosphere)
dist.geo <- as.dist(d.geo)
 
##執行 Mantel tests,詳情 ?mantel,以下為 3 個示例
#物種豐度和溫度的相關性,以 spearman 相關係數為例,9999 次置換檢驗顯著性(Mantel tests 基於隨機置換的方法獲取 p 值)
abund_temp <- mantel(dist.abund, dist.temp, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_temp
 
#物種豐度和地理距離的相關性,以 spearman 相關係數為例,9999 次置換檢驗顯著性
abund_geo <- mantel(dist.abund, dist.geo, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_geo
 
#物種豐度和 4 種環境組合的相關性,以 spearman 相關係數為例,9999 次置換檢驗顯著性
abund_env <- mantel(dist.abund, dist.env, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_env

基於物種豐度的距離矩陣與基於溫度指標的距離矩陣之間有很強的相關性(Mantel statistic R: 0.667,p value = 1e-04)。換句話說,隨著樣方在溫度方面的差異逐漸增大,它們在物種組成方面的差異也越來越大。

#物種豐度和溫度的相關性
> abund_temp

Mantel statistic based on Spearman's rank correlation rho 

Call:
mantel(xdis = dist.abund, ydis = dist.temp, method = "spearman", permutations = 9999, na.rm = TRUE) 

Mantel statistic r: 0.677 
      Significance: 1e-04 

Upper quantiles of permutations (null model):
  90%   95% 97.5%   99% 
0.148 0.198 0.246 0.290 
Permutation: free
Number of permutations: 9999

基於物種豐度的距離矩陣與樣方間的地理距離沒有顯著關係(Mantel statistic R: 0.138,p value = 0.052)。因此可知,對於該測試數據集,不存在物種豐度的距離衰減效應。

#物種豐度和地理距離的相關性
> abund_geo

Mantel statistic based on Spearman's rank correlation rho 

Call:
mantel(xdis = dist.abund, ydis = dist.geo, method = "spearman", permutations = 9999, na.rm = TRUE) 

Mantel statistic r: 0.1379 
      Significance: 0.0525 

Upper quantiles of permutations (null model):
  90%   95% 97.5%   99% 
0.107 0.140 0.170 0.204 
Permutation: free
Number of permutations: 9999

同時對於4種環境變量組合,累積的環境因素與群落物種組成高度相關(Mantel statistic r: 0.686, p value = 1e-04)。

#物種豐度和 4 種環境組合的相關性
> abund_env

Call:
mantel(xdis = dist.abund, ydis = dist.env, method = "spearman",      permutations = 9999, na.rm = TRUE) 

Mantel statistic r: 0.6858 
      Significance: 1e-04 

Upper quantiles of permutations (null model):
  90%   95% 97.5%   99% 
0.151 0.201 0.244 0.292 
Permutation: free
Number of permutations: 9999

綜上結論,對於該數據集,與地理距離相比,群落物種組成與環境參數的相關性更強。因此在該系統中,主要發生環境對群落作出的「選擇」,地理因素的擴散限制相對微弱。

最後不妨作圖觀測變量間的關係,加深對這種相關性的理解。

library(ggplot2)
 
#某物種與溫度的相關性,橫軸溫度,縱軸物種豐度,顏色表示樣方的緯度
xx = ggplot(df, aes(x = Temperature, y = Pelagibacteraceae.OTU_307744)) + 
    geom_smooth(method = 'lm', alpha = 0.2, colour = 'black') + 
    geom_point(aes(colour = Latitude), size = 4) +
    labs(y = 'Pelagibacteraceae (OTU 307744) (%)', x = 'Temperature (C)') + 
    theme( axis.text.x = element_text(face = 'bold',colour = 'black', size = 12), 
        axis.text.y = element_text(face = 'bold', size = 11, colour = 'black'), 
        axis.title= element_text(face = 'bold', size = 14, colour = 'black'), 
        panel.background = element_blank(), 
        panel.border = element_rect(fill = NA, colour = 'black'), 
        legend.title = element_text(size =12, face = 'bold', colour = 'black'),
        legend.text = element_text(size = 10, face = 'bold', colour = 'black')) +
    scale_colour_continuous(high = 'navy', low = 'salmon')
 
xx


#對於圖中的線性回歸
fit <- lm(df$Temperature~df$Pelagibacteraceae.OTU_307744)
summary(fit)

Call:
lm(formula = df$Temperature ~ df$Pelagibacteraceae.OTU_307744)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.2053 -0.9336 -0.5215  0.5028  3.8232 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       0.4082     0.4476   0.912    0.372    
df$Pelagibacteraceae.OTU_307744   1.3008     0.1280  10.165 1.45e-09 ***
---
Signif. codes:  0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

Residual standard error: 1.634 on 21 degrees of freedom
Multiple R-squared:  0.8311, Adjusted R-squared:  0.823 
F-statistic: 103.3 on 1 and 21 DF,  p-value: 1.454e-09

#分面圖展示多組變量的相關性,橫軸溫度,縱軸為多個物種的豐度,顏色表示樣方的緯度
library(reshape2)
 
otus <- df[ ,1:11]
otus_melt <- melt(otus, id = c('Station', 'Salinity', 'Temperature', 'Oxygen', 'Nitrate', 'Latitude', 'Longitude'))
 
xx <- ggplot(otus_melt, aes(x = Temperature, y = value)) + 
    facet_wrap(.~variable, scales = 'free_y') +
    geom_smooth(method = 'lm', alpha = 0.2, colour = 'black') + 
    geom_point(aes(colour = Latitude), size = 4) +
    labs(y = 'Relative Abundance (%)', x = 'Temperature (C)') + 
    theme( axis.text.x = element_text(face = 'bold',colour = 'black', size = 12), 
        axis.text.y = element_text(face = 'bold', size = 10, colour = 'black'), 
        axis.title= element_text(face = 'bold', size = 14, colour = 'black'), 
        panel.background = element_blank(), 
        panel.border = element_rect(fill = NA, colour = 'black'), 
        legend.title = element_text(size =12, face = 'bold', colour = 'black'),
        legend.text = element_text(size = 10, face = 'bold', colour = 'black'), 
        legend.position = 'top', strip.background = element_rect(fill = 'grey90', colour = 'black'),
        strip.text = element_text(size = 9, face = 'bold')) +
    scale_colour_continuous(high = 'navy', low = 'salmon')
 
xx


 

上述主要展示的變量間相關性的散點圖。

接下來是對於距離測度間的相關性。

#將上文獲得的距離測度,轉化為數據框,一一對應起來
aa <- as.vector(dist.abund)
tt <- as.vector(dist.temp)
gg <- as.vector(dist.geo)
mat <- data.frame(aa, tt, gg)
 
#基於物種豐度的距離與基於溫度指標的距離之間的相關性散點圖,上文已知二者顯著相關;同時顏色表示樣方間地理距離
mm <- ggplot(mat, aes(y = aa, x = tt)) + 
    geom_point(size = 4, alpha = 0.75, colour = "black",shape = 21, aes(fill = gg/1000)) + 
    geom_smooth(method = "lm", colour = "black", alpha = 0.2) + 
    labs(x = "Difference in Temperature (C)", y = "Bray-Curtis Dissimilarity", fill = "Physical Separation (km)") + 
    theme( axis.text.x = element_text(face = "bold",colour = "black", size = 12), 
           axis.text.y = element_text(face = "bold", size = 11, colour = "black"), 
           axis.title= element_text(face = "bold", size = 14, colour = "black"), 
           panel.background = element_blank(), 
           panel.border = element_rect(fill = NA, colour = "black"),
           legend.position = "top",
           legend.text = element_text(size = 10, face = "bold"),
           legend.title = element_text(size = 11, face = "bold")) +
    scale_fill_continuous(high = "navy", low = "skyblue")
 
mm
 
#基於物種豐度的距離與樣方間地理距離之間的相關性散點圖,上文已知二者無相關性
mm <- ggplot(mat, aes(y = aa, x = gg/1000)) + 
    geom_point(size = 3, alpha = 0.5) + 
    labs(x = "Physical separation (km)", y = "Bray-Curtis Dissimilarity") + 
    theme( axis.text.x = element_text(face = "bold",colour = "black", size = 12), 
        axis.text.y = element_text(face = "bold", size = 11, colour = "black"), 
        axis.title= element_text(face = "bold", size = 14, colour = "black"), 
        panel.background = element_blank(), 
        panel.border = element_rect(fill = NA, colour = "black"))
 
mm


 

Mantel Test in R:https://jkzorz.github.io/2019/07/08/mantel-test.htmlAppendix 4: Graphical Description of MantelsTest and ANOSIM:https://www.mfe.govt.nz/publications/environmental-reporting/new-zealand-marine-environment-classification-overview/append-2The Mantel test:https://mb3is.megx.net/gustame/hypothesis-tests/the-mantel-test

  

為鼓勵讀者交流、快速解決科研困難,我們建立了「宏基因組」專業討論群,目前己有國內外5000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註「姓名-單位-研究方向-職稱/年級」。PI請明示身份,另有海內外微生物相關PI群供大佬合作交流。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍未解決群內討論,問題不私聊,幫助同行。

相關焦點

  • 從1390米海底擒獲奇特新群落、新物種 「海六」凱旋歸來了!
    從1390米海底擒獲奇特新群落、新物種 「海六」凱旋歸來了!金羊網  作者:趙燕華  2019-05-16 金羊網訊 記者趙燕華,通訊員陳惠玲、薛俊輝報導:歷時36天、航程3000多海裡,一口氣開展了20多項海上科學考察任務,碩果纍纍!
  • 高中生物:種群和群落知識點解讀.
    s.5.u.c.o.m種群的特徵有種群密度、出生率和死亡率、遷入率和遷出率、年齡組成、性別比例。種群密度是種群最基本的數量特徵。決定種群的大小和密度的特徵有出生率和死亡率、遷入率和遷出率。3.種群的年齡組成分為哪些類型?有何用途?
  • 高二生物教案:《群落的演替》教學設計
    【問題導學】  【目標一】群落演替的概念  群落演替概念:隨著時間的推移,一個群落被另一個群落             的過程。  2、意義:土壤被林草覆蓋,湖泊面積明顯擴大,可以調節氣候和洪水流量,改善生態環境。  【實踐練習】  1.下列各項中,不屬於次生演替的是                                              (     )  A.
  • 綠色素遊攻略 Vegan Travel 101
    【作者簡介】李潔楨 (Crystal Lee),一個熱愛自由的旅人,Vegan Expression 頻道的博主,專門拍攝和撰寫純素相關的主題影片和文章
  • 分析混合微生物群落內細菌協同代謝關係,「代謝組+」聯合助力!
    一、背景解讀微生物相互作用(microbial interaction)是自然生態環境或人造環境的微生物生化過程至關重要的實現方式。理解不同微生物間在生長過程中產生的物質交換(material exchange),可協助研究者理解不同菌種間的競爭或合作關係,有助於發現構建合理的微生物群落所需的關鍵環境因子,對於開發提高複合微生物群落的性能的策略,以及開發監測、預測生物過程的工具至關重要。然而,揭示複雜微生物群落中菌間互作具有挑戰性。
  • R語言集成開發環境 RStudio中的函數和包!
    作者:丁點helper來源:丁點幫你通過之前的文章,大家已經了解到,用R語言集成開發環境 RStudio進行數據整理和統計分析,其實是一個讀取、處理、保存對象的過程。前天提到的ls()和rm()也是函數,其功能分別是羅列環境中所有對象的名稱,以及清除對象。在R中,函數是由表示動作的一系列字母加一個括號組成的,例如rm()中,rm表示remove。
  • PLoS ONE:胃腸道不同區段的微生物群落結構特徵組成
    胃腸道內微生物群落結構的平衡和穩定關係到宿主健康的維持,否則會引起糖尿病、肥胖、脂肪肝、腸炎,甚至抑鬱、癌症等多種疾病的發生。對胃腸消化道不同區段微生物群落結構的準確了解,是研究腸道微生物生態及其與宿主健康關係的起點。
  • 科學家利用新的螢光成像技術研究細菌如何在人的舌頭上形成群落
    利用最近發展的螢光成像技術,美國研究人員開發了人類舌頭上微生物群落的高解析度地圖。這些圖片於3月24日刊登在雜誌上。「以前關於細菌群落的大部分工作都採用了基於dna測序的方法,但要獲得dna序列,你必須先研磨樣本並提取DNA,這就破壞了那裡所有美麗的空間結構。利用我們的clasi魚類技術進行成像,可以同時保存空間結構並識別細菌。」 首先,研究人員利用分析過的序列數據,從21名健康參與者的舌頭中提取的小樣本中確定了主要的細菌分類群。
  • 12萬億隻,2750萬噸,覆蓋1‰地球,美國蝗群或是史上最大動物群落!
    紐約州立大學石溪分校鳥類學家諾亞·史崔克(Noah Strycker)一直在對此進行調查,根據他的調查結果,結合我自己查到的相關資料,我們來看看,究竟哪種動物才是地球上最成功的物種,在地球上擁有最多的數量。
  • 12萬億隻,2750萬噸,覆蓋1‰地球,美國蝗群或是史上最大動物群落
    但這肯定不能代表地球最大物種種群的水平,那麼最大的究竟有多少呢?紐約紐約州立大學石溪分校鳥類學家諾亞·史崔克(Noah Strycker)一直在對此進行調查,根據他的調查結果,結合我自己查到的相關資料,我們來看看,究竟哪種動物才是地球上最成功的物種,在地球上擁有最多的數量。
  • 2018年十大"新奇物種"名單:海洋最深的魚類被發現
    美國紐約州立大學環境科學與林業學院(SUNY-ESF)與國際物種探索研究所(IISE)日前公布了2018年發現的十大新奇物種名單,裡面包括了動物、植物以及微生物。它們的體型有大有小,但同樣美麗而又奇異。其中,最高大的是一種雄偉巨樹,高達40米。最小的是一種單細胞的原生生物。
  • 物種進化的「龜兔賽跑」—新聞—科學網
    「今天,海洋動物比地球生命史上的任何時候都更加多樣化,我們一直在努力描述它們是如何變成這樣的。」該研究通訊作者、生物學助理教授Matthew Knope告訴《中國科學報》。 未參與該研究的加州大學伯克利分校進化生物學教授Rosemary Gillespie指出,了解生物多樣性在空間和時間上是如何構成的,一直是生物學研究的重點。
  • R語言製作相關圖
    R語言製作相關圖這篇文章是一個英文教程的搬運和整理,前幾天在論文中看到了非常漂亮的相關圖(correlogram),可以通過這個畫出來。相關圖可以非常好的表現數據表中的各個變量之間的相關關係。在相關圖中,相關係數(correlation coefficients) 根據不同的值賦予了不同的顏色,相關矩陣(correlation matrix) 可以根據不同變量間的關係表現出來。在這裡使用了R語言中的corrplot包。
  • 呂彩霞建議制定外來物種專門法律法規 | 建言...
    互花米草2003年被國家環境保護總局列入首批外來入侵物種名單。互花米草的入侵嚴重威脅我國濱海溼地生態系統安全及可持續發展,成為我國濱海溼地保護和恢復所面臨的亟待解決的生態和環境問題之一。互花米草的入侵不同程度地侵佔本土生物生存空間,形成單一互花米草植物群落,破壞近海生物棲息環境,導致原生物群落生境空間破碎化、生物多樣性下降。2.破壞生態環境。互花米草密度大,具有很強的促淤作用,形成的「大壩」阻擋潮水影響海水交換能力, 導致水質下降,並誘發赤潮,破壞潮間帶其他區域的生態環境。
  • 外媒:科學家在加拉帕戈斯群島周邊深海發現30個新物種
    據法新社基多8月17日報導,GNP在一份聲明中說,深海專家們發現了脆弱的珊瑚和海綿群落,包括10種竹珊瑚、4種八放珊瑚、1種海蛇尾、11種海綿,以及4種新的甲殼動物——東方扁蝦。   加拉帕戈斯群島的查爾斯·達爾文基金會(CDF)在另一份聲明中說:「這些發現包括熱帶東太平洋已知的首個巨型單體軟珊瑚,一種新的生長群落寬度可達一米的玻璃海綿,以及擁有眾多伴生物種的色彩斑斕的海扇。」   報導稱,CDF的科學家與國家公園管理局和海洋勘探信託基金會合作,利用最先進的遙控潛水器對深達3400米的深海生態系統進行了探測。
  • 群落演替的頂極學說
    群落的演替是一個漫長的過程,但演替也不是無休無止、永恆延續的。一般來說,當一個群落演替到平衡狀態的時候,演替就不再進行了。
  • 【視點】中國科學院東北地理與農業生態研究所王莉霞團隊:恢復溼地土壤團聚體中元素計量學特徵與微生物群落結構的關係
    ,特邀王老師為本公眾號撰寫了該研究的亮點部分,一方面,豐富天然有機質相關的研究領域,尤其是溼地恢復土壤團聚體影響微生物群落結構的研究領域;另一方面,希望該團隊的研究成果能給關注者啟發,從中獲得靈感,促進天然有機質研究工作的開展。