R包vegan的典範相關分析(CCorA)

2021-02-20 小白魚的生統筆記
典範相關分析(canonical correlation analysis,CCorA)是描述兩組變量集之間整體相關性結構的方法,廣泛用於多元數據的分析中。它是多元相關(multiple correlation)概念的廣義化,適用於多元但存在多個相互關聯的結果變量的情況,在兩個多元數據集之間找到最佳線性組合,以使它們之間的相關係數最大化(Hotelling, 1936)。CCorA可以視為降維技術,因為它以更少的典範相關係數(canonical correlations)表示兩組變量之間的相關結構,典範相關係數反映了兩組典範變量之間的關聯強度。X和Y分別為n×p和n×q的矩陣,n為相同的對象數量,p和q為各自矩陣中的變量,且數量至少為2。典範相關分析首先對兩組多元數據集實現降維處理,這裡方便起見降維為一維向量為例。

然後計算降維後數據集之間的典範相關係數。


即可得到典範相關係數。如果上述降維為多個正交軸(最大min[p,q]),則得到各軸的典範相關係數。

 

CCorA(canonical correlation analysis)出現時間較早,早期也稱為CCA。但考慮到後來出現了典範對應分析(canonical correspondence analysis,CCA),為了區分二者,儘量避免使用CCA作為CCorA的簡稱。

CCorA屬於對稱分析(symmetrical analysis),兩組數據集相互之間無響應變量和解釋變量之分,二者地位等同。例如基因共表達、物種間互作、群落演替過程中物種-環境長期相互作用等。因此,CCorA是一種用於描述數據的探索性分析方法,而非確立因果關係的模型,不涉及假設檢驗過程。但如果有必要,仍可以通過置換檢驗確立相關性的顯著性。

如果分析的兩個數據集之間存在因果關係,例如常見的「處理-響應」類型,或者如物種(代表響應變量)與環境(代表解釋變量)之間的關係,推薦使用RDA、CCA等模型方法。

CCorA還可用於確定一組典範變量,即每個組內變量的正交線性組合,可以最好地解釋組內和組間的變異性。

CCorA要求兩組數據為符合多元正態分布的定量數據。且數據集中的變量具有不同的量綱時,需要標準化處理。

 

本篇簡介R包vegan的CCorA方法。

library(vegan)

#查看文檔,最下方的示例
?CCorA

vegan包的內置數據集「mite」,記錄了70個土壤觀測地點的35種甲蟎的個體數量,行為觀測地點,列為甲蟎物種。

library(vegan)
 
#甲蟎數據集
#詳情 https://www.rdocumentation.org/packages/vegan/versions/2.4-2/topics/mite
data(mite)
head(mite[ ,1:10])

 

接下來使用該甲蟎數據,展示vegan中的CCorA過程。

按照文檔中的示例,應該是期望確立兩組亞群甲蟎物種之間是否存在某種關聯(正相關可表示趨於共存,負相關可表示趨於競爭)。且兩組數據均為物種變量,地位等同。

#對土壤地點設置分組(分組參考自 Legendre 2005, Fig. 4 的 PCA)
group.1 <- c(1, 2, 4:8, 10:15, 17, 19:22, 24, 26:30)
group.2 <- c(3, 9, 16, 18, 23, 25, 31:35)
 
#按分組將物種多度數據拆分為兩組數據集
#物種多度數據分析,推薦執行 Hellinger 轉化
mite.hel.1 <- decostand(mite[,group.1], 'hel')
mite.hel.2 <- decostand(mite[,group.2], 'hel')
 
rownames(mite.hel.1) = paste('S', 1:nrow(mite), sep = '')
rownames(mite.hel.2) = paste('S', 1:nrow(mite), sep = '')

CCorA前,需確定兩組定量數據是否符合多元正態分布,可通過前述MANOVA中提到的Q-Q圖作評估。

#Q-Q 圖評估多元正態性
#若數據服從多元正態性,則點將落在直線附近
par(mfrow = c(1, 2))
 
qqplot(qchisq(ppoints(nrow(mite.hel.1)), df = ncol(mite.hel.1)), mahalanobis(mite.hel.1, colMeans(mite.hel.1), cov(mite.hel.1)))
abline(a = 0, b = 1)
 
qqplot(qchisq(ppoints(nrow(mite.hel.2)), df = ncol(mite.hel.2)), mahalanobis(mite.hel.2, colMeans(mite.hel.2), cov(mite.hel.2)))
abline(a = 0, b = 1)


「mite.hel.2」符合,但「mite.hel.1」偏離程度比較明顯。

理論上該「mite.hel.1」數據集不能繼續用於CCorA,但由於本文僅為示例演示,所以請允許我們忽略多元正態性的問題,繼續演示。

實際的情況中,不妨試下其它的轉化數據方法可不可行,否則不可使用。

 

vegan中,CCorA()用於執行CCorA。

#CCorA,詳情 ?CCorA
#Y 和 X 地位等同
#這裡兩組均為物種豐度,量綱一致,且 Hellinger 轉化降低了高豐度物種的權重,故無需對兩組數據集標準化
#若量綱不同(比如不同的環境變量),則需要將對應的數據集標準化
#999 次置換確定相關性的顯著性
out <- CCorA(Y = mite.hel.1, X = mite.hel.2, stand.Y = FALSE, stand.X = FALSE, permutations = 999)
out

Rank顯示了Y和X矩陣中的變量個數。

Pillai's trace是典範相關係數的和。

Significance of Pillai's trace為置換檢驗的結果,其中from F-distribution代表了隨機置換過程中所得的期望Pillai's trace,based on permutations代表了p值,這裡可知相關性是顯著的。

Canonical Correlations代表了各個軸的典範相關係數,它們的加和即等於Pillai's trace。通過前幾個有代表性的軸所示的相關性,兩組數據集整體相關程度很高。

RDA R squares,Y|X和X|Y的RDA的雙變量冗餘係數(R2),adj. RDA R squares是校正後的R2。它們嚴格來說不屬於CCorA的計算部分,但可以評估一組變量的總變差能夠由另一組變量在一個或多個正交軸上的解釋程度。因為即使R2很小時,也可能出現較大的典範相關係數,此時可根據R2評估典範相關係數的合理性。

 

對於主要信息的提取。

#根據 summary() 的提示,提取主要信息
summary(out)
 
#例如
#Pillai's trace
out$Pillai
#各個軸的典範相關係數
out$Eigenvalues
#校正後的 RDA R2
out$RDA.adj.Rsq
#置換檢驗 p 值
out$p.perm

 

上面給出了兩個數據集整體的相關性。

對於各變量間的相關性,例如我們想知道哪些物種和哪些物種之間存在較大的相關,可通過排序圖觀測。

vegan中提供了一些可視化方案,例如biplot()。biplot()一次會輸出兩個圖,分別代表矩陣Y和X。由於CCorA是對稱分析,所以兩個排序圖互有關聯,典範軸顯示了兩個矩陣的共同變化趨勢。每個排序圖都是兩組變量線性組合的結果,所以單個變量解讀比較困難,需兩個圖結合起來解讀。

#作圖觀測,如 biplot(),詳情 ?CCorA
#「objects」生成兩個對象圖,第一個表示 Y 矩陣中的對象,第二個表示 X 矩陣中的對象;以展示第 1、2 軸為例
biplot(out, plot.type = 'objects', plot.axes = c(1, 2))


#「variables」 生成兩個變量圖,第一個表示 Y 矩陣中的變量,第二個表示 X 矩陣中的變量;以展示第 1、2 軸為例
biplot(out, plot.type = 'variables', plot.axes = c(1, 2), cex = c(0.7, 0.6))


#「ov」生成四個圖,包含兩個對象和兩個變量;以展示第 1、2 軸為例
biplot(out, plot.type = 'ov', plot.axes = c(1, 2), cex = c(0.7, 0.6))


