系統發育樹鄰接法(NJ)和非加權組平均法(UPGMA)之比較


1.原理的區別

主要區別在於,非加權組平均法(UPGMA)是基於平均鏈接方法的聚集層次聚類方法,而鄰接法(NJ)是基於最小演化准則的迭代聚類法。

UPGMA的假定條件是:在進化過程中,每一世系發生趨異的次數相同,即核苷酸或氨基酸的替換速率是均等且恆定的。

UPGMA生成有根樹,而NJ生成無根樹。由於UPGMA方法假定演化速率相等,因此分支末端相等,NJ方法允許不相等的演化速率,因此分支長度與變化量成正比。

UPGMA示意圖:
image.png

NJ示意圖:
image.png

UPGMA是一種簡單,快速但不可靠的方法,而NJ方法是一種相對較快的方法,與UPGMA方法相比,效果更好。 當然也要看具體目的。

二者區別總結:

image.png

2.實操比較

我用Plink處理得到樣本的親緣關系矩陣(IBD)文件,示例如下:

library(ape) #用於NJ法
df <- read.delim("prefix.ibdM0", sep = "\t",header=TRUE, row.names=1)
df[1:5,1:5]
df <- data.matrix(df)
str(df)

image.png

UPGMA

如果直接用親緣關系矩陣,hclust函數(stats包)識別不了。

#hclust對象需要轉化為距離
tr3 <- as.phylo(stats::hclust(df,method="average")) #UPGMA
str(tr3)
plot(tr3, cex=1)

image.png

使用dist計算距離:

tr4 <- as.phylo(hclust(dist(df),method="average"))
str(tr4)
plot(tr4, cex=1)

image.png

NJ法

而在NJ法中,有沒有dist都可以。但有沒有轉化距離二者還是有一些差別的,建議還是轉化后使用。

tr1 <- bionj(df)  #或nj(df)
str(tr1)
plot(tr1, cex=1)

tr2 <- bionj(dist(df))
str(tr2)
plot(tr2, cex=1)

沒用dist:
image.png
用dist:
image.png

保存樹文件

樹文件在R中是一個列表,包括節點和邊等信息:
image.png

保存樹文件:

write.tree(tr1,"test.nwk")

NJ和UPGMA生成的樹都可這樣保存,保存后就可導入其他軟件美化了。

更深理解

如果想要更進一步的了解,建議看看這個教程:
Module 24: An Intro to Phylogenetic Tree Construction in R
包含了極大似然法ML等。

Ref: https://pediaa.com/difference-between-upgma-and-neighbor-joining-tree/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM