R包cocorresp的協對應分析(CoCA)

R包cocorresp的協對應分析(CoCA)
協慣量分析CoIA)分析中,要求輸入的兩個資料集的行權重必須相等,在某種程度上限制了基於單峰響應的對應分析CA)方法的在CoIA中的使用。因此,CoIA大多用於表徵兩資料集之間的線性相關。
協對應分析(co-correspondence analysisCoCA)可將CoIA的思想與CA中的單峰方法結合在一起,在群落分析中,常用於對來自相同樣方的兩類不同類群物種丰度矩陣進行關聯(ter Braak and Schaffers, 2004)。CoCA首先對兩個物種丰度矩陣分別執行CA排序分解正交軸(特徵向量),之後融合兩組特徵向量,使代表最佳協慣量方向的軸的組合能夠最好地解釋兩個資料集中物種和觀測值之間的協變。
CoCA有兩種型別,對稱模式的CoCA和非對稱模式的CoCA
對稱模式的CoCA中,兩個物種丰度矩陣之間無解釋和被解釋的關係,二者地位等同。結果用於衡量兩矩陣間的共同結構,或者說某種型別的相關。
非對稱模式的CoCA中,採用了更為直接的迴歸模型,其中一個矩陣扮演響應角色,另一個矩陣扮演預測角色。在這種模式下,一組物種資料用於預測另一組。
本篇簡介RcocorrespCoCA方法,包含對稱和非對稱模式的CoCA
資料集

cocorresp包的內建資料集beetlesplants,記錄了30個地點的甲蟲和維管植物物種丰度的觀測結果,包含126種甲蟲和231種維管植物類群。
library(cocorresp)
#資料集。詳情 ?beetles、?plants

data(beetles)

data(plants)
#為了使甲蟲資料集更加均一併具有穩定的方差,進行對數轉換

beetles <- log(beetles + 1)

接下來使用CoCA,推測甲蟲類群和植物類群的相互關係。
對稱模式的CoCA
cocorresp中,CoCA透過coca()函式執行。
對稱模式的CoCA意在確立兩資料集之間的某種相關性,表徵共同結構。
##對稱 CoCA,詳情 ?coca
#直接輸入兩資料矩陣,method = 'symmetric' 意為執行對稱 CoCA,此時 y 和 x 的順序無關緊要

bp.sym <- coca(y = beetles, x = plants, method = 'symmetric')
#或者透過公式指定變數,這裡“~.”代表使用 plants 全部的物種變數

bp.sym <- coca(beetles ~ ., data = plants, method = 'symmetric')
bp.sym

summary(bp.sym)

結果中,我們通常期望CoCA軸的“Explained”儘可能與“Total”相當,且較少的CoCA軸能夠承載絕大部分的特徵值。

#提取主要資訊,例如

#names(bp.sym)
bp.sym$scores$site$X  #資料集 X 的物件在 CoCA 軸上的得分(座標)

bp.sym$scores$species$X  #據集 X 的變數在 CoCA 軸上的得分(座標)

bp.sym$scores$site$Y  #資料集 Y 的物件在 CoCA 軸上的得分(座標)

bp.sym$scores$species$Y  #據集 Y 的變數在 CoCA 軸上的得分(座標)

bp.sym$lambda  #各 CoCA 軸的特徵值

#透過特徵值折線圖,可以看到前 2-3 軸承載了絕大部分的協慣量

screeplot(bp.sym)

#獲取甲蟲和植物在 CoCA 軸上得分的相關性,可知它們之間是高度相關的

corAxis(bp.sym)

上述相關指的兩資料集整體的相關性。若對於單個變數間的關係,可透過排序圖評估。
繪製包含物件和變數的雙序圖,觀測兩個資料集中的物件和變數在CoCA協慣量軸中的投影位置。
#繪製雙序圖,觀測前兩軸中,兩個資料集的物件(樣方)和變數(物種)關係

#y1 表示資料集 Y(本示例為 beetles),y2 表示資料集 X(本示例為 plants)

layout(matrix(1:2, ncol = 2))

biplot(bp.sym, which = 'y1', main = 'Beetles', type = 'text', choices = 1:2)

biplot(bp.sym, which = 'y2', main = 'Plants', type = 'text', choices = 1:2)

結合兩圖,若某甲蟲物種和某植物物種均在靠近同一樣方的位置出現,則表明它們傾向於“共存”,即正相關關係。
非對稱模式的CoCA
在非對稱模式的CoCA中,基於某種迴歸模型,透過一個矩陣對另一矩陣建模,意在透過一個矩陣的結構推斷另一矩陣的結構。
##非對稱 CoCA,詳情 ?coca
#直接輸入兩資料矩陣,method = 'predictive' 意為執行模型 CoCA,此時 y 代表響應變數矩陣,x 代表預測變數矩陣

#reg.method 引數用於指定使用的模型

bp.pred <- coca(y = beetles, x = plants, method = 'predictive', reg.method = 'simpls')
#或者透過公式指定變數,這裡“~.”代表使用 plants 全部的物種變數預測 beetles 的物種

bp.pred <- coca(beetles ~ ., data = plants, method = 'predictive', reg.method = 'simpls')
bp.pred

summary(bp.pred)

結果中,我們通常期望較少的CoCA軸能夠解釋絕大部分的原資料集總慣量。

對於主要結果部分的檢視和提取,和上文對稱 CoCA中的方法類似。
接下來可透過交叉驗證評估選擇多少個軸觀測是合適的。
#交叉驗證,詳情 ?crossval

crossval(beetles, plants)

首先,選擇的軸數儘可能少;其次,交叉驗證結果中對應的值儘可能高。結果顯示選擇前兩軸是合適的。

並且在這種模型類的排序方法中,僅當排序軸顯著時,才具說服力。
#置換檢驗,999 次置換為例,詳情 ?permutest

bp.perm <- permutest(bp.pred, permutations = 999)

bp.perm

顯示前兩軸是顯著的。
模型CoCA的排序圖。和對稱CoCA的排序圖解讀方式相似,若某甲蟲物種和某植物物種均在靠近同一樣方的位置出現,則表明它們傾向存在“正協同”,該植物物種的數量增加時,該甲蟲物種的數量也增加。
#繪製雙序圖觀測前兩軸

layout(matrix(1:2, ncol = 2))

biplot(bp.pred, which = 'y1', main = 'Beetles', type = 'text', choices = 1:2)

biplot(bp.pred, which = 'y2', main = 'Plants', type = 'text', choices = 1:2)

參考資料
ter Braak, C.J.F and Schaffers, A.P. (2004) Co-Correspondence Analysis: a new ordination method to relate two community compositions. Ecology 85(3), 834-846
連結

相關文章