資料來源:https://www.freesion.com/article/2497946072/
這篇微文寫的非常棒,因此轉發至自己的智庫中,以便日后學習。
若有侵權,請聯系我。
衷心的感謝每一位知識的奉獻者。。。。
VPA,全稱Variance Partitioning Analysis,中文成為方差分解分析,該分析的目的是確定指定的環境因子對群落結構變化的解釋比例。
我們使用CCA/RDA的排序分析方法可以得到所有參與分析的環境因子對群落變化的解釋比例。
那么在進行VPA時,首先就要對這些環境因子進行一個分類,然后在約束其它類環境因子的情況下,對某一類環境因子進行排序分析,這種分析也成為偏分析,即partial CCA/RDA。
在對每一類環境因子均進行偏分析之后,即可計算出每一個環境因子單獨以及不同環境因子相互作用分別對生物群落變化的貢獻。
分析實戰
這里使用R語言vegan包的varpart()函數進行VPA分析,之后使用plot函數對結果進行可視化。
VPA是確定不同類型環境因子對群落變化的解釋,那么首先就要對環境因子進行一個分類,這個類怎么分呢?
簡單的說就是你自己想怎么分就怎么分,根據你研究的實際情況自己確定怎么分類。
兩種環境因子分類
當分析的環境因子只有兩類時,可以將兩類環境因子放在不同的數據框中進行分析。
首先我們導入示例數據。
data(mite)
data(mite.env)
data(mite.pcnm)
這里mite為群落豐度數據表格,行為樣本,列為物種;mite.env和mite.pcnm分別為兩個環境因子的數據表格,同樣行為樣本,列為環境因子。
mod <- varpart(mite, mite.env, mite.pcnm, transfo="hel")
mod
進行VPA的時候,第一個數據框為群落數據,之后兩個數據框分別代表兩類環境因子,transfo時對數據進行轉換,hel為hellinger轉換,可以避免分析的“弓形效應”。
在結果中我們看Individual fractions部分即可。
a為X1也就是命令中第二個數據框單獨對群落變化的貢獻。
c為X2也就是命令中第三個數據框單獨對群落變化的貢獻。
b為X1和X2的相互作用對群落變化的貢獻。
d為X1和X2無法解釋的群落變化。
使用plot()函數對結果進行可視化。
plot(mod, bg = c("hotpink","skyblue"))
三種及以上的分類
對與將環境因子分為3類或4類的情況,可以將環境因子放在同一個數據框中,之后使用formula的形式指定不同的分類因子。
mod <- varpart(mite, ~ SubsDens + WatrCont, ~ Substrate + Shrub + Topo,
mite.pcnm, data=mite.env, transfo="hel")
可以看到3種分類的結果就相對復雜一些,a-h的含義需要根據Partition table中的對應情況確定一下,這個我就不從頭捋一遍了,感興趣的朋友可以自行畫個交集和并集的圖分解一下。
為什么不捋一遍結果呢,是因為可視化之后解釋的比例就直接給出了????
plot(mod, bg=2:4)
VPA最多能將環境因子分為4組,再多就不行了,不過我想也幾乎不會遇到能夠將環境因子分為很多組的情況。
下面是干貨
做VPA分析對樣本的數量有一定的要求,記得最開始使用Canoco分析的時候,如果樣本數小于環境因子數目減2,軟件就會報錯。
也就是說樣本數目至少要比因子數目多2個,不要問我為什么,我也不知道為什么,沒研究過具體的算法,我只是只要如果環境因子比樣本數還多的話,就算做完了,結果也很奇葩,根本沒法解釋。
這對于一些大樣本量的研究項目當然不成問題,但是對于一些經費有效的研究,可能樣本數目就會是使用VPA的一個限制因素。
這里我有一個變通的方法,就是先對不同分類環境因子做降維分析,比如說PCoA,之后使用主要的PC的結果替代環境因子,從而達到降低實際使用因子數目的目的。
但是具體使用前幾個PC就要不斷的嘗試,根據結果進行調整了。
對于結果的可視化,R默認的結果圖確實不是很好看,關鍵還不太好調整,大家可以先默認出一個圖,然后把每一部分的解釋比例記下來,之后使用在線的Venn圖繪制工具,畫一個自己滿意的只有圓圈的Venn圖,再手動把解釋比例和環境因子的名稱給P上去