更多内容请关注微信公众号 小马科研部落
R语言 UPGMA聚类分析
在生态学上,许多物种或环境因子,往往是离散的、不连续的。但许多统计学模型和计算方法往往是针对连续线性的模型。为了让非对称的物种数据可以用这些线性的统计模型,需要将数据进行一些转化。聚类分析也是需要先进行转化的。
UPGMA是微生物多样性分析中常用的聚类分析方法,它属于平均聚合聚类。
用UPGMA分别聚类Jaccard和Bray-Curtis相异系数的思路如下:
首先对原始的物种数据进行转化, decostand();
再计算Jaccard和Bray-Curtis相异系数,vegdist();
用UPGMA方法分别聚类上述相异系数,hclust();
画出聚类图。
其中decostand、vegdist都是vegan包里;hclust是在stats包里。
还是以out表格为例
首先启动R,设置数据的路径
otu1<-read.csv('otu.csv') #载入数据
otu2<-otu1[1:105,1:16] #需要1-105行和1-16列
otu<-t(otu2) #对数据进行倒置,让样本名在第一列。
otu #得到要分析的数据。
启动vegan和stats包
library(vegan)
library(stats)
计算otu的jaccard和Bray-Curtis相异系数矩阵
otu.norm<-decostand(otu,'normalize') #将原始数据进行处理
otu.ja<-vegdist(otu.norm,'jac',binary='TRUE') #计算处理后的数据的Jaccard相异系数矩阵
otu.bc<-vegdist(otu.norm,'bray') #计算处理后的数据的Bray-Curtis相异系数矩阵
write.csv(as.matrix(otu.ja),'otuja.csv') #将jaccard矩阵存为‘otuja.csv’文件
write.csv(as.matrix(otu.bc),'otubc.csv') #将Bray-Curtis矩阵存为‘otubc.csv’文件
根据UPGMA法聚类Jaccard和Bray-curtis矩阵,并作图
otu.ja.UPGMA<-hclust(otu.ja,method='average') #聚类Jaccard矩阵
otu.bc.UPGMA<-hclust(otu.bc,method='average') #聚类Bray-Curtis矩阵
plot(otu.ja.UPGMA) #画Jaccard矩阵聚类图
plot(otu.bc.UPGMA) #画Jaccard矩阵聚类图
如果想将2幅图放到一页纸上,可以用par(mfrow)命令
par(mfrow=c(1,2))
plot(otu.ja.UPGMA)
plot(otu.bc.UPGMA)
老规矩,还是现在notepad++里编写,在复制到R中进行运算。
此次是本次计算的代码,需要的拿走哈!
otu1<-read.csv('otu.csv')
otu2<-otu1[1:105,1:16]
otu<-t(otu2)
otu
library(vegan)
library(stats)
otu.norm<-decostand(otu,'normalize')
otu.ja<-vegdist(otu.norm,'jac',binary='TRUE')
otu.bc<-vegdist(otu.norm,'bray')
write.csv(as.matrix(otu.ja),'otuja.csv')
write.csv(as.matrix(otu.bc),'otubc.csv')
otu.ja.UPGMA<-hclust(otu.ja,method='average')
otu.bc.UPGMA<-hclust(otu.bc,method='average')
plot(otu.ja.UPGMA)
plot(otu.bc.UPGMA)
par(mfrow=c(1,2))
plot(otu.ja.UPGMA)
plot(otu.bc.UPGMA)
![UPGMA聚类]()
jac和bc 聚类树比较.png |