library(ade4)
library(ggplot2)
library(RColorBrewer)
library(vegan)
这里我们使用R自带得数据iris
data(iris)
在R语言中通常都会使用这个数据进行案例分析
#iris
data(iris)
iris
data01<-iris[,-5]#数据预处理,去掉最后一列得数据标签
data01
dis01<-vegdist(data01,method = "euclidean")#这里是为了算矩阵距离,方法根据数据选择合适得方法
dis01
pcoa1<- dudi.pco(dis01, scan = FALSE,nf=3)#进行PCoA分析
pcoa1
pcoa1_eig<-pcoa1$eig[1:2]/sum(pcoa1$eig)#算一下前两列对整个数据得解释比例
pcoa1_eig
samplesite1<-data.frame({pcoa1$li})[1:2]#将前两列的数据分析结果放到sample_site1里面
sample_site1
sample_site1$names<-rownames(sample_site1)#设置名称
sample_site1$names
iris$Species
sample_site1$level<-factor(iris$Species,levels = c("setosa","versicolor","virginica"))#设置level的标签
sample_site1$level
names(sample_site1)[1:2]<-c("PCoA1","PCoA2")
p<-ggplot(sample_site1, mapping=aes(PCoA1, PCoA2,color=level))+theme_classic()
p<-p+geom_point()#绘制散点图
p
,即主坐标分析(Principal Coordinates Analysis),是一种 用于研究样本微生物群落组成相似性或差异性 的数据降维分析方法。PC1 和PC2 是两个主坐标成分,图中每个点代表一个样本,点的颜色代表样本的分组,样本间的距离越近代表微生物群落结构越相似。图中圆圈一般是置信水平为95%时的置信椭圆,用于比较组间的群落结构组成相似性。
计算β多样性指数需要用到phyloseq包。它的安装方式不同于简单的install.packages(“phyloseq”)
有两种方法可以安装
1.先安装BiocManager
install.packages("BiocManager")
library("BiocManager")
BiocManager::install("phyloseq")
library("phyloseq")
2.source("https://bioconductor.org/biocLite.R")
biocLite("phyloseq")
#安装phyloseq
library("phyloseq")
安装并加载了phyloseq包后,开始读取数据,前面计算α多样性,用到的是read.table……
qiimedata <- import_qiime(otufilename = "feature-table.taxonomy.txt", mapfilename = "mapping_file.txt", treefilename = "tree.rooted.nwk", refseqfilename = "dna-sequences.fasta")
#读取数据,参数都是文件名,注意加后缀
#otufilename指定out表格,mapfilename指定map文件(分组数据)
#treefilename指定有根进化树文件
#refseqfilename指定代表序列文件
otu<-qiimedata@[email protected]
#从qiimedata里面提取otu
sum_of_otus<-colSums(t(otu))
#t_转置,colsums计算列的和,即计算各个otu检测到的总序列数,为了筛掉一些总序列数过低的otu(可能是测序错误)
sum_of_otus
#查看otu总序列数
selected_otu<-names(sum_of_otus)[sum_of_otus>10]
#获取总序列数大于10的otu id
sub_qiimedata <- prune_taxa(selected_otu, qiimedata)
#筛选总序列数大于10的otu的phyloseq数据
weighted_unifrac<-distance(sub_qiimedata,method = 'wunifrac')
#计算样本间加权unifrac
unweighted_unifrac<-distance(sub_qiimedata,method = 'unifrac')
#计算样本间非加权unifrac
bray_curtis <- distance(sub_qiimedata, method='bray')
write.table(as.matrix(bray_curtis),"bray_curtis.txt",sep = '\t',quote = FALSE,col.names = NA)
#保存距离矩阵
#计算样本间Bray-Curtis距离矩阵,method 可选" wunifrac ", " unifrac " ,"jaccard"等
pcoa_of_bray_curtis<-ordinate(physeq=sub_qiimedata,distance = 'bray',method = "PCoA")
#基于Bray-Curtis距离矩阵的PCoA排序分析
p<-plot_ordination(sub_qiimedata, pcoa_of_bray_curtis, type="samples", color="Group1",shape = "Group1")
#将PCoA排序分析结果可视化
library("ggplot2")
p<-p+ scale_colour_manual(values=c("#DC143C","#808000","#00CED1")) + geom_point(size=2) +ggtitle("PCoA of Bray-Curtis distance")+theme(text = element_text(size = 15))
#修改图形大小,ggtitle加标题,stat_ellipse加椭圆
#用scale_colour_manual(values=c())自定义颜色,可查颜色的16进制对照表
p
nmds_of_bray_curtis<-ordinate(physeq=sub_qiimedata,distance = 'bray',method = "NMDS")
#基于Bray-Curtis距离矩阵的NMDS排序分析
p1<-plot_ordination(qiimedata, nmds_of_bray_curtis, type="samples", color="Group1")
#将NMDS排序分析结果可视化
# color=“Group1”指定不同分组的点染不同颜色
p1
p1<-p1+ geom_point(size=3) +ggtitle("NMDS of Bray-Curtis distance") + stat_ellipse()+theme(text = element_text(size = 15))
#对图片进行适当修饰, stat_ellipse()加椭圆, ggtitle()加标题
ggsave(plot = p1,“nmds_of_bary_curtis.pdf",dpi = 300,width
PCoA中的两个点距离,接近β多样性指数
PCA(Principal Components Analysis)即主成分分析,也称主分量分析或主成分回归分析法,首先利用线性变换,将数据变换到一个新的坐标系统中然后再利用降维的思想,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上。这种降维的思想首先减少数据集的维数,同时还保持数据集的对方差贡献最大的特征,最终使数据直观呈现在二维坐标系。
PCoA(Principal Co-ordinates Analysis)分析即主坐标分析,可呈现研究数据相似性或差异性的可视化坐标,是一种非约束性的数据降维分析方法,可用来研究样本群落组成的相似性或相异性。它与PCA类似,通过一系列的特征值和特征向量进行排序后,选择主要排在前几位的特征值,找到距离矩阵中最主要的坐标,结果是数据矩阵的一个旋转,它没有改变样本点之间的相互位置关系,只是改变了坐标系统。两者的区别为PCA是基于样本的相似系数矩阵(如欧式距离)来寻找主成分,而PCoA是基于距离矩阵(欧式距离以外的其他距离)来寻找主坐标。
NMDS图中两个点的距离的排序,接近β多样性指数的排序