我运行了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))
所以我想基于随机样本/该群体的子集来估计人口的最小/最大/平均值/中位数
在Excel中有一个AddIn for MonteCarloanalysis,但我想在R中这样做。
谢谢!
答案 0 :(得分:1)
基于样本S获得中值置信区间的一种方法是采用S的自举重采样,计算每个样本的中值。让我们以你的例子为例(设置随机种子的可重复性):
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
答案 1 :(得分:1)
有一个单独的概念,即当前估计所代表的可能分位数周围的置信区间。例如,如果您取10个样本的中位数, 估计分布的第50个百分位数,但它是估计值,因此存在一些错误。要获得估计所代表的分位数范围,可以使用
中的binom.testbinom.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%的置信度。
请注意,自举会为您提供一个范围,其中潜在分布的真实中位数可能会落在其中,但对于偏差估计值(例如&#39; min&#39; a&#39; max&#39;,经验估计(例如max(rvec)
)是有偏见的。但是,上述方法将为您提供您最喜欢的统计量(最小值/最大值/中位数/平均值,第75百分位数等)可能落入的分布百分位数的置信区间。