R包ade4的AMOVA分析

R包ade4的AMOVA分析
AMOVAAnalysis of molecular variance)是一種非引數分析方法,基於物件間距離檢驗組間差異的顯著性。
AMOVA最初是針對DNA單倍型實施的,利用分子標記檢測種群分化,透過進化距離(evolutionary distance)度量並計算單倍型(含等位基因)或基因型間的方差(δ2),推斷群體遺傳變異水平。後經拓展,可適用於任何標記系統(marker system),例如AFLPSNPSSR等標記,廣泛用於遺傳多樣性和群體遺傳結構研究中。
本篇簡介使用Rade4,執行AMOVA
示例資料集
ade4中的內建資料集humDNAm,提供了10種人群中線粒體DNA限制性位點的單倍型頻率。(https://rdrr.io/cran/ade4/man/humDNAm.html
humDNAm 3組資料的列表:
distances56個單倍型的距離(距離矩陣,歐式距離屬性),透過計算每兩個單倍型之間限制性位點的差異數獲得的;
samples10種人群中56個單倍型的丰度;
structures10種人群所處的地區名稱。
library(ade4)
data(humDNAm)
names(humDNAm)

as.matrix(humDNAm$distance)[1:6,1:6]

head(humDNAm$samples)

head(humDNAm$structures)

ade4包的AMOVA方法
接下來使用AMOVA,目的為透過單倍型之間的一些分子差異測量以細分人群。如果觀測到人群之間存在較大方差,則有證據支援預期的結構。
ade4包中執行AMOVA的函式為amova()
#初步計算,詳情 ?amova

#注:amova() 中輸入的距離矩陣必須為歐氏距離屬性,否則會報錯

amovahum <- amova(samples = humDNAm$samples, distances = sqrt(humDNAm$distances), structures = humDNAm$structures)

amovahum

result中,分別顯示每個分層的Df(自由度)、Sum Sq(總方差,即離差平方和)、Mean Sq (均方差,即SS/df)等統計指標。
componentsofcovariance中,顯示了在每個分層中檢測到的變異。Sigma代表了每個層次結構級別的方差,%代表了方差佔比。
statphi中,Phi表徵了人群分化的程度,值越高越明顯。

如果對其中某些內容感興趣,可以提取輸出。
#例如

amovahum$result

amovahum$componentsofcovariance

amovahum$statphi
write.table(amovahum$componentsofcovariance, 'componentsofcovariance.txt', sep = '\t', col.names = NA, quote = FALSE)

置換檢驗
由於初始結果中未進行精確的檢驗,因此我們無法得知差異水平的顯著性。randtest()提供了基於置換的方法用於測試。
#這裡隨機置換 99 次為例,詳情 ?randtest

randtesthum <- randtest(amovahum, nrepet = 99)

randtesthum
plot(randtesthum)

人群分化程度的顯著性檢驗顯示,存在顯著的人群結構。(如果不顯著,p值大於0.05

同時在三個直方圖中,直方圖代表隨機分佈,黑線代表實際觀測的資料,由圖可知,存在顯著的人群結構。(如果不顯著,則黑線將與直方圖區域存在較大的重疊)

如果對其中某些內容感興趣,可以提取輸出。
#例如

summary(randtesthum)
randtesthum$expvar

randtesthum$adj.pvalue

randtesthum$plot

對於非歐式距離的輸入
上述提到,amova()中輸入的距離矩陣必須為歐氏距離屬性,否則會報錯。
但不幸的是,許多遺傳距離測度並不總是歐氏幾何性質的。如果有必要用到其它型別的距離測度,則需要在使用時作個轉化,例如常見的平方根轉化等。

之後將轉化後的距離用作amova()的輸入,就可以了。
連結

相關文章