#「biplots」產生兩個雙序圖,第一個用於 Y 矩陣,第二個用於 X 矩陣;以展示第 1、2 軸為例
biplot(out, plot.type = 'biplots', plot.axes = c(1, 2), cex = c(0.7, 0.6))

 

好了我們結合上述這兩個雙序圖作個解讀,加深對這種變量間相關性的理解。CCorA中,變量間的相關性是通過在兩個數據集中,變量在對象中的相似分布特徵,作為呈現的。因此,排序圖中的相關性可以這樣解讀。

Hotelling, H. 1936. Relations between two sets of variates. Biometrika 28: 321-377.Legendre, P. 2005. Species associations: the Kendall coefficient of concordance revisited. Journal of Agricultural, Biological, and Environmental Statistics 10: 226-245.

相關焦點

  • R包vegan的典範對應分析(CCA)
    典範對應分析(canonical correspondence analysis,CCA)是單峰約束排序方法,是對應分析(CA)與多元回歸的結合,其算法源自冗餘分析(RDA)。與僅使用物種多度數據的CA相比,CCA可以結合多種環境變量一起分析,從而更好地反映群落與環境的關係。CCA的基本概念及其在群落分析中的應用,可參考前文。
  • 用db-RDA進行微生物環境因子分析-「ggvegan「介紹
    db-RDA 介紹distance-based redundancy analysis (db-RDA) 是目前在微生物領域應用的最為廣泛的環境因子分析,該分析方法內置在R中的vegan包中。相信大家一定都知道vegan包,該R包是進行生態學(包括微生物多樣性分析)研究的必備神器!vegan包中提供了所以基本排序分析的方法,可以說是一包在手搞定所有!
  • R_相關分析_Correlation
    相關分析定量描述兩個連續變量的相關關係(並不表示因果關係)。
  • R語言之冗餘分析(RDA)及方差分解(VPA)
    冗餘分析是Rao(1964)首次提出,在群落分析中,將物種多度的變化分解為與環境變量相關的變差(variation),常用於探索群落物種組成受環境變量約束的關係
  • 相關係數簡介及R計算
    Spearman秩相關依據兩列成對等級的各對等級數之差進行計算,所以又稱為「等級差數法」。當變量在至少是有序的尺度上測量時,它是合適的相關分析方法。Spearman秩相關係數計算如下:R包ggm中提供的命令pcor()可以計算偏相關係數。
  • 騷操作-將sna包中全部layout都要用ggplot模塊化展示出來
    /ori_data/ps_liu.rds")pscorMicro函數用於計算相關按照豐度過濾微生物表格,並卻計算相關矩陣,按照指定的閾值挑選矩陣中展示的數值。#微生物網絡構建參數設置#----#-提取豐度前百分之多少的otu進行構建網絡# N = 0.02# r.threshold=0.6# p.threshold=0.05#計算相關#----result = corMicro (ps = ps,N = 0.02,r.threshold=0.8,p.threshold=0.05,method
  • Take the 21-Day Vegan Challenge!
    Here is a list of the popular restaurants of spring 2018 that are vegan or offer amazing vegan options.And be sure to scan the QR code at the bottom to try Shanghai's 21-day vegan challenge!
  • 基於R語言的主成分和因子分析
    >)3)提取主成分4)主成分旋轉,當提取多個主成分時,對它們進行旋轉可使結果更具解釋性5)解釋結果6)計算主成分得分應用主成分分析使用psych包中的principal()函數,以下是該函數中參數的解釋:principal(r, nfactors
  • R語言 | Pearson、Spearman、Kendall、Polychoric、Polyserial相關係數簡介及R計算
    Spearman秩相關依據兩列成對等級的各對等級數之差進行計算,所以又稱為「等級差數法」。當變量在至少是有序的尺度上測量時,它是合適的相關分析方法。Spearman秩相關係數計算如下:R包ggm中提供的命令pcor()可以計算偏相關係數。
  • SPSS中的「相關」分析
    SPSS中有多個模塊中的多個指標反映變量間相關或關聯程度,現簡單介紹如下:一、相關分析有關統計量及意義(一)兩個計量資料的相關分析1、Pearson 相關係數最常用的相關係數,又稱積差相關係數,該係數的計算和檢驗為參數方法
  • R-相關性分析
    相關偏相關相關關係可視化第一部分: 相關性分析方法選擇相關分析是研究兩種或兩種以上隨機變量之間的關係的一種統計學方法,可以分析變量間的關係情況以及關係強弱程度等,如身高和體重之間的相關性。對於不同類型的變量,需選擇合適的相關性分析方法,我們常用的相關性分析方法及適用條件如下:1.1 Pearson相關係數最常用,又稱積差相關係數,適用於連續變量之間的相關性分析;使用條件:變量都需符合正態分布1.2 Spearman秩相關係數  適合含有有序分類變量或者全部是有序分類變量的相關性分析;但其屬於非參數方法,檢驗效能較Pearson係數低1.3 無序分類變量的相關性
  • NMDS非度量多維尺度分析—基於微生物群落
    (末尾有彩蛋)本文主要做NMDS分析並做一張完善的高質量圖片,提取stress值,推薦適合NMDS結果的差異分析並通過命令展示在圖形上,最後加上置信區間橢圓。非度量多維尺分析( NMDS)是一種很好的排序方法,因為它可以使用 具有生態學意義的 方法來度量群落差異 。一個好的 相異性測度與環境梯距離具有很好的秩 關係。
  • 群落分析中常見的數據轉化方法
    那麼,為什麼要對數據作轉化呢,有什麼必要呢,或者轉化後的數據會對我們的分析帶來怎樣的便利或幫助呢?下文作個簡介。本篇以生態學中的數據處理為背景作闡述。因為白魚同學讀研那會兒主要接觸的16S高通量測序數據,說白了就是土壤細菌群落分析。群落嘛,無論是物種數據還是環境數據,大類上歸屬於生態學的範疇了。所以,您若也接觸的群落相關的研究,本篇或許會有幫助。
  • 數據科學養成記 之 R語言基礎(2)——關於R包
    在上一節的學習中,我們已經學習了如何將數據導入R中進行數據分析。R作為一種主力的分析語言有著其獨特的優勢:大量的R包可供大家使用,提供方便快捷的數據分析,挖掘。目前有上千個R包(R package)可供大家使用,可從cran-r 下載。
  • 初見|-聚類分析原理及R語言的實現
    因此在對具體的事物進行分析的時候,確實是需要選擇一個較為符合實際情況的距離來刻畫類與類之間的關係。其實閔可夫斯基距離係數中r等於1時則為平均絕對距離,而當r等於2時則為平均歐式距離。這裡,當r趨向於無窮的時候,又可以引出切比雪夫(Chebyshev)距離:
  • 數據分析系列(3) | 如何用R語言進行相關係數與多變量的meta分析
    本文主體部分來自《全哥的學習生涯》,如需轉載請聯繫公眾號後臺。
  • 機器學習 · R語言包大全(共99個包)
    有很多R語言包都可以實現機器學習相關的思想和方法。我們將這些R包大致分類整理如下:神經網絡與深度學習,Neural Networks and Deep Learning,8個包遞歸劃分,Recursive Partitioning,14個包隨機森林,Random Forests,12個包正則化和收縮法,Regularized and Shrinkage Methods,25個包推進和梯度下降
  • Pearson、Spearman、Kendall、Polychoric、Polyserial相關係數簡介及R計算
    Spearman秩相關依據兩列成對等級的各對等級數之差進行計算,所以又稱為「等級差數法」。當變量在至少是有序的尺度上測量時,它是合適的相關分析方法。Spearman秩相關係數計算如下:R包ggm中提供的命令pcor()可以計算偏相關係數。
  • 6分鐘英語 | Could you go vegan?
    And if you eat no meat or animal products you’re what we call 』vegan』. More and more people around the world are going vegan如果你不吃肉或其他動物製品,你就是所謂的「素食主義者」。全世界越來越多的人正在變成素食主義者。