在微生物生態學領域,經常用的mantel檢驗,原理來講,很是簡單,就是一個距離矩陣的相關分析而已,但是這層窗戶紙似乎存在很長時間,大家都對這個分析的原理有些忌憚,所以今天就之前的文檔,來告訴大家如何理解mantel並且在一些文章中的運用做一個解釋。
數據框—矩陣—距離矩陣這三個數據類型類似,但是在R語言中是區分的,我們要做一個了解:
注意,距離矩陣是只有左下方一半的對角陣。
#數據框
data.frame()
as.data.frame()
# 矩陣
matrix()
as.matrix()
# 距離矩陣
dist()
as.dist()
mantel檢驗在生態中運用的十分多,尤其是在微生物群落和環境因子之間關係的檢驗上:
。
mantel檢驗是Mantel’s 在1967年提出來的,基於回歸分析。
使用相似性距離或者相異性距離矩陣來做雙向檢驗。
計算原理x矩陣中的每個元素與均值的差與y矩陣每個元素與均值的差的乘積與像個矩陣的的標準差之乘積的商。這樣標準化之後整個數值就會在1到-1之間。
function (xdis, ydis, method = "pearson", permutations = 999,
strata = NULL, na.rm = FALSE, parallel = getOption("mc.cores"))
{
EPS <- sqrt(.Machine$double.eps)
xdis <- as.dist(xdis)
ydis <- as.vector(as.dist(ydis))
if (na.rm)
use <- "complete.obs"
else use <- "all.obs"
statistic <- cor(as.vector(xdis), ydis, method = method,
use = use)
········
這裡我們就可以看到首先將兩個矩陣轉換為距離矩陣,然後轉化為向量as.vector,後使用cor函數計算相關性 statistic,這便是我們所得到的相關係數:
library(vegan)
## Is vegetation related to environment?
data(varespec)
data(varechem)
veg.dist <- vegdist(varespec) # Bray-Curtis
env.dist <- vegdist(scale(varechem), "euclid")
mantel(veg.dist, env.dist)
mantel(veg.dist, env.dist, method="spear")
這份ppt來自google,大家在後面參考部分可以查看原版全部ppt,並且可下載。相關性R值從-1 (neg.) to 0 (no effect) to +1 (pos.)這從我們之前的公式也基本上推測出來了,標準化到了一個區間,可以用於比較。並且在默認情況下為999次置換檢驗。所以完全可以將mantel檢驗可視化出來,使用矩陣的元素,將mantel檢驗兩個矩陣用做一張相關性圖表,類似於下圖來做展示結果之用。
關於距離矩陣和單列變量的相關性計算因為mantel相關實際上就是使用的距離矩陣的線性相關分析,所以這裡我們思考一下就一個矩陣和一列變量之間的樣本的相關性。
就矩陣而言,矩陣求取距離即可。
也就是樣本之間的距離。
就單列的變量而言,樣本之間的距離,可以理解為這列數值的數學距離,當然似乎只有這一種距離,所以在文章中也常見的是這種情況。
如此我們便理解,一個矩陣和一個便量是如何出來一個線性相關的圖表的。
這裡我們即可理解微生物系統發育分析中bNTI於環境變量之間相關關係的理解。
reference協方差的含義:
https://blog.csdn.net/xiao_lxl/article/details/72730000
相關係數和協方差等是什麼關係,如何理解?
https://www.cnblogs.com/renpfly/p/9555959.html
相關係數的檢驗:
https://www.cnblogs.com/jiangleads/p/9022026.html
由此下載mantel檢驗的原理:
http://www.pelagicos.net/MARS6300/lectures/MARS6300_Lecture21_sp2018.pdf
加主編微信 加入群聊關於微生信生物 你想要的都在這裡微生信生物