中位数的置信区间


Answers:


31

这是经典R数据集的说明:

> x       = faithful$waiting
> bootmed = apply(matrix(sample(x, rep=TRUE, 10^4*length(x)), nrow=10^4), 1, median)
> quantile(bootmed, c(.025, 0.975))
2.5% 97.5% 
 73.5    77 

得出中位数的(73.5,77)置信区间。

注:修改后的版本,感谢约翰,我用103nrow前面,而导致的混乱!)


7
对我来说似乎很狭窄。使用library(boot)出现的功能来确认这一点:> boot.ci(boot(x,function(x,i)mid(x [i]),R = 1000))时间间隔:等级普通基础95%(74.42,78.22)(75.00 ,78.49)百分位数BCa 95%(73.51,77.00)(73.00,77.00)
一站式服务

2
不客气西安...顺便说一句,我总是喜欢在矩阵中设置原始N值,因为在我可能制作的各种引导程序大小中,这是一个常数。因此,我通常会说ncol = length(x)。我发现以这种方式出错的可能性较小。
John

6
onestop的答案那样,这只是一种计算二项式分位数的低效方法。
ub

30

另一种方法是基于二项式分布的分位数。
例如:

> x=faithful$waiting
> sort(x)[qbinom(c(.025,.975), length(x), 0.5)]
[1] 73 77

4
我喜欢这个简单的方法...结果很接近bootstrap方法。
Dominic Comtois,2012年

1
对于连续情况,这显然比自举有效得多,但是一个缺点是,它不考虑并列等级。您是否碰巧知道解决方法?
ali_m 2015年

15

检查引导程序重采样。在R帮助中搜索引导功能。根据重新采样的数据,您可以估计几乎所有内容的置信区间。


同意。这是最好的方法。在我看来,在生物医学科学中未得到充分利用。
pmgjones 2012年

10
考虑使用平滑的引导程序来估计总体分位数,因为在这种情况下常规的boostrap似乎存在问题-可以在此pdf中找到参考。如果您只对理论中位数感兴趣,可以使用Hodges-Lehman估计量-例如R wilcox.test(..., conf.int=TRUE)函数提供的。
caracal 2012年

4

还有其他方法:一种基于Wilcoxon秩和检验,适用于具有连续性校正的一个样本。在R中可以提供为:

wilcox.test(x,conf.level=0.95,alternative="two.sided",correct=TRUE)

这里讨论了大卫·奥利夫(David Olive)的中位数CI:

中位数CI


1

基于qbinom方法的结果不适用于小样本。假设x有10个分量。然后qbinom(c(.025,.975),10,.5)给出2和8。结果间隔不将下尾的统计与上尾的统计对称;您应该得到2和9,或者3和8。正确的答案是2和9。您可以在SAS中检查proc单变量。抓住这里是您需要的上下概率不超过.025;较低的分位数不执行此操作,因为它等于或小于0.025。您之所以会保存在底部,是因为应该将应为1的计数映射到二阶统计量(计数为0),因此取消了“ off by by”(加一)。这种偶然的取消不会发生在最前面,因此您在这里得到了错误的答案。代码sort(x)[qbinom(c(.025,.975),length(x),. 5)+ c(0,1)]几乎可以工作,.5可以用其他分位数替换以获取其他分位数的置信区间,但是当存在P [X <= a ] =。025。例如,参见希金斯,非参数统计。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.