午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

統(tǒng)計(jì) | R語言執(zhí)行兩組間差異分析Wilcox秩和檢驗(yàn)

 生物_醫(yī)藥_科研 2021-12-24
兩組間差異的非參數(shù)檢驗(yàn)之Wilcox秩和檢驗(yàn)在R中實(shí)現(xiàn)

在進(jìn)行兩組數(shù)據(jù)間的差異分析時(shí),我們通常會(huì)想到使用t檢驗(yàn)但若數(shù)據(jù)不滿足執(zhí)行t檢驗(yàn)的參數(shù)假設(shè)(例如數(shù)據(jù)分布不符合正態(tài)性,變量在本質(zhì)上就嚴(yán)重偏倚或呈現(xiàn)有序關(guān)系),無法使用t檢驗(yàn)分析時(shí),可以考慮使用非參數(shù)的方法來完成。

就兩組數(shù)據(jù)的比較而言,wilcox秩和檢驗(yàn)(或稱Mann-Whitney U檢驗(yàn))是常見的非參數(shù)檢驗(yàn)方法之一。本文簡(jiǎn)介怎樣在R中進(jìn)行wilcox秩和檢驗(yàn),以實(shí)現(xiàn)兩組間非參數(shù)差異分析。
本文使用的作圖數(shù)據(jù)的網(wǎng)盤鏈接(提取碼o8lr):
https://pan.baidu.com/s/1b-1INL4HFrsIOvs_0UfByw
文件“alpha.txt”為某16S細(xì)菌群落測(cè)序所獲得的部分alpha多樣性指數(shù)數(shù)據(jù),包含3列信息:sample,樣本名稱;observed_species和shannon分別為兩種類型的alpha多樣性指數(shù)。文件“group.txt”為各樣本分組信息,第一列(sample)為各樣本名稱;第二列(group)為各樣本的分組信息。
以上使用的示例數(shù)據(jù)與前文“R語言執(zhí)行兩組間差異分析T檢驗(yàn)”中的數(shù)據(jù)一致。已知group3的shannon指數(shù)數(shù)據(jù)分布并不符合正態(tài)性,此時(shí),若我們想比較group2和group3的shannon指數(shù)間是否存在顯著差異,就不適合使用t檢驗(yàn)(暫且不考慮對(duì)數(shù)據(jù)進(jìn)行合理的轉(zhuǎn)化后是否會(huì)滿足t檢驗(yàn)的參數(shù)假設(shè)),可采用非參數(shù)的方法(本文中介紹使用wilcox秩和檢驗(yàn))去實(shí)現(xiàn)。

數(shù)據(jù)預(yù)處理及正態(tài)性假設(shè)檢驗(yàn)



首先將上述兩個(gè)數(shù)據(jù)表讀入R中,并合并在一起,以及數(shù)據(jù)的正態(tài)分布檢驗(yàn)。
library(reshape2)

