参数设置
数据分布
随机数采用确定性LCG(seed=42)。较大的B会稍微增加计算时间。
原始数据与自助均值分布
上:原始数据直方图(蓝色)/下:B次自助均值的分布(绿色)+ 2.5/97.5百分位线(红色虚线)
理论与主要公式
对原始数据 $x_1,\ldots,x_N$ 进行 $B$ 次有放回重抽样,对每个重抽样计算统计量 $T^*_b$。
自助法标准误差:
$$\widehat{\mathrm{SE}}_{\text{boot}} = \sqrt{\frac{1}{B-1}\sum_{b=1}^{B}\left(T^*_b - \bar{T^*}\right)^2}$$
95%置信区间(百分位法):
$$\left[T^*_{(0.025)},\; T^*_{(0.975)}\right]$$
均值的理论SE(参考,高斯分布情形):
$$\mathrm{SE}(\bar{x}) = \frac{\sigma}{\sqrt{N}}$$
在默认 $N=100,\,\sigma=2$ 下,理论 $\mathrm{SE}\approx 0.20$,CI宽度约 $0.78$。
什么是自助法置信区间模拟器
🙋
我想给问卷数据的均值加一个「±多少」的范围,但数据不是正态分布,还能算置信区间吗?
🎓
这正是自助法(Bootstrap)的用武之地。简单来说,对手头的N个数据点做「可以重复抽取的有放回抽样」B次,得到B个伪数据集,在每个伪数据集上计算均值,就得到了均值的经验抽样分布。在上面的模拟器里把 $N=100,\,B=1000$ 保持默认,看那条绿色直方图——它近似回答「如果同样的实验重复1000次,均值的波动会有多大」。
🙋
咦,只是从同一份数据里反复抽,怎么就能体现波动?
🎓
的确听起来神奇。但因为是有放回抽样,某个点可能被抽3次,另一个点一次也没被抽到,这恰好模拟了「从总体重新取N个数」的随机性。Bradley Efron在1979年提出这个方法后,过去没有标准误差公式的统计量也突然能算SE了,自助法因此成为现代统计学的基石之一。
🙋
原来如此!「均值的95%CI」那张卡片显示像 [9.6, 10.4] 这样,意思是「真实均值有95%的概率落在这范围内」吗?
🎓
严格说稍有不同——它意味着「若把整个流程重复100次,约95个所得区间会覆盖真值」。某一具体区间是否「中奖」是确定的、未知的。还要注意:增大B并不会让区间变窄。试着把 $B=5000$,绿色直方图变得更光滑,但红色虚线(CI边界)几乎不动。让区间变窄的不是B而是数据量N。把 $N$ 从100增加到400,区间宽度会减半,因为 $\mathrm{SE}\propto 1/\sqrt{N}$。
🙋
还有,把数据分布切换到「对数正态」后,均值和中位数的95%CI出现在完全不同的位置上!
🎓
观察得好。对数正态这类右偏分布中,均值会被极端值拉扯,但中位数几乎不动。实务里像收入、房价、失效时间这种偏分布,主流做法就是用自助法给中位数算CI。自助法最大的优势就是「无论你关心的统计量是什么、有没有解析的SE公式,做法一模一样」。
常见问题
有放回抽样是把抽到的样本放回后再抽下一个,因此同一个数据点可能被多次抽到。从N个点有放回地抽N次,约63%的原始点至少被抽到一次,另外37%一次都不会被抽到,这种随机性正是不同重抽样之间差异的来源。无放回抽样最终总会得到原始数据本身,所以自助法必须使用有放回抽样。
当N在10~20左右时,原始数据本身就可能无法代表总体,自助分布与真实抽样分布会显著偏离。特别是重尾数据或中位数估计,N小的情况下区间表面上看起来很窄,实际可靠性却很低,是典型的「过度自信」陷阱。教科书建议至少 N≥30,最好 N≥100。本工具中把N降到20,可观察到重抽样分布变成阶梯状、CI明显抖动的现象。
本工具采用百分位法(直接取自助分布的2.5%和97.5%分位数),实现最简单。BCa法(偏差校正+加速)会对偏差和偏度做修正,精度更高;自助t法每次重抽样都重新估计标准误差,构造类t分布。BCa是现代实务的标准做法,但对对称分布而言,百分位法已经能给出相当实用的结果。
会用。例如从有限的材料试件估计疲劳强度的置信下限,或从若干次CFD/FEM分析结果给出设计量的CI。在蒙特卡洛可靠性分析里,常需要给「分位点(90%值、99%值)」配CI,由于没有现成的解析公式,自助法尤其有用。可靠性工程中威布尔分布等参数估计的不确定性,也常用自助法给出区间。
实际应用
医学与临床统计:临床试验样本量有限且分布形式未知,常用自助法给生存时间中位数、组间差异、风险比配置信区间。Kaplan-Meier曲线的置信带、风险比的非对称CI都是典型的自助法应用。
机器学习模型评估:对测试集上的准确率、AUC、F1等指标做自助重抽样,得到模型性能的CI,并检验两个模型是否显著不同。「.632 自助法」与交叉验证结合,是小数据集泛化误差估计的标准做法。
金融工程的风险评估:从历史收益序列有放回抽样,构造伪未来情境,估计VaR(在险价值)与期望损失的置信区间。无需正态假设,从而避免低估市场中常见的「重尾」风险。
地震、气象等稀有事件分析:从有限的观测记录估计「百年一遇」极值时,对极值分布的参数估计配上自助法CI。即使是没有解析SE公式的复杂统计量,自助法的流程依然完全一致,这是它在这类问题中的决定性优势。
常见误解与注意事项
最常见的错误是认为「增大B就能让CI变窄」。增大自助重抽样次数B会让重抽样分布更加光滑、CI估计更稳定,但CI宽度本质上由原始数据量N决定。在本工具中固定 $N=100$,把 $B$ 从100变到5000:绿色直方图越来越光滑,但红色虚线(CI边界)几乎不动。把 $N$ 从100增到400,CI宽度才会减半,这是因为 $\mathrm{SE}\propto 1/\sqrt{N}$。
第二个常见误解是把「95% CI」解读为「真值落在这一具体区间内的概率是95%」。严格的频率主义说法是「重复整个流程多次,95%的所得区间会覆盖真值」。把「这一特定区间含真值的概率」当成95%属于贝叶斯可信区间(credible interval),与频率主义置信区间是概念上不同的对象。日常对话里两者感觉差不多,但论文和报告中应严格区分。
最后,「自助法万能」也是危险的想法。当原始数据极少(N<20)、面对极值统计量(最大值/最小值)、或重尾分布的方差时,自助分布会与真实抽样分布显著偏离。在本工具中把数据分布换为「对数正态」并把 $N$ 降到20:均值CI会变得明显不对称,且随种子大幅波动。这种情形下应考虑BCa校正、参数自助法等更高级的方法。