

CoCA有兩種型別,對稱模式的CoCA和非對稱模式的CoCA。
對稱模式的CoCA中,兩個物種丰度矩陣之間無解釋和被解釋的關係,二者地位等同。結果用於衡量兩矩陣間的共同結構,或者說某種型別的相關。
非對稱模式的CoCA中,採用了更為直接的迴歸模型,其中一個矩陣扮演響應角色,另一個矩陣扮演預測角色。在這種模式下,一組物種資料用於預測另一組。
本篇簡介R包cocorresp的CoCA方法,包含對稱和非對稱模式的CoCA。
cocorresp包的內建資料集beetles、plants,記錄了30個地點的甲蟲和維管植物物種丰度的觀測結果,包含126種甲蟲和231種維管植物類群。
library(cocorresp)
#資料集。詳情 ?beetles、?plants
data(beetles)
data(plants)
#為了使甲蟲資料集更加均一併具有穩定的方差,進行對數轉換
beetles <- log(beetles + 1)

接下來使用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
#直接輸入兩資料矩陣,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)




