R語言中的Wilcoxon符號秩檢驗(yàn)與配對學(xué)生t檢驗(yàn)
原文鏈接:http://tecdat.cn/?p=3172
?
在這篇文章中,我們將探索比較兩組依賴(即成對)定量數(shù)據(jù)的測試:Wilcoxon符號秩檢驗(yàn)和配對學(xué)生t檢驗(yàn)。這些測試之間的關(guān)鍵區(qū)別在于Wilcoxon的測試是非參數(shù)測試,而t測試是參數(shù)測試。在下文中,我們將探討這種差異的后果。
睡眠數(shù)據(jù)集
我們來考慮睡眠數(shù)據(jù)集。數(shù)據(jù)集通過提供服用藥物后睡眠時間與基線相比的變化來對比兩種催眠藥物(即安眠藥)的效果:
extra表示與基線測量相比睡眠中的增加/減少(正/負(fù)值),組表示藥物,ID表示患者ID。為了更清楚,我將組重命名為藥物:
## ? ?extra group ID
## 1 ? ?0.7 ? ? 1 ?1
## 2 ? -1.6 ? ? 1 ?2
## 3 ? -0.2 ? ? 1 ?3
## 4 ? -1.2 ? ? 1 ?4
## 5 ? -0.1 ? ? 1 ?5
## 6 ? ?3.4 ? ? 1 ?6
## 7 ? ?3.7 ? ? 1 ?7
## 8 ? ?0.8 ? ? 1 ?8
## 9 ? ?0.0 ? ? 1 ?9
## 10 ? 2.0 ? ? 1 10
## 11 ? 1.9 ? ? 2 ?1
## 12 ? 0.8 ? ? 2 ?2
## 13 ? 1.1 ? ? 2 ?3
## 14 ? 0.1 ? ? 2 ?4
## 15 ?-0.1 ? ? 2 ?5
## 16 ? 4.4 ? ? 2 ?6
## 17 ? 5.5 ? ? 2 ?7
## 18 ? 1.6 ? ? 2 ?8
## 19 ? 4.6 ? ? 2 ?9
## 20 ? 3.4 ? ? 2 10
注意,睡眠數(shù)據(jù)集包含每個患者的兩個測量值。因此,它適合于展示配對測試,例如我們正在處理的測試。
我們測試的是什么?
假設(shè)我們在一家制藥公司工作,這些是剛從臨床試驗(yàn)中獲得的數(shù)據(jù)。現(xiàn)在,我們必須決定你應(yīng)該推出哪兩種藥物用于市場釋放。選擇藥物的合理方法是確定表現(xiàn)更好的藥物。更具體地說,問題是:用更大的值相關(guān)聯(lián)的藥物之一額外的比其他藥物?
為了直觀了解這兩種藥物的有效性,讓我們繪制相應(yīng)的值:

