微生物多样性qiime2分析流程(12) 数据可视化分析(中) 之RDA,CCA分析

常用的排序方法如下:
间接排序法包括:

*   PCA(principal components analysis,主成分分析)
*   CA(correspondence analysis,对应分析)
*   DCA(Detrended correspondenceanalysis, 去趋势对应分析)
*   PCoA(principal coordinate analysis,主坐标分析)
*   NMDS(non-metric multi-dimensional scaling,非度量多维尺度分析);

直接排序法包括:
*   RDA(Redundancy analysis,冗余分析)
*   CCA(canonical correspondence analysis,典范对应分析)
*   dbRDA(distance based redundancy analysis,基于距离的冗余分析)
*   CAP(canonical analysis of principal coordinates,主要坐标的典型分析)

其中PCA和RDA是基于线性模型(linear model)的,
而CA、DCA、CCA、DCCA是基于单峰(unimodal)模型

选择单峰模型还是线性模型?

用DCA(vegan::decorana())先对数据(site-species)进行分析;
查看结果中的“Axis lengths”的第一轴DCA1的值,
根据该值判断该采用线性模型还是单峰模型:
如果大于4.0,就应该选单峰模型;
如果3.0-4.0之间,选线性模型或者单峰模型均可;
如果小于3.0, 线性模型的结果要好于单峰模型
rm(list = ls())
pacman::p_load(tidyverse,vegan,ggrepel)  
species <- read.delim("phylum.top10.xls",header = T,
                  row.names = 1,check.names = F,sep="\t") %>% 
  t() %>% decostand(method = "hellinger")

envi <- read.delim("env1.log10.txt",
header = T,row.names = 1,check.names = F,sep="\t")

grp <- read.delim("group.xls",header = T,check.names = F,sep="\t")

decorana(species)
#根据看分析结果中Axis Lengths的第一轴的大小
#如果大于4.0,就应选CCA(基于单峰模型,典范对应分析)
#如果在3.0-4.0之间,选RDA和CCA均可
#如果小于3.0, RDA的结果会更合理(基于线性模型,冗余分析)

p <- rda(species~.,envi) %>% summary()
sp <- as.data.frame(p$species[,1:2])*2
st <- as.data.frame(p$sites[,1:2])
yz <- as.data.frame(p$biplot[,1:2])
ggplot() + geom_point(data=st,aes(RDA1,RDA2,
                                  shape=grp$group,fill=grp$group),size=3)+
  scale_shape_manual(values =c(18,19,21))+
  geom_segment(data = sp,aes(x = 0, y = 0, xend = RDA1, yend = RDA2), 
               arrow = arrow(angle=22.5,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1,
 size=0.6,colour = "#E69F00")+
  geom_text_repel(data = sp,aes(RDA1,RDA2),label=row.names(sp))+
  geom_segment(data = yz,aes(x = 0, y = 0,
xend = RDA1, yend = RDA2), 
               arrow = arrow(angle=45,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1,
               size=0.6,colour = "steelblue")+
  geom_text_repel(data = yz,aes(RDA1,RDA2,label=row.names(yz)))+
  labs(x=paste("RDA1(", format(100*p$cont[[1]][2,1],
digits=4),"%)",sep=""),
       y=paste("RDA2 (", format(100*p$cont[[1]][2,2], 
digits=4),"%)", sep=""))+
  geom_hline(yintercept=0,linetype=3,size=1) + 
  geom_vline(xintercept=0,linetype=3,size=1)+
  guides(shape=guide_legend(title=NULL,color="black"),
         fill=guide_legend(title=NULL))+
  theme_bw()+theme(panel.grid=element_blank())
rda.jpeg
rm(list=ls())
pacman::p_load(tidyverse,vegan,ggrepel)  
sample <- read.table("otu_table.txt", header = T, 
                         row.names=1,sep="\t") %>% t()
env <- read.table("environment.txt", header=TRUE, row.names=1,sep="\t")
group <- read.table("groups.txt", header=T) %>% as.list()
decorana(sample)
cca <- cca(sample, env, scale = TRUE)
p <- scores(cca)
CCAE <- as.data.frame(cca$CCA$biplot[,1:2])
plotdata <- data.frame(rownames(p$sites), p$sites[,1],p$sites[,2], group$group)
colnames(plotdata) <- c("sample","CCAS1","CCAS2","group")
#----------------------------------------------------------------------------------
ggplot(plotdata, aes(CCAS1, CCAS2)) +
  geom_label_repel(aes(CCAS1, CCAS2, label = sample), fill = "white",
                   color = "black", box.padding = unit(0.6,"lines"),
                   segment.colour = "grey50",
                   label.padding = unit(0.35,"lines")) +  
  geom_point(aes(fill = group,color=group),size = 3) + 
  labs(title = "CCA Plot",
       x = round(cca$CCA$eig[1]/sum(cca$CCA$eig)*100,2) %>%
  paste0("CCA1 ( ",.,"%"," )"),
       y = round(cca$CCA$eig[2]/sum(cca$CCA$eig)*100,2) %>%
  paste0("CCA2 ( ",.,"%"," )")) +
  geom_segment(data = CCAE, aes(x = 0, y = 0, xend = CCAE[,1], yend = CCAE[,2]),
               colour = "black", size = 1.2,
               arrow = arrow(angle = 30, length = unit(0.4, "cm"))) +
  geom_label_repel(data = CCAE, fill = "grey90",segment.colour = "black",
                   aes(x = CCAE[,1], y = CCAE[,2], label = rownames(CCAE))) +
  geom_vline(aes(xintercept = 0), linetype = "dotted") +
  geom_hline(aes(yintercept = 0), linetype = "dotted") +
  theme(panel.background = element_rect(fill = "white", colour = "black"), 
        panel.grid = element_blank(),
        axis.title = element_text(color = "black", size = 12),
        axis.ticks.length = unit(0.4,"lines"),
        axis.ticks = element_line(color = "black"),
        axis.line = element_line(colour = "black"),
        axis.title.x = element_text(colour = "black", size = 12),
        axis.title.y = element_text(colour="black", size = 12),
        axis.text = element_text(colour = "black", size = 12),
        legend.title = element_blank(),
        legend.text = element_text(size = 12), legend.key = element_blank(),
        plot.title = element_text(size = 14, colour = "black", 
                                  face = "plain", hjust = 0.5))  
cca.jpeg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容