R語言代寫Wilcoxon符號秩檢驗與配對學生t檢驗


原文鏈接:http://tecdat.cn/?p=3172

 

在這篇文章中,我們將探索比較兩組依賴(即成對)定量數據的測試:Wilcoxon符號秩檢驗和配對學生t檢驗。這些測試之間的關鍵區別在於Wilcoxon的測試是非參數測試,而t測試是參數測試。在下文中,我們將探討這種差異的后果。

睡眠數據集

我們來考慮睡眠數據集。數據集通過提供服用葯物后睡眠時間與基線相比的變化來對比兩種催眠葯物(即安眠葯)的效果:

 
##    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

extra表示與基線測量相比睡眠中的增加/減少(正/負值),表示葯物,ID表示患者ID。為了更清楚,我將重命名為葯物

 >colnames(sleep)[which(colnames(sleep) ==  

注意,睡眠數據集包含每個患者的兩個測量值。因此,它適合於展示配對測試,例如我們正在處理的測試。

我們測試的是什么?

假設我們在一家制葯公司工作,這些是剛從臨床試驗中獲得的數據。現在,我們必須決定你應該推出哪兩種葯物用於市場釋放。選擇葯物的合理方法是確定表現更好的葯物。更具體地說,問題是:用更大的值相關聯的葯物之一額外的比其他葯物?

為了直觀了解這兩種葯物的有效性,讓我們繪制相應的值:

該圖顯示葯物1的睡眠時間的中值增加接近0,而葯物2的中值增加接近2小時。因此,根據這些數據,似乎葯物2比葯物1更有效。但是,我們仍需要確定我們的發現是否具有統計學意義。

零假設

該測試的零假設是兩種葯物之間的額外睡眠時間沒有任何差異。由於我們想知道葯物2是否優於葯物1,我們不需要雙尾測試(測試任何葯物是否具有優異的性能),而是單尾測試。因此,零假設的備選方案是葯物2與更大的值相關聯的額外的比葯物1。

 Wilcoxon符號秩檢驗

Wilcoxon簽名等級測試使用簽名等級的總和作為測試統計 w ^w ^:

w ^= Σi = 1ñ[ sgn(x2 ,我- x1 ,我)⋅ ř一世]w ^=Σ一世=1ñ[SGN⁡(X2,一世- X1,一世)⋅[R一世]

在這里, 一世一世- 的 ññ 測量對用表示 X一世= (x1 ,我,x2 ,我)X一世=(X1,一世,X2,一世) 和 [R一世[R一世表示該對的等級。等級僅表示觀察在有序列表中的位置| X2 ,我- x1 ,我||X2,一世- X1,一世|。測試統計量的存在是具有大的絕對差異的對將具有大的等級[R一世[R一世。因此,這些對是決定因素w ^w ^,雖然表現出小的絕對差異的對具有低 [R一世[R一世因此對測試結果的影響很小。由於檢驗統計量是基於排名而不是測量值本身,因此Wilcoxon符號秩檢驗可以被認為是測試兩組之間中值變化。

 

要在R中執行測試,我們可以使用該wilcox.test功能。但是,我們必須明確設置配對參數,以表明我們正在處理匹配的觀察。要指定單尾測試,我們將替代參數設置為更大。以這種方式,測試的替代方案是葯物2是否與睡眠持續時間的較大增加相關聯而不是葯物1。

 code>x <- sleep$extra[sleep$drug == <span style="color:#880000">2</span>]
y <- sleep$extra[sleep$drug == <span style="color:#880000">1</span>]
res <- wilcox.test(x, y, paired = <span style="color:#78a960">TRUE</span>, 
                   alternative = <span style="color:#880000">"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

 警告

在獲得結果之前,我們應該調查執行測試所產生的兩個警告。

警告1:關系

出現第一個警告是因為測試extra對對的值進行了排序。如果兩對共享相同的差異,則在排名期間會出現關系。我們可以通過計算對之間的差異來驗證這一點

<span style="color:#000000"><code>x - y</code></span>
##  [1] 1.2 2.4 1.3 1.3 0.0 1.0 1.8 0.8 4.6 1.4

並發現對3和4都具有1.3的相同差異。為什么領帶有問題?分配給關系的等級基於它們所跨越的等級的平均值。因此,如果存在許多聯系,則會降低檢驗統計量的表現力,使得Wilcoxon檢驗不合適。由於我們這里只有一個關系,這不是問題。

警告2:零值

第二個警告涉及差異為0的對。在睡眠數據集中,來自第5個患者的情況就是這種情況(見上文)。為什么零是個問題?請記住,零假設是對的差異以0為中心。但是,觀察值恰好為0的差異並不能為我們提供任何拒絕零的信息。因此,在計算測試統計量時丟棄這些對。如果許多對的情況如此,則測試的統計功效將大幅下降。同樣,這對我們來說不是問題,因為只存在一個零值。

調查結果

測試的主要結果是它的p值,可以通過以下方式獲得:

<span style="color:#000000"><code>res$p.value</code></span>
## [1] 0.004545349

由於p值小於5%的顯着性水平,這意味着我們可以拒絕零假設。因此,我們傾向於接受替代假設,該假設指出葯物2優於葯物1。

配對學生的t檢驗

配對Student's t檢驗是對兩組配對定量測量方法的參數檢驗。這里,參數意味着t檢驗假設樣本之間的平均差異是正態分布的。測試依賴於確定兩組的測量值的平均差異,X¯dX¯d 大於 μdμd,哪里 μdμd通常設置為0以查找是否存在任何差異。測試統計,

 

t = X.¯d- μ0小號dñ√,Ť=X¯d- μ0小號dñ,

 

使用差異的標准差歸一化, 小號d小號d,以及對的數量 ññ。按照規范化小號dñ√小號dñ,檢驗統計量根據樣本數量調整檢驗統計量的值(| t ||Ť| 隨着樣本的增加而增加)和差異的標准差(| t ||Ť| 如果偏差增加則減少)。

在R中,我們可以使用該t.test函數執行配對t檢驗。請注意,t.test假設人口差異不相等。在這種情況下,測試也稱為Welch的t檢驗。為了獲得原始t檢驗,假設人口方差相等,我們可以將equal.var參數設置為TRUE。在這里,我們將使用默認設置:

<span style="color:#000000"><code>t.result <- t.test(x,y, paired = <span style="color:#78a960">TRUE</span>, alternative = <span style="color:#880000">"greater"</span>)
print(t.result$p.value)</code></span>
## [1] 0.001416445

同樣,p值小於0.05。因此,我們傾向於接受替代假設:葯物2與平均睡眠持續時間的增加相關,而不是葯物1。

檢查學生t檢驗的假設

t檢驗要求樣本均值是正態分布的。通過中心極限定理,來自總體的樣本的均值接近正常分布的足夠數量的樣本。因此,只要存在足夠數量的樣本,即使對於非正常測量,也滿足t檢驗的假設。由於睡眠數據僅包含10對配對測量,因此應該有理由擔心。因此,我們應檢查測量之間的差異是否正常分布,以驗證t檢驗是否有效:

<span style="color:#000000"><code>diff.df <- data.frame(diff = sleep$extra[sleep$drug == <span style="color:#880000">1</span>] - sleep$extra[sleep$drug == <span style="color:#880000">2</span>])
ggplot(diff.df, aes(x = diff)) + geom_histogram()</code></span>
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

查看直方圖,數據似乎比正態分布更均勻。為了進一步了解,我們將差異與使用QQ(分位數 - 分位數)圖的正態分布預期的值進行比較:

<span style="color:#000000"><code><strong>require</strong>(car) <span style="color:#888888"># load car package to use 'qqp' rather than native 'qqplot' function</span></code></span>
## Loading required package: car
<span style="color:#000000"><code>qqp(diff.df$diff)</code></span>

QQ圖顯示,除了重尾之外,差異非常適合普通模型。由此,我們可以得出結論,充分滿足了t檢驗的假設。盡管如此,我們還是對t檢驗是否是這些數據最合適的選擇感到不確定。

摘要:Wilcoxon符號秩檢驗與配對學生t檢驗

在這項分析中,Wilcoxon符號秩檢驗和配對學生t檢驗導致拒絕零假設。但總的來說,哪種測試更合適?答案是,它取決於幾個標准:

  • 假設:學生的t檢驗是一種比較均衡的方法,而Wilcoxon則測試數據的排序。例如,如果您正在分析具有許多異常值的數據,例如個人財富(少數億萬富翁可能會極大地影響結果),那么Wilcoxon的測試可能更合適。
  • 解釋:雖然也可以計算Wilcoxon檢驗的置信區間,但在t檢驗中平均值的置信區間似乎比Wilcoxon檢驗的假醫生更為自然。
  • 假設的實現:對於小樣本量,可能無法滿足學生t檢驗的假設。在這種情況下,選擇參數測試通常更安全。然而,如果滿足t檢驗的假設,它具有比Wilcoxon檢驗更大的統計功效。

由於睡眠數據集的樣本量很小,我更喜歡Wilcoxon的測試這些數據。

你會用哪種測試?一般來說,你更喜歡一個測試嗎?

 

  • 如果您有任何疑問,請在下面發表評論。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM