欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

R 实用|替换多变量方差分析(以 PCoA 的 PERMANOVA 分析为例)

最编程 2024-04-17 18:32:53
...
# Load package library(vegan) library(ggplot2) library(ggthemes) # Load data otu <- read.table('otu.txt',row.names = 1,header = T) group <- read.table('group.txt',header = T) #pcoa # vegdist函数,计算距离;method参数,选择距离类型 distance <- vegdist(otu, method = 'bray') # 对加权距离进行PCoA分析 pcoa <- cmdscale(distance, k = (nrow(otu) - 1), eig = TRUE) ## plot data # 提取样本点坐标 plot_data <- data.frame({pcoa$point})[1:2] # 提取列名,便于后面操作。 plot_data$ID <- rownames(plot_data) names(plot_data)[1:2] <- c('PCoA1', 'PCoA2') # eig记录了PCoA排序结果中,主要排序轴的特征值(再除以特征值总和就是各轴的解释量) eig = pcoa$eig #为样本点坐标添加分组信息 plot_data <- merge(plot_data, group, by = 'ID', all.x = TRUE) head(plot_data) # 计算加权bray-curtis距离 dune_dist <- vegdist(otu, method="bray", binary=F) dune_pcoa <- cmdscale(dune_dist, k=(nrow(otu) - 1), eig=T) dune_pcoa_points <- as.data.frame(dune_pcoa$points) sum_eig <- sum(dune_pcoa$eig) eig_percent <- round(dune_pcoa$eig/sum_eig*100,1) colnames(dune_pcoa_points) <- paste0("PCoA", 1:3) dune_pcoa_result <- cbind(dune_pcoa_points, group) head(dune_pcoa_result) library(ggplot2) ggplot(dune_pcoa_result, aes(x=PCoA1, y=PCoA2, fill=group)) + geom_point(shape = 21,color = 'black',size=4) + stat_ellipse(level=0.95)+ scale_fill_manual(values = c('#73bbaf','#d15b64','#592c93'))+ labs(x=paste("PCoA 1 (", eig_percent[1], "%)", sep=""), y=paste("PCoA 2 (", eig_percent[2], "%)", sep="")) + theme_classic()