ggplot2之配对数据差异比较及结果可视化
寫在前面
從元旦之前,由于工作確實非常的多,所以更新的頻率持續(xù)下降,現(xiàn)在基本上是周更了,這種情況應(yīng)該還會要持續(xù)一段時間,可能要到4月或者5月才能恢復(fù)正常的更新頻率。
上一次給大家?guī)斫Y(jié)果可視化相關(guān)的推文好像有很長的時間了,這應(yīng)該是年前最后一篇推文了,給大家?guī)硪粋€不太常用,但是有時候又挺有用的結(jié)果圖繪制的方法。
什么是配對數(shù)據(jù)?
這篇推文主要介紹配對數(shù)據(jù)的差異檢驗并且實用箱圖加配對連線的方式來展示數(shù)據(jù)結(jié)果。
那什么是配對數(shù)據(jù)呢?
配對數(shù)據(jù)就是指兩組互相配對樣本同一變量的數(shù)值,有點類似于相關(guān)性分析中的兩組數(shù)據(jù),但是差別是相關(guān)性分析中的數(shù)據(jù)是同一批樣本的不同變量,而配對數(shù)據(jù)是同一變量的兩組互相匹配的樣本。
舉幾個簡單的例子,比如說同一批站位水體和沉積物的pH、鹽都等等,或者同一批污水處理廠進水和出水的營養(yǎng)物質(zhì)含量。
對于這種配對的數(shù)據(jù),雖然我們面對的是兩組不同的樣本,但實際上這兩組樣本之間是有聯(lián)系的,是存在一一對應(yīng)關(guān)系的。
差異檢驗
既然是配對的數(shù)據(jù),在進行差異檢驗的時候就不能使用普通的檢驗方式了。
配對的數(shù)據(jù)一般都是兩組,通常使用的差異檢驗方法就是配對t檢驗 (paired t-test)。
這里舉一個具體的例子來進行解釋和說明,比方說我現(xiàn)在想要比較同一個河流中一系列位點水體中游離態(tài)的細菌群落與顆粒物附著的細菌群落alpha多樣性之間的差異。
示例數(shù)據(jù)如下圖所示,第一列為分組列,第二列代表樣本的配對信息,之后幾列為待比較的alpha多樣性指數(shù)數(shù)據(jù)。
首先導入分析數(shù)據(jù),并指定分組因子。
bb <- read.table("alpha_diversity_1.txt",header = TRUE,sep = "\t")library(reshape2) bb1 <- melt(bb) bb$Group <- factor(bb$Group,levels = c("Free","Adherent")) bb1$Group <- factor(bb1$Group,levels = c("Free","Adherent"))之后使用配對t檢驗分析不同alpha多樣性指數(shù)的差異顯著性,并返回分析結(jié)果。
bb.sample <- colnames(bb)[3:ncol(bb)] test.b <- c() x <- c("a","b") y <- c("a","a")for (i in bb.sample) {fit1 <- t.test(as.formula(sprintf("%s ~ Group",i)),data = bb,paired = TRUE) if (fit1$p.value < 0.05) {res1 <- x}else{res1 <- y}test.b <- cbind(test.b,res1) } colnames(test.b) <- colnames(bb)[3:ncol(bb)] rownames(test.b) <- levels(bb$Group) test.b <- melt(test.b) colnames(test.b) <- c("Group","variable","value")最后會得到一個test.b的數(shù)據(jù)框,在第三列以不同的小寫字母表示差異檢驗的結(jié)果。
??這個數(shù)據(jù)是我隨機生成的,所以全都沒有顯著性差異。
結(jié)果可視化
首先構(gòu)建用于繪圖的數(shù)據(jù)。
library(tidyverse) test.b1 <- bb[,c(1,3:ncol(bb))] %>% gather(variable,value,-Group) %>% group_by(variable,Group) %>% summarise(Max = max(value)) test.b11 <- dcast(test.b1,Group~variable)for (i in 2:ncol(test.b11)) {test.b11[,i] <- test.b11[,i] + max(test.b11[,i])*0.015} test.b11 <- melt(test.b11) test.b1 <- merge(test.b1,test.b11,by = c("variable","Group")) test.b2 <- merge(test.b,test.b1,by = c("variable","Group"))bb1$variable <- factor(bb1$variable,levels = c("Chao1","ACE","Shannon","Simpson")) test.b2$variable <- factor(test.b2$variable,levels = c("Chao1","ACE","Shannon","Simpson"))之后進行結(jié)果的可視化。
library(ggplot2) cbbPalette <- c("#B2182B","#56B4E9") p <- ggplot(bb1,aes(Group,value)) + geom_boxplot(aes(color = Group),outlier.size = 0,size = 0.8) +geom_line(aes(group = Paired),color = "grey70") +geom_point(aes(color = Group),size = 2.5,alpha = 0.5) +geom_text(data = test.b2,aes(x = Group,y = value.y,label = value.x),size = 6,color = "black",fontface = "bold") +scale_color_manual(values = cbbPalette) +ylab("The alpha diversity indices between free\nand adherent bacterial communities ") +facet_wrap(.~variable,ncol = 2,scales = "free_y") +theme_bw()+theme(axis.ticks.length = unit(0.4,"lines"), axis.ticks = element_line(color='black'),axis.line = element_line(colour = "black"), axis.title.x=element_blank(),axis.title.y=element_text(colour='black', size=18,face = "bold",vjust = 1.5),axis.text.y=element_text(colour='black',size=13,face = "bold"),axis.text.x=element_text(colour = "black",size = 14,face = "bold"),strip.text = element_text(colour = "black",size = 18,face = "bold"),legend.position = "none")這里使用箱須圖表示兩組數(shù)據(jù)的分布情況,之后使用散點+連線的方式表示數(shù)據(jù)的配對關(guān)系,最后應(yīng)用不同的小寫字母來表示數(shù)據(jù)的差異顯著性。
之后保存圖片即可。
png("alpha_diversity_1.png",width = 4000,height = 3600,res = 600) p dev.off() pdf("alpha_diversity_1.pdf",width = 7,height = 6) p dev.off()代碼的詳細解釋我就不寫了,其實挺簡單的,都是非常基礎(chǔ)的東西,主要就是注意兩點,一個是不同圖層填充顏色的透明度,另一個就是箱子、點和線3個圖層添加的先后順序。
關(guān)注公眾號“紅皇后學術(shù)”,后臺恢復(fù)“配對檢驗”獲取繪圖實例的代碼!!
往期精品(點擊圖片直達文字對應(yīng)教程)
機器學習
后臺回復(fù)“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結(jié)
以上是生活随笔為你收集整理的ggplot2之配对数据差异比较及结果可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法-随机森林初探(1)
- 下一篇: 上期送书中奖名单