R中的加权Wilcoxon检验

时间:2014-07-09 07:46:33

标签: r statistics

我想对两个样本x和y执行Wilcoxon检验,其中x和y是长度为n的数字向量。

鉴于一些实验设计,我想给x中的一些条目赋予一些权重。 如何将这些权重包含在Wilcoxon检验中? 我找到了各种套餐:“调查”,“Hmisc”

但是没有重量的简单测试不会让我回到标准的Wilcoxon结果: 例如:

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 

我希望我能说清楚。

2 个答案:

答案 0 :(得分:4)

这是加权Wilcox检验的建议 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)

欢迎任何评论!

答案 1 :(得分:0)

有一些混淆/缺乏共识的内容是什么?&#34; Wilcoxon&#34;测试。事实上,这家伙很忙,似乎为很多测试做出了贡献。

虽然WWest似乎可以作为配对测试使用(根据代码一目了然 - 如果错误,请纠正我),wilcox.test(使用默认参数paired=FALSE)执行执行通常所说的(配对)Wilcoxon测试(但是U测试)。获得&#34; clasical&#34; Wilcoxon测试,使用paired=FALSE