#讀入文件,合并分組信息,數(shù)據(jù)重排
alpha <- read.table('alpha.txt', sep = '\t', header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
group <- read.table('group.txt', sep = '\t', header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
alpha <- melt(merge(alpha, group, by = 'sample'), id = c('sample', 'group'))

#選擇要比較的分組(此處查看 group1 與 group2 在 shannon 指數(shù)上是否存在顯著差異)
shannon_23 <- subset(alpha, variable == 'shannon' & group %in% c('2', '3'))
shannon_23$group <- factor(shannon_23$group)
head(shannon_23, 10)

#Shapiro-Wilk 檢驗(yàn)數(shù)據(jù)是否符合正態(tài)分布(發(fā)現(xiàn)不符合正態(tài)分布)
tapply(shannon_23$value, shannon_23$group, shapiro.test)

選取的數(shù)據(jù)框“shannon_23”內(nèi)容如下所示。第一列(sample),兩組數(shù)據(jù)中所含樣本名稱;第二列(group),兩組分組名稱,且分組列已轉(zhuǎn)化為因子類型;第三列(variable),alpha多樣性指數(shù)shannon指數(shù);第四列(value),shannon指數(shù)的數(shù)值。

通過Shapiro-Wilk檢驗(yàn)得知數(shù)據(jù)分布不滿足正態(tài)性。這里p值小于0.05表明數(shù)據(jù)違背了正態(tài)性分布的零假設(shè)。




Wilcoxon檢驗(yàn)



不符合正態(tài)性前提的數(shù)據(jù),無法應(yīng)用t檢驗(yàn)去比較差異。我們考慮使用非參數(shù)的方法作為替代,對(duì)于兩組數(shù)據(jù)的比較,可使用wilcoxon檢驗(yàn)。類似于t檢驗(yàn),根據(jù)樣本間是否獨(dú)立,wilcoxon檢驗(yàn)分為wilcox秩和檢驗(yàn)以及wilcox符號(hào)秩和檢驗(yàn)。


wilcox秩和檢驗(yàn)

假設(shè)樣本間是相互獨(dú)立的,直接使用wilcox秩和檢驗(yàn)去處理。它是獨(dú)立樣本t檢驗(yàn)的一種非參數(shù)替代方法。

此處使用的wilcox.test()與t檢驗(yàn)t.test()的參數(shù)很相似。wilcox_test()中默認(rèn)兩組間相互獨(dú)立(默認(rèn)參數(shù)paired = FALSE),執(zhí)行獨(dú)立樣本的wilcox秩和檢驗(yàn);同時(shí)默認(rèn)的備擇假設(shè)是雙側(cè)的(默認(rèn)參數(shù)alternative = 'two.sided'),即執(zhí)行雙側(cè)檢驗(yàn),可分別使用“alternative = 'less'”或“alternative = 'greater'”執(zhí)行單側(cè)wilcox檢驗(yàn)。

##wilcox 秩和檢驗(yàn),我們執(zhí)行了一個(gè)雙側(cè)檢驗(yàn)
wilcox_test <- wilcox.test(value~group, shannon_23, paired = FALSE, alternative = 'two.sided')
wilcox_test
wilcox_test$p.value

由于p值(約為0.003)小于0.05,即拒絕了原假設(shè)(原假設(shè)兩組間沒有差異),group2和group3的shannon指數(shù)間存在顯著不同。


wilcox符號(hào)秩和檢驗(yàn)

假設(shè)樣本間并非相互獨(dú)立的,可考慮wilcox符號(hào)秩和檢驗(yàn),它是非獨(dú)立樣本t檢驗(yàn)的一種非參數(shù)替代方法。例如,非獨(dú)立組設(shè)計(jì)(dependent groups design)、重復(fù)測(cè)量設(shè)計(jì)(repeated measures design)等。盡管此時(shí)你選用獨(dú)立樣本的wilcox秩和檢驗(yàn)方法也是可行的,這種分析方法本身并沒問題(僅僅是在統(tǒng)計(jì)算法上存在一些不同,相較之下可能wilcox符號(hào)秩和檢驗(yàn)會(huì)更合適一些)。

此時(shí)在wilcox.test()中設(shè)定參數(shù)“paired = TRUE”即可執(zhí)行wilcox符號(hào)秩和檢驗(yàn)。

##wilcox 符號(hào)秩和檢驗(yàn),我們執(zhí)行了一個(gè)雙側(cè)檢驗(yàn)
wilcox_test <- wilcox.test(value~group, shannon_23, paired = TRUE, alternative = 'two.sided')
wilcox_test
wilcox_test$p.value

根據(jù)p值(0.039,低于0.05)可知group2和group3的shannon指數(shù)間存在顯著不同。


可視化展示

考慮作圖將兩組差異進(jìn)行可視化展示。例如,一個(gè)簡(jiǎn)單的箱線圖示例。

#boxplot() 箱線圖
boxplot(value~group, data = shannon_23, col = c('blue', 'orange'), ylab = 'Shannon', xlab = 'Group', main = 'wilcox test: p-value = 0.00295')

Wilcox秩和檢驗(yàn)的一個(gè)批處理示例


相較于參數(shù)分析的t檢驗(yàn),wilcox秩和檢驗(yàn)不必事先驗(yàn)證數(shù)據(jù)分布的正態(tài)性,因此理論上來講,只要是兩組數(shù)據(jù)間的差異分析均可使用wilcox秩和檢驗(yàn)去完成,因此其適用范圍相較于t檢驗(yàn)也更廣泛。在數(shù)據(jù)量較大的情況下(可能會(huì)存在部分?jǐn)?shù)據(jù)滿足t檢驗(yàn)分析的條件,而另一部分?jǐn)?shù)據(jù)則不滿足,無法做到全部使用t檢驗(yàn)去實(shí)現(xiàn)),可以考慮使用循環(huán)逐一挑選分組后,直接執(zhí)行wilcox秩和檢驗(yàn)進(jìn)行各兩兩分組間的差異分析。盡管這種方法比較“粗暴”,但也不失為一種備選方案。

