如何计算蒙特卡洛模拟估算结果的置信区间
解答
完全可以通过精确公式计算得到置信区间,不需要依赖数值模拟。你遇到的问题本质是二项分布总体比例的置信区间估计:每个采样点命中目标物体的概率p等于「物体真实面积/总采样区域面积」,n次独立采样命中m次时,我们只需要先算出p的置信区间,再乘以总采样区域面积,就能得到你要的面积区间a₁、a₂。
常用计算方法
1. 正态近似法(适合大样本场景,你的需求完全够用)
当采样量n足够大(一般要求n*(m/n) > 5且n*(1 - m/n) > 5,你的使用场景完全满足),可以用正态分布近似二项分布,计算非常简单:
- 先算样本命中比例:
p_hat = m / n - 计算标准误:
SE = sqrt(p_hat * (1 - p_hat) / n) - 取对应置信度的Z分位数:
- 50% 置信度:
z = 0.6745 - 90% 置信度:
z = 1.645 - 99% 置信度:
z = 2.576
- 50% 置信度:
- 比例的置信区间为
[p_hat - z*SE, p_hat + z*SE],乘以总采样面积就是最终的面积区间a₁、a₂。
我们可以用你示例中100次采样、99%置信度的场景验证:p_hat=0.5,SE=sqrt(0.5*0.5/100)=0.05,区间为0.5 ± 2.576*0.05 = [0.3712, 0.6288],和你模拟得到的0.37..0.63几乎完全一致,差值只是模拟的随机波动。
2. 精确置信区间(适合小样本/极端比例场景)
如果采样量很小,或者命中比例接近0/1,正态近似的误差会变大,可以用Clopper-Pearson精确区间或者威尔逊得分区间,这两种方法没有近似误差,完全基于二项分布的累积概率计算,只是计算复杂度比正态近似稍高。
适配你的需求
你要给btdu工具添加置信度提示,直接用正态近似法就足够,计算成本几乎为零,结果精度完全满足普通用户的感知需求,不需要跑模拟。算完面积的误差范围后直接转换成存储容量单位输出即可。
内容的提问来源于stack exchange,提问作者Vladimir Panteleev
相关产品推荐
相关产品推荐

