2014-07-09 31 views
0

我想對兩個樣本x和y執行Wilcoxon測試。其中x和y是數字的n長向量。R中的加權Wilcoxon測試

給出了一些實驗設計,我想給一些x的權重。 Wilcoxon測試中如何包含這樣的權重? 我發現不同的包:「調查」,「Hmisc」,http://www.stat.wmich.edu/red5328/WWest/ww1.7.r

,但一個簡單的測試,沒有權重不給我回標準魏氏結果: 例如:

x=rnorm(n=100,mean=0,sd=1) 
y=rnorm(n=100,mean=0.1,sd=1) 
wilcox.test(x,y) 
data: x and y 
W = 4389, p-value = 0.1358 

與WWest功能: wwest(X,Y)

Wald Test of H0: BETA1=0 
TS: 0.0284 PVAL: 0.8665 

Drop Test of H0: BETA1=0 
TS: 0.0406 PVAL: 0.8407 

我希望我自己清楚。

+0

使用(僞)隨機數字,重複上面的代碼(wilcox.test(x,y)10'000次,我得到的p值的平均值約爲0.43和0.30,同時兼容0.1358和0.86,但0.13將只是第4個百分點,即不完全是一個可能的結果=>可能使用set.seed來顯示可重現的結果 – Martin

+0

嗨馬丁,不管種子是什麼,我會期望在wwest的輸出和wilcox.test –

回答

0

有一些混淆/缺乏共識什麼可稱爲「Wilcoxon」測試。事實上,這個人很忙,似乎對許多測試做出了貢獻。

雖然WWest似乎配對試驗工作(根據在代碼一覽 - 請糾正我,如果錯了),wilcox.test(使用默認參數paired=FALSE)不執行什麼是通常被稱爲(配對)秩測試(但是U測試)。要獲得「clasical」Wilcoxon測試,請使用paired=FALSE

+0

我看到了,但是我仍然沒有得到一致的輸出結果,我試圖自己實現它(請參閱我的答案) –

4

這裏是加權威爾科克斯測試 x和y是比較矢量,WX是權重的矢量將被施加到x的一個建議,

wwilcox = function(x, y, wx ){ 

U = 0 
## Loop over the selection branches 
for(iy in y){ 

## Neutral branches smaller or equal 
smaller = which( x < iy) 
equal = which(x == iy) 

## Count 
sumSmaller = sum(wx[smaller]) 
sumEqual = sum(wx[equal]/2) 
sumTot = sumSmaller + sumEqual 

## Total rank 
U = U + sumTot 
} 

## U statistics 
nY = length(y) 
nX = sum(wx) 

## Large sample: U follows a Gaussian 
mU = nY * nX/2 
sigU = sqrt((nY * nX * (1 + nY + nX))/12) 
zU = (U - mU)/sigU 

## p-value, one-sided 
pU = erfc(zU/sqrt(2)) /2 

return(pU) 
} 

## Complemantery error function 
erfc = function(x) 2 * pnorm(x * sqrt(2), lower = FALSE) 

任何評論歡迎!