如下將展示一個(gè)批處理示例。

網(wǎng)盤附件中提供了另一示例數(shù)據(jù)集“gene.txt”。表格中每一行為一種基因,每一列為一個(gè)樣本,交叉區(qū)域?yàn)楦骰蛟诟鳂颖局械南鄬?duì)豐度。接下來,我們期望通過wilcox秩和檢驗(yàn),找到在group1和group2組中,具有豐度差異的基因。


##wilcox 檢驗(yàn)批處理示例
library(doBy) #使用其中的 summaryBy() 以方便按分組計(jì)算均值、中位數(shù)

#讀取數(shù)據(jù)
gene <- read.table('gene.txt', sep = '\t', row.names = 1, header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
group <- read.table('group.txt', sep = '\t', header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
result <- NULL

#使用循環(huán),逐一對(duì)各基因進(jìn)行兩組間 wilcox 秩和檢驗(yàn)
for (n in 1:nrow(gene)) {
gene_n <- data.frame(t(gene[n,subset(group, group %in% c(1, 2))$sample]))
gene_id <- names(gene_n)[1]
names(gene_n)[1] <- 'gene'

gene_n$sample <- rownames(gene_n)
gene_n <- merge(gene_n, group, by = 'sample', all.x = TRUE)

gene_n$group <- factor(gene_n$group)
p_value <- wilcox.test(gene~group, gene_n)$p.value
if (!is.na(p_value) & p_value < 0.05) {
stat <- summaryBy(gene~group, gene_n, FUN = c(mean, median))
result <- rbind(result, c(gene_id, as.character(stat[1,1]), stat[1,2], stat[1,3], as.character(stat[2,1]), stat[2,2], stat[2,3], p_value))
}
}

#輸出統(tǒng)計(jì)結(jié)果
result <- data.frame(result)
names(result) <- c('gene_id', 'group1', 'mean1', 'median1', 'group2', 'mean2', 'median2', 'p_value')
result$p_adjust <- p.adjust(result$p_value, method = 'BH') #推薦加個(gè) p 值校正的過程
write.table(result, 'gene.wilcox.txt', sep = '\t', row.names = FALSE, quote = FALSE)
我們主要輸出這些結(jié)果:gene_id,基因id;group1和group2,分別為所需比較的分組1和分組2的名稱;mean1、median1、mean2、median2,分別為各基因在分組1、2中的平均豐度以及中位數(shù)數(shù)值;p_value,顯著性p值,此處僅輸出了p值低于0.05的結(jié)果(即只保留相對(duì)豐度在group1、2中具有顯著差異的基因);p_adjust,同時(shí)通過Benjamini方法校正p值(嗯嗯,這里的數(shù)據(jù)p值校正后,沒有差異基因……)。

特別說明

既然參數(shù)檢驗(yàn)的前提條件有些苛刻,自己的數(shù)據(jù)不一定都滿足參數(shù)分析的條件,那么以后需要用到組間差異比較時(shí),直接全部使用非參數(shù)的檢驗(yàn)就不可以了?

雖然對(duì)全部數(shù)據(jù)直接使用非參數(shù)的檢驗(yàn)方式理論上沒啥問題,但還是有點(diǎn)粗暴了一些。兩種方法(此處比較了t檢驗(yàn)和wilcox秩和檢驗(yàn))畢竟還是有差別的,非參數(shù)方法普遍沒有參數(shù)方法嚴(yán)格。對(duì)于符合參數(shù)檢驗(yàn)條件的數(shù)據(jù)來講,使用參數(shù)檢驗(yàn)還有可能會(huì)鑒別出非參數(shù)檢驗(yàn)鑒別不到的差異,此時(shí)需要特別關(guān)注。例如,某數(shù)據(jù)符合t檢驗(yàn)的條件,t檢驗(yàn)的p值顯著,但wilcox檢驗(yàn)p值不顯著,那么這時(shí)t檢驗(yàn)的結(jié)果會(huì)相對(duì)可靠一些。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多