R:向量在 95% 置信区间内的最小值、最大值、平均值和中值(2.5 到 97.5 个百分位数)

R: min, max, mean and median of a vector within 95% confidence interval (2.5 to 97.5 percentiles)

I 运行 1000 次迭代使用 rnorm 生成法线偏差并将其保存在向量中:

rvec <- rnorm (1000, mean = 0.143927671, sd = 0.110680809)

我需要在 95% 置信区间(2.5 到 97.5 个百分位数)内找到向量的最小值、最大值、平均值和中值,R 中是否有任何函数可以做到这一点? 我试图使用 apply,但它似乎没有提供我想要的:

rmax = apply(rvec, 2, max, c(.025, 0.975))

所以我想根据 运行dom 样本/该人口的子集估计 min/max/mean/median 人口

在 Excel 中有一个用于 MonteCarlo 分析的加载项,但我想在 R 中这样做。

谢谢!

根据样本 S 获得中位数置信区间的一种方法是对 S 进行 bootstrap 重采样,计算每个样本的中位数。让我们以您为例(设置随机种子以实现可重复性):

set.seed(100)
rvec <- rnorm (1000, mean = 0.143927671, sd = 0.110680809)
samp.medians <- replicate(500, median(sample(rvec, length(rvec), replace=T)))
summary(samp.medians)
#    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#  0.1327  0.1425  0.1480  0.1473  0.1505  0.1615 
quantile(samp.medians, c(0.025, 0.975))
#      2.5%     97.5% 
# 0.1377611 0.1574934 

有一个单独的概念,即当前估计值代表的可能分位数周围的置信区间。例如,如果您取 10 个样本的中位数,那么 分布的第 50 个百分位的估计值,但它是 估计值 所以有一些错误。要获得您的估计值所代表的分位数范围,您可以使用 binom.test,如

binom.test(x=sum(rvec>median(rvec)),n=length(rvec),conf.level=0.95)
#> [some text omitted from the output of binom.test]
#> 95 percent confidence interval:
#>  0.4685492 0.5314508

这表明 median(rvec) 可能位于基础分布的第 46.9 个百分位和第 53.1 个百分位内,置信度为 95%。

请注意,bootstrapping 将为您提供一个范围,基础分布的真实中位数可能落入该范围内,但它对像 'min' 和 'max' 这样的有偏估计无效,对此,经验估计(例如 max(rvec))是有偏差的。但是,上述方法将为您提供您最喜欢的统计数据(min/max/median/mean、第 75 个百分位数等)可能落入的分布百分位数的置信区间。