我有一个关于wilcox.test()函数中的法线近似的问题。
我直觉地期望这些计算的结果是相同的:
vec1 <- c(10,11,12)
wilcox.test(vec1,rep(0,10),exact=FALSE,correct = FALSE)
wilcox.test(vec1,c(runif(8),0,0),exact=FALSE,correct=FALSE)但情况远非如此。(0.0006056比0.01112)
来自wilcox.test文档:
如果样本包含小于50个有限值,且没有联系,则计算精确p值。否则,采用正态近似。
我不清楚如何根据文档计算正态近似。搜寻网(如:( wiki,Mann test),它似乎可以通过:
U = sum of ranks of vec1 (-1 in R)
mU = length(vec1)*length(vec2)/2
sdU = sqrt(length(vec1)*length(vec2)*(length(vec1)+length(vec2)+1)/12)
z = (U-mU)/sdU
pval = 2*pnorm(-abs(z)) 但是,由于U和向量长度在这种情况下是相同的,这显然不是R计算正态近似的方法。
因此,我的问题是,在R中,wilcox.test()是如何计算正态近似的。
发布于 2015-05-21 13:12:08
与上述公式不一致的原因是在计算方差时考虑到了领带。下面是取自wilcox.test的R源代码
NTIES <- table(r)
z <- STATISTIC - n.x * n.y / 2
SIGMA <- sqrt((n.x * n.y / 12) *
((n.x + n.y + 1) - sum(NTIES^3 - NTIES)
/ ((n.x + n.y) * (n.x + n.y - 1))))其中n.x,n.y是第一样本和第二样本的长度,r是组合样本的秩向量。
顺便说一句,将varU更改为其他名称,因为您使用平方根。
https://stackoverflow.com/questions/30370695
复制相似问题