該圖顯示藥物1的睡眠時間的中值增加接近0,而藥物2的中值增加接近2小時。因此,根據(jù)這些數(shù)據(jù),似乎藥物2比藥物1更有效。但是,我們?nèi)孕枰_定我們的發(fā)現(xiàn)是否具有統(tǒng)計(jì)學(xué)意義。
零假設(shè)
該測試的零假設(shè)是兩種藥物之間的額外睡眠時間沒有任何差異。由于我們想知道藥物2是否優(yōu)于藥物1,我們不需要雙尾測試(測試任何藥物是否具有優(yōu)異的性能),而是單尾測試。因此,零假設(shè)的備選方案是藥物2與更大的值相關(guān)聯(lián)的額外的比藥物1。
?Wilcoxon符號秩檢驗(yàn)
?由于檢驗(yàn)統(tǒng)計(jì)量是基于排名而不是測量值本身,因此Wilcoxon符號秩檢驗(yàn)可以被認(rèn)為是測試兩組之間中值變化。
?
要在R中執(zhí)行測試,我們可以使用該wilcox.test
功能。但是,我們必須明確設(shè)置配對參數(shù),以表明我們正在處理匹配的觀察。要指定單尾測試,我們將替代參數(shù)設(shè)置為更大。以這種方式,測試的替代方案是藥物2是否與睡眠持續(xù)時間的較大增加相關(guān)聯(lián)而不是藥物1。
code>x <- sleep$extra[sleep$drug == 2]
y <- sleep$extra[sleep$drug ==1]
res <- wilcox.test(x, y, paired = TRUE,
alternative = "greater"
## Warning in wilcox.test.default(x, y, paired = TRUE, alternative =
## "greater"): cannot compute exact p-value with ties
## Warning in wilcox.test.default(x, y, paired = TRUE, alternative =
## "greater"): cannot compute exact p-value with zeroes
?
?警告
在獲得結(jié)果之前,我們應(yīng)該調(diào)查執(zhí)行測試所產(chǎn)生的兩個警告。
警告1:關(guān)系
出現(xiàn)第一個警告是因?yàn)闇y試extra
對對的值進(jìn)行了排序。如果兩對共享相同的差異,則在排名期間會出現(xiàn)關(guān)系。我們可以通過計(jì)算對之間的差異來驗(yàn)證這一點(diǎn)
x - y
## ?[1] 1.2 2.4 1.3 1.3 0.0 1.0 1.8 0.8 4.6 1.4
并發(fā)現(xiàn)對3和4都具有1.3的相同差異。為什么領(lǐng)帶有問題?分配給關(guān)系的等級基于它們所跨越的等級的平均值。因此,如果存在許多聯(lián)系,則會降低檢驗(yàn)統(tǒng)計(jì)量的表現(xiàn)力,使得Wilcoxon檢驗(yàn)不合適。由于我們這里只有一個關(guān)系,這不是問題。
警告2:零值
第二個警告涉及差異為0的對。在睡眠數(shù)據(jù)集中,來自第5個患者的情況就是這種情況(見上文)。為什么零是個問題?請記住,零假設(shè)是對的差異以0為中心。但是,觀察值恰好為0的差異并不能為我們提供任何拒絕零的信息。因此,在計(jì)算測試統(tǒng)計(jì)量時丟棄這些對。如果許多對的情況如此,則測試的統(tǒng)計(jì)功效將大幅下降。同樣,這對我們來說不是問題,因?yàn)橹淮嬖谝粋€零值。
調(diào)查結(jié)果
測試的主要結(jié)果是它的p值,可以通過以下方式獲得:
res$p.value
## [1] 0.004545349
由于p值小于5%的顯著性水平,這意味著我們可以拒絕零假設(shè)。因此,我們傾向于接受替代假設(shè),該假設(shè)指出藥物2優(yōu)于藥物1。
配對學(xué)生的t檢驗(yàn)
配對Student's t檢驗(yàn)是對兩組配對定量測量方法的參數(shù)檢驗(yàn)。這里,參數(shù)意味著t檢驗(yàn)假設(shè)樣本之間的平均差異是正態(tài)分布的。測試依賴于確定兩組的測量值的平均差異,XˉdXˉd?大于?μdμd,哪里?μdμd通常設(shè)置為0以查找是否存在任何差異。?
在R中,我們可以使用該t.test
函數(shù)執(zhí)行配對t檢驗(yàn)。請注意,t.test
假設(shè)人口差異不相等。在這種情況下,測試也稱為Welch的t檢驗(yàn)。為了獲得原始t檢驗(yàn),假設(shè)人口方差相等,我們可以將equal.var
參數(shù)設(shè)置為TRUE
。在這里,我們將使用默認(rèn)設(shè)置:
t.result <- t.test(x,y, paired = TRUE, alternative = "greater")
print(t.result$p.value)
## [1] 0.001416445
同樣,p值小于0.05。因此,我們傾向于接受替代假設(shè):藥物2與平均睡眠持續(xù)時間的增加相關(guān),而不是藥物1。
檢查學(xué)生t檢驗(yàn)的假設(shè)
t檢驗(yàn)要求樣本均值是正態(tài)分布的。通過中心極限定理,來自總體的樣本的均值接近正常分布的足夠數(shù)量的樣本。因此,只要存在足夠數(shù)量的樣本,即使對于非正常測量,也滿足t檢驗(yàn)的假設(shè)。由于睡眠數(shù)據(jù)僅包含10對配對測量,因此應(yīng)該有理由擔(dān)心。因此,我們應(yīng)檢查測量之間的差異是否正常分布,以驗(yàn)證t檢驗(yàn)是否有效:
diff.df <- data.frame(diff = sleep$extra[sleep$drug == 1] - sleep$extra[sleep$drug == 2])
ggplot(diff.df, aes(x = diff)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
?

查看直方圖,數(shù)據(jù)似乎比正態(tài)分布更均勻。為了進(jìn)一步了解, 正態(tài)分布預(yù)期的值進(jìn)行比較:
require (car)
# load car package to use 'qqp' rather than native 'qqplot' function
?
qqp(diff.df$diff)

QQ圖顯示,除了重尾之外,差異非常適合普通模型。由此,我們可以得出結(jié)論,充分滿足了t檢驗(yàn)的假設(shè)。盡管如此,我們還是對t檢驗(yàn)是否是這些數(shù)據(jù)最合適的選擇感到不確定。
摘要:Wilcoxon符號秩檢驗(yàn)與配對學(xué)生t檢驗(yàn)
在這項(xiàng)分析中,Wilcoxon符號秩檢驗(yàn)和配對學(xué)生t檢驗(yàn)導(dǎo)致拒絕零假設(shè)。但總的來說,哪種測試更合適?答案是,它取決于幾個標(biāo)準(zhǔn):
假設(shè):學(xué)生的t檢驗(yàn)是一種比較均衡的方法,而Wilcoxon則測試數(shù)據(jù)的排序。例如,如果您正在分析具有許多異常值的數(shù)據(jù),例如個人財(cái)富(少數(shù)億萬富翁可能會極大地影響結(jié)果),那么Wilcoxon的測試可能更合適。
解釋:雖然也可以計(jì)算Wilcoxon檢驗(yàn)的置信區(qū)間,但在t檢驗(yàn)中平均值的置信區(qū)間似乎比Wilcoxon檢驗(yàn)的假醫(yī)生更為自然。
假設(shè)的實(shí)現(xiàn):??無法滿足學(xué)生t檢驗(yàn)的假設(shè)。在這種情況下,選擇參數(shù)測試通常更安全。然而,如果滿足t檢驗(yàn)的假設(shè),它具有比Wilcoxon檢驗(yàn)更大 功效。
由于睡眠數(shù)據(jù)集的樣本量很小,我更喜歡Wilcoxon的測試這些數(shù)據(jù)。
你會用哪種測試?一般來說,你更喜歡一個測試嗎?
?