R包vegan的Mantel tests

R包vegan的Mantel tests

Mantel tests是確定兩組距離測度矩陣(而非兩組變量矩陣)之間相關(guān)性的相關(guān)性測試方法揍瑟,用于判斷一個矩陣中的樣本距離與另一矩陣中的樣本距離是否相關(guān)铣鹏。Mantel tests零假設(shè)為響應(yīng)變量矩陣中對象之間的距離與解釋變量矩陣不存在相關(guān)肠牲,如果結(jié)果中p值顯著,則拒絕零假設(shè)指蚜,即存在相關(guān)性肛循,隨著一個矩陣中樣本之間距離的增加(或減少),另一矩陣中對應(yīng)樣本之間的距離也增加(或減少)柿究。

此外,Mantel方法還可用于檢驗假設(shè)或模型黄选。在這種模型測試方法中笛求,一個矩陣包含響應(yīng)數(shù)據(jù),另一個矩陣代表了要測試的先驗?zāi)P停z驗的備擇假設(shè))糕簿,如果找到了重要的Mantel統(tǒng)計信息,它們將為模型提供一些支持狡孔。

本篇重點介紹Mantel tests確定相關(guān)性的方法懂诗。

例如在群落分析中,為了探索群落物種組成是否與環(huán)境相關(guān)苗膝,經(jīng)常使用到Mantel tests殃恒。

群落分析中通常存在兩組變量矩陣,樣方-物種多度矩陣和樣方-環(huán)境測量矩陣辱揭。首先根據(jù)兩組變量矩陣計算樣方間的相異(距離)矩陣离唐,即分別獲得通過物種豐度計算的樣方距離(通常為Bray-curtis測度),以及通過某幾種環(huán)境參數(shù)計算的樣方距離(通常為歐幾里得距離)问窃。有時也會使用樣方間真實的地理距離直接作為某種距離測度亥鬓。

[圖片上傳失敗...(image-79b5f7-1609989983608)]

之后使用兩組距離測度矩陣執(zhí)行Mantel tests,例如確定樣方之間的群落組成差異是否與樣方之間的溫度差異或樣方之間的物理距離相關(guān)域庇,或者說“共變”嵌戈。這些測試可用于解決環(huán)境是針對微生物群落的“選擇”,還是存在強烈的距離衰減模式听皿,表明存在擴散限制熟呛。這些通常是生物地理學(xué)研究中的重要問題。

vegan包的Mantel tests方法

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

假設(shè)存在如下數(shù)據(jù)集。第1列是樣方名稱又厉,第2-5列為各樣方中的環(huán)境參數(shù)(即鹽度九府、溫度等),第6-7列為各樣方的緯度和經(jīng)度覆致,第8列及之后為各樣方中的物種及其豐度昔逗。我們期望通過Mantel tests,查看對于該數(shù)據(jù)集篷朵,作用于物種變化的最主要因素勾怒,是由環(huán)境引起的“選擇”婆排,還是由地理因素的擴散限制所致。

image.png

加載R包笔链,如上所述段只,首先計算兩組樣方距離測度,然后執(zhí)行Mantel tests鉴扫。

library(vegan)
 
#讀取上述數(shù)據(jù)集
df <- read.csv('Your_OTU_table.csv', header= TRUE)
 
##計算距離
#根據(jù)物種豐度數(shù)據(jù)赞枕,計算樣方間的 Bray-curtis 距離
abund <- df[ ,8:ncol(df)]
dist.abund <- vegdist(abund, method = 'bray')
 
#根據(jù)環(huán)境測量指標,計算樣方間的歐幾里得距離
#這里只選擇了其中的溫度指標坪创,期望關(guān)注物種變化與溫度的相關(guān)性
temp <- df$Temperature
dist.temp <- dist(temp, method = 'euclidean')
 
#如果期望關(guān)注多種環(huán)境的協(xié)同作用炕婶,就選擇一個環(huán)境子集,計算樣方間的歐幾里得距離
#例如使用 4 種環(huán)境數(shù)據(jù)莱预,但此時需要執(zhí)行數(shù)據(jù)標準化柠掂,以消除量綱差異
env <- df[ ,2:5]
scale.env <- scale(env, center = TRUE, scale = TRUE)
dist.env <- dist(scale.env, method = 'euclidean')
 
#根據(jù)經(jīng)緯度,計算樣方間實際的地理距離
geo <- data.frame(df$Longitude, df$Latitude)
d.geo <- distm(geo, fun = distHaversine)       #library(geosphere)
dist.geo <- as.dist(d.geo)
 
