上一講中,我們介紹了第十講 R-兩獨立樣本t檢驗,然而兩獨立樣本t檢驗僅適用於正態分布的樣本,對於分布非正態,且經過一定的數值轉換嘗試後,仍然無法滿足正態性要求的樣本,無法使用t檢驗。此時,兩獨立樣本的Wilcoxon秩和檢驗成為備選方法,它將兩獨立樣本組的非正態樣本值進行比較。它是一種非參數樣本檢驗,基於樣本的秩次排列,而非平均值。單樣本Wilcoxon檢驗用於檢驗一組樣本和理論值是否有差異。當我們比較兩組樣本間是否存在差異時,就需要用到今天的統計學方法:兩獨立樣本Wilcoxon符號秩檢驗。兩獨立樣本Wilcoxon檢驗(也稱為Wilcoxon秩和檢驗或Mann-Whitney檢驗)是一種非參數替代配對雙樣本t檢驗,其可以被用於比較樣品的兩個獨立的組。
當數據呈非正態分布時,選擇Wilcoxon檢驗。可以使用Shapiro-Wilk test進行檢查。請參看第六講 R-數據正態分布檢驗。
A組中位數(mA)是否等於B組中位數(mB)?
A組中位數(mA)是否小於B組中位數(mB)?
A組中位數(mA)是否大於B組中位數(mB)?
在統計數據中,我們可以定義相應的無效假設(H0) 如下:
H0:mA = mB
H0:mA ≤ mB
H0:mA ≥ mB
相應的備擇假設(H1)如下:
H1:mA ≠ mB (不同)
H1:mA > mB(大於)
H1:mA < mB(小於)
檢驗的具體步驟:
第一步:將兩個樣本數據混合併由小到大進行等級排列(最小的數據秩次編為1,最大的數據秩次編為n1 + n2)。
第二步:把容量較小的樣本中各數據的等級相加,即秩和,用T表示。
第三步:把T值與秩和檢驗表中某α顯著性水平下的臨界值相比較,如果T1 < T < T2,則兩樣本差異不顯著;如果T不等於T1或T大於等於T2, 則表明兩樣本差異顯著。
當兩個樣本容量都大於10時,秩和T的分布接近於正態分布,因此可以用Z檢驗,其基本公式為:

式中:T為較小的樣本的秩和。
我們可以為自由度(df)計算與檢驗統計量(| z|),通過查詢其相對性的z界值表,對比其在df=n1+n2-1處的P值。
如果p值低於或等於顯着性水平0.05,我們可以拒絕無效假設並接受備擇假設。換句話說,我們得出結論,兩組樣本代表的總體間存在有顯着差異。
可以使用R函數wilcox.test()計算兩獨立樣本Wilcoxon檢驗:
wilcox.test(x, y, alternative = "two.sided")x,y:
數值向量
alternative:
備擇假設。
允許值為「two.sided」(默認),也可以根據需要設置為「greater」或「less」之一。
在這裡,我們將使用一個示例數據集,其中包含18個人(9名女性和9名男性)的體重:
women_weight <- c(88.9, 81.2, 73.3, 21.8, 63.4, 84.6, 28.4, 28.8, 28.5)men_weight <- c(37.8, 80, 33.4, 36, 89.4, 83.3, 97.3, 81.3, 92.4)# 建立一個數據框my_data <- data.frame(group = rep(c("Woman", "Man"), each = 9),weight = c(women_weight, men_weight))我們想知道,女性體重是否與男性體重不同?
輸出結果:
group weight1 Woman 88.92 Woman 81.23 Woman 73.34 Woman 21.85 Woman 63.46 Woman 84.67 Woman 28.48 Woman 28.89 Woman 28.510 Man 37.811 Man 80.012 Man 33.413 Man 36.014 Man 89.415 Man 83.316 Man 97.317 Man 81.318 Man 92.4按性別計算統計信息(中位數和四分位數範圍(IQR))。可以使用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))# A tibble: 2 x 4group count mean sd1 Man 9 70.1 26.42 Woman 9 55.4 28.1(請參看第五講 R-數據描述性統計分析作圖)

(請參看第六講 R-數據正態分布檢驗)
假設1:兩個樣本是否獨立?
是的,因為來自男性和女性的樣本無關。
假設2:兩組中每組的數據是否服從正態分布?
我們將使用with()和shapiro.test()的函數來為每組樣本計算Shapiro-Wilk測試。
# Shapiro-Wilk normality test for Men's weightswith(my_data, shapiro.test(weight[group == "Man"]))#輸出結果p=0.01# Shapiro-Wilk normality test for Women's weightswith(my_data, shapiro.test(weight[group == "Woman"])) #輸出結果 p = 0.045輸出結果中,兩個p值小於顯着性水平0.05,說明兩組數據的分布與正態分布有顯着差異。數據分布不符合正態分布的假設檢驗成立。
請注意,如果兩組數據中只有一組不是正態分布,也要使用非參數兩樣本Wilcoxon秩檢驗。
假設3:這兩個總體是否符合方差齊性?
我們將使用F檢驗來檢驗方差齊性。可以使用var.test()函數執行以下操作:
res.ftest <- var.test(weight ~ group, data = my_data)res.ftest輸出結果
F test to compare two variancesdata: weight by groupF = 0.88062, num df = 8, denom df = 8, p-value = 0.8617alternative hypothesis: true ratio of variances is not equal to 195 percent confidence interval:0.1986398 3.9040261sample estimates:ratio of variances0.880622F檢驗為p = 0.8617。它大於顯着性水平alpha = 0.05。因此,兩組數據的方差之間沒有顯著差異。因此我們認為男女兩組方差相等(方差齊性)。
由於以上3個假設綜合,由於數據不符合正態分布,因此,我們不可以使用student-t檢驗。需要使用兩獨立樣本Wilcoxon檢驗。
問題:男女體重之間有顯着差異嗎?
res <- wilcox.test(weight ~ group, data = my_data, var.equal = TRUE)res輸出結果
Wilcoxon rank sum testdata: weight by groupW = 59, p-value = 0.1135alternative hypothesis: true location shift is not equal to 0在上面的結果中:
p值是wilcoxon檢驗的顯着性水平(p值= 0.1135)。
如果要檢驗男性的體重是否小於女性的體重,請輸入以下內容:
wilcoxon.test(weight ~ group, data = my_data,var.equal = TRUE, alternative = "less")或者,如果您想測試男性的體重是否大於女性的體重,請輸入
wilcoxon.test(weight~group,data=my_data,var.equal=TRUE,alternative="greater")檢驗的p值為0.1135,大於顯着性水平alpha = 0.05。我們可以得出結論,男性的體重與女性的體重沒有顯著不同。
2.7 獲得wilcox.test()函數的返回值(請參看第九講 R-單樣本wilcoxon檢驗)
好了,本期講解就先到這裡。在之後的更新中,我們會進一步為您介紹R的入門,以及常用生物統計方法和R實現。提前打個預告,下一期我們將學習「用R語言做配對樣本t檢驗」。第二講 R-編程基礎-運算、數據類型和向量等基本介紹當然啦,R語言繪圖的掌握是在長期訓練中慢慢積累的。一個人學習太累,不妨加入「R語言與統計交流群」,和數百位碩博一起學習。

↑↑↑添加客服微信入群交流↑↑↑