R 中的 wilcox.test 函数是否正确报告了小样本的置信区间?

问题描述 投票:0回答:0

我在使用 Wilcoxon 计算一个样本置信区间时遇到了 JASP 统计包中的意外行为,并将其回溯到底层 R 函数

Wilcox.test
。简而言之,如果要求提供所需置信水平的置信区间,则报告的置信区间对应于下一个较低的可计算置信水平。更重要的是,用户没有被警告这一点,这很容易导致人们得出错误的结论。在对小样本进行操作时,这个问题尤为严重 (N < 10).

举个例子:

x <- c(1, 2, 3, 4, 5, 6, 7)
wilcox.test(x, conf.int = TRUE, conf.level = 0.95)

退货:

    Wilcoxon signed rank exact test

data:  x
V = 28, p-value = 0.01563
alternative hypothesis: true location is not equal to 0
95 percent confidence interval: 2 6
sample estimates:
(pseudo)median 4 

但是,如果我没记错的话,[2,6] 是下一个低于要求值 0.95 的离散置信水平的置信区间,即 0.9219。因此,不知情的用户将报告过分狭窄(即错误的)95% CI。

在我看来,正确的行为应该是同时发布警告和与返回的 CI 关联的实际置信度。这样,用户将能够手动调整置信度,直到超过所需的阈值。在这种情况下,下一个高于 0.95 的离散置信水平恰好是 0.9531(见下文)。

有趣的是,

wilcox.test
的 R 手册指出:

对于小样本,可能无法实现非常高的置信区间覆盖。如果发生这种情况,将发出警告并替换为覆盖率较低的间隔。

由于上面的示例中没有提供警告,我怀疑这可能是错误或缺少功能。在提交错误报告之前,我将非常感谢对此的任何合格反馈,因为我可能完全错了!

背景

样本量为 7 的前三个可计算置信水平由(Geyer 2007;Stat 5102 注释:非参数检验和置信区间)给出:

n <- 7
m <- n * (n + 1) / 2
k <- 1:(m / 2)
conf.lev <- 1 - 2 * psignrank(k, n)
names(conf.lev) <- k
round(conf.lev[0.9 < conf.lev & conf.lev < 1], 4)

是:

     1      2      3 
0.9688 0.9531 0.9219 

通过在

conf.level
中尝试不同的
wilcox.test(x, conf.int = TRUE, conf.level = 0.95)
值,很容易看出报告的 CI 默认为低于要求的下一个离散置信水平。

r confidence-interval
© www.soinside.com 2019 - 2024. All rights reserved.