##執(zhí)行 Mantel tests依沮,詳情 ?mantel涯贞,以下為 3 個示例
#物種豐度和溫度的相關(guān)性,以 spearman 相關(guān)系數(shù)為例危喉,9999 次置換檢驗顯著性(Mantel tests 基于隨機置換的方法獲取 p 值)
abund_temp <- mantel(dist.abund, dist.temp, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_temp
 
#物種豐度和地理距離的相關(guān)性宋渔,以 spearman 相關(guān)系數(shù)為例,9999 次置換檢驗顯著性
abund_geo <- mantel(dist.abund, dist.geo, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_geo
 
#物種豐度和 4 種環(huán)境組合的相關(guān)性辜限,以 spearman 相關(guān)系數(shù)為例皇拣,9999 次置換檢驗顯著性
abund_env <- mantel(dist.abund, dist.env, method = 'spearman', permutations = 9999, na.rm = TRUE)
abund_env

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

#物種豐度和溫度的相關(guān)性
> 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

基于物種豐度的距離矩陣與樣方間的地理距離沒有顯著關(guān)系(Mantel statistic R: 0.138态蒂,p value = 0.052)。因此可知费什,對于該測試數(shù)據(jù)集钾恢,不存在物種豐度的距離衰減效應(yīng)。

#物種豐度和地理距離的相關(guān)性
> 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種環(huán)境變量組合鸳址,累積的環(huán)境因素與群落物種組成高度相關(guān)(Mantel statistic r: 0.686, p value = 1e-04)瘩蚪。

#物種豐度和 4 種環(huán)境組合的相關(guān)性
> 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

綜上結(jié)論,對于該數(shù)據(jù)集稿黍,與地理距離相比疹瘦,群落物種組成與環(huán)境參數(shù)的相關(guān)性更強。因此在該系統(tǒng)中巡球,主要發(fā)生環(huán)境對群落作出的“選擇”言沐,地理因素的擴散限制相對微弱邓嘹。

作圖觀測相關(guān)性的示例

最后不妨作圖觀測變量間的關(guān)系,加深對這種相關(guān)性的理解险胰。

library(ggplot2)
 
#某物種與溫度的相關(guān)性汹押,橫軸溫度,縱軸物種豐度起便,顏色表示樣方的緯度
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
image.png
#對于圖中的線性回歸
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
#分面圖展示多組變量的相關(guān)性棚贾,橫軸溫度,縱軸為多個物種的豐度榆综,顏色表示樣方的緯度
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
image.png

上述主要展示的變量間相關(guān)性的散點圖妙痹。

接下來是對于距離測度間的相關(guān)性。

#將上文獲得的距離測度鼻疮,轉(zhuǎn)化為數(shù)據(jù)框怯伊,一一對應(yīng)起來
aa <- as.vector(dist.abund)
tt <- as.vector(dist.temp)
gg <- as.vector(dist.geo)
mat <- data.frame(aa, tt, gg)
 
#基于物種豐度的距離與基于溫度指標的距離之間的相關(guān)性散點圖,上文已知二者顯著相關(guān)陋守;同時顏色表示樣方間地理距離
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
 
#基于物種豐度的距離與樣方間地理距離之間的相關(guān)性散點圖,上文已知二者無相關(guān)性
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
image.png

參考資料

Mantel Test in R:https://jkzorz.github.io/2019/07/08/mantel-test.html

Appendix 4: Graphical Description of MantelsTest and ANOSIM:https://www.mfe.govt.nz/publications/environmental-reporting/new-zealand-marine-environment-classification-overview/append-2

The Mantel test:https://mb3is.megx.net/gustame/hypothesis-tests/the-mantel-test

本文分享自微信公眾號 - 小白魚的生統(tǒng)筆記(gh_5f751e893315)利赋,作者:鯉小白

原文出處及轉(zhuǎn)載信息見文內(nèi)詳細說明水评,如有侵權(quán),請聯(lián)系 yunjia_community@tencent.com 刪除媚送。

原始發(fā)表時間:2019-12-12

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末中燥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子塘偎,更是在濱河造成了極大的恐慌疗涉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吟秩,死亡現(xiàn)場離奇詭異咱扣,居然都是意外死亡,警方通過查閱死者的電腦和手機涵防,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門闹伪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壮池,你說我怎么就攤上這事偏瓤。” “怎么了椰憋?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵厅克,是天一觀的道長。 經(jīng)常有香客問我橙依,道長证舟,這世上最難降的妖魔是什么硕旗? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮褪储,結(jié)果婚禮上卵渴,老公的妹妹穿的比我還像新娘。我一直安慰自己鲤竹,他們只是感情好浪读,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辛藻,像睡著了一般碘橘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吱肌,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天痘拆,我揣著相機與錄音,去河邊找鬼氮墨。 笑死纺蛆,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的规揪。 我是一名探鬼主播桥氏,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猛铅!你這毒婦竟也來了字支?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤奸忽,失蹤者是張志新(化名)和其女友劉穎堕伪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栗菜,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡欠雌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疙筹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桨昙。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腌歉,靈堂內(nèi)的尸體忽然破棺而出蛙酪,到底是詐尸還是另有隱情,我是刑警寧澤翘盖,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布桂塞,位于F島的核電站,受9級特大地震影響馍驯,放射性物質(zhì)發(fā)生泄漏阁危。R本人自食惡果不足惜玛痊,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狂打。 院中可真熱鬧擂煞,春花似錦、人聲如沸趴乡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晾捏。三九已至蒿涎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惦辛,已是汗流浹背劳秋。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胖齐,地道東北人玻淑。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像呀伙,于是被迫代替她去往敵國和親补履。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. 隨機森林模型 隨機森林是一種基于決策樹(Decisiontree)的高效的機器學(xué)習(xí)算法区匠,可以用于對樣本進行分...
    JarySun閱讀 5,735評論 0 20
  • QIIME 2不僅可用于處理標記基因分析干像,而且 在廣泛的用戶和社區(qū)人員參與開發(fā)下帅腌,已經(jīng)產(chǎn)生了很多 可用插件 驰弄,在未...
    吳十三和小可愛的札記閱讀 4,308評論 0 10
  • 什么是組間差異檢驗戚篙?就是組間的差異分析以及顯著性檢驗,應(yīng)用統(tǒng)計學(xué)上的假設(shè)檢驗方法溺职,檢驗組間是否有差異及其差異程度岔擂。...
    周運來就是我閱讀 295,847評論 5 273
  • 久違的晴天,家長會浪耘。 家長大會開好到教室時乱灵,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗七冲。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,492評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇隘谣!感恩不離不棄。 中午開了第一次的黨會抒蚜,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,551評論 0 11