【发布时间】:2015-05-21 10:10:12
【问题描述】:
我对 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-Whitney U-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() 计算正态近似值。
【问题讨论】:
标签: r