在「R與生物統計專題」中,我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。以從淺入深,層層遞進的形式在投必得醫學公眾號更新。
在第十二講 R-配對樣本t檢驗中,我們講到了配對樣本t檢驗的假設條件是兩組間差值分布需要符合正態性。
但是,當樣本差值分布非正態,且經過一定的數值轉換嘗試後,仍然無法滿足正態性要求時,配對樣本的Wilcoxon符號秩檢驗成為備選方法,它將非正態樣本的差值的中位數與0進行比較。它是一種非參數樣本檢驗,基於樣本差值的秩次排列,而非平均值。
當兩樣本差值呈非正態分布時,選擇Wilcoxon檢驗。可以使用Shapiro-Wilk test進行檢查。請參看
第六講 R-數據正態分布檢驗
樣本差值的中位數(m)是否等於0?
樣本差值的中位數(m)是否小於0?
樣本差值的中位數(m)是否大於0?
在統計數據中,我們可以定義相應的無效假設(H0) 如下:
相應的備擇假設(H1)如下:
H1:
m ≠ 0 (不同)
H1:
m> 0(大於)
H1:
m< 0(小於)
配對樣本Wilcoxon符號秩統計量的思想是:
首先把配對的兩樣本組各個個體的差值的絕對值|X1|、|X2|、|X3|……|Xn|進行排序,其順序統計量為|X|(1)、|X|(2)、|X|(3)……|X|(n)。
如果配對兩組的數據相同,則其差值會關於零點對稱,對稱中心兩側數據的疏密和取負值的數據交錯出現,取正值數據在樣本絕對值樣本中的秩和與取負值數據在絕對值樣本中的秩和應近似相等,概率均為0.5。
在求得正值秩和和負值秩和後,通過較小秩和和自由度(n-1)查詢相應T界值表,獲得相應P值。
如果p值低於或等於顯著性水平0.05,我們可以拒絕無效假設並接受備擇假設。換句話說,我們得出結論,兩組數據的差值的中位數與0有顯著差異。
可以使用R函數wilcox.test()計算單樣本Wilcoxon檢驗:
wilcox.test(x, y, paired=TRUE, alternative = "two.sided")
我們將使用一個示例,其中包含治療前後10隻小鼠的體重。
# 治療前小鼠體重before <-c(15.4,25.3,25.6,34.7,28.8,18.9,30.0,16.7,15.8,27.7)# 治療後小鼠的體重after <-c(5.5,5.4,5.7,15.7,18.7,72.5,72.4,37.0,66.7,60.0)my_data <- data.frame(group = rep(c("before", "after"), each = 10),weight = c(before, after))我們想知道,治療前後體重是否有顯著差異?
輸出結果
group weight1 before 15.42 before 25.33 before 25.64 before 34.75 before 28.86 before 18.97 before 30.08 before 16.79 before 15.810 before 27.711 after 5.512 after 5.413 after 5.714 after 15.715 after 18.716 after 72.517 after 72.418 after 37.019 after 66.720 after 60.0使用dplyr軟體包按組計算統計信息(平均值和標準差)。
install.packages("dplyr")library("dplyr")group_by(my_data, group) %>%summarise(count = n(),mean = mean(weight, na.rm = TRUE),sd = sd(weight, na.rm = TRUE))輸出結果:
Source: local data frame [2 x 4]group count mean sd(fctr) (int) (dbl) (dbl)1 after 10 36.0 29.22 before 10 23.9 6.76
(請參看第五講 R-數據描述性統計分析作圖)
箱形圖顯示了增長與否,但丟失了配對信息。我們可以使用功能plot.paired()[在pairedData包中]繪製配對數據(「 before-after」圖)。install.packages("PairedData")before <- subset(my_data, group == "before", weight,drop = TRUE)after <- subset(my_data, group == "after", weight,drop = TRUE)library(PairedData)pd <- paired(before, after)plot(pd, type = "profile") + theme_bw()2.4 初步檢驗配對樣本t檢驗的假設條件(正態性檢驗)
(請參看第六講 R-數據正態分布檢驗)
假設1:兩個樣本是否配對?
是的,因為通過測量相同小鼠體重治療前後兩次來收集數據。
假設2:這是一個大樣本嗎?
否,因為n <30。由於樣本大小不夠大(小於30),我們需要檢查對的差異是否遵循正態分布。
如何檢查正常性?
# 計算之前前後的差異d <- with(my_data, weight[group == "before"] - weight[group == "after"])從輸出中,p值大於顯著性水平0.05,表明差值(d)的分布與正態分布沒有顯著差異。說明差值(d)不符合正態分布,不可以使用配對樣本t檢驗。
res <- wilcox.test(weight ~ group, data = my_data, paired = TRUE)res輸出結果
Wilcoxon signed rank testdata: weight by groupV = 40, p-value = 0.2324alternative hypothesis: true location shift is not equal to 0在上面的結果中:
也可以使用如下代碼,輸出內容一樣。
res <- wilcox.test(weight ~ group, data = my_data, paired = TRUE)res
檢驗的p值為 0.23,大於顯著性水平alpha = 0.05。然後我們可以肯定原假設,並得出結論,治療前小鼠的體重與治療後小鼠的沒有顯著不同,p值 = 0.23。
2.7 獲得wilcox.test()函數的返回值(請參看第九講 R-單樣本wilcox檢驗)
當然啦,R語言的掌握是在長期訓練中慢慢積累的。一個人學習太累,不妨加入「R與統計交流群」,和數百位碩博一起學習。
快掃二維碼撩客服,
帶你進入投必得醫學交流群,
讓我們共同進步!
↓↓
- END -
長按二維碼關注「投必得醫學」,更多科研乾貨在等你!