一般来说,bootstrap的程序很好理解。例如如果我们有大小为10的样本集S,我们可以计算样本均值。假如我们对这个均值估计的性质感兴趣,比如这个均值估计会有多大的方差,我们可以用bootstrap方法来获得估计。具体来说,我们多次对样本集进行有放回再抽样获得一系列的大小相同的resample样本集,用它来进行推断。 但是这里从样本集中进行再抽样到底是什么含义却需要仔细思考。
标题中的两个词通常并不区分,但是有必要梳理一遍。
首先强调bootstrap的本质:
使用经验分布函数(EDF)代替未知的理论分布函数(TDF)。
你可能会问为何要做这种代替,原因很简单,因为背后的理论分布函数我们不知道。假如我们知道样本背后的理论分布是什么(例如为 N(0,1) ),我们就可以通过对这个 N(0,1) 进行不断抽样获得一系列的大小为10的样本集,来研究样本均值的分布。但是在实际中我们不知道这个总体是什么分布,所以我们可以使用经验分布函数(EDF)代替未知的理论分布函数(TDF)。这个EDF是个阶梯函数,假设样本集大小为n,EDF对每个样本点赋予概率 1/n 。Bootstrap的思路就是用这个经验分布EDF代替未知的理论分布TDF。
还是回到那个问题:对大小为n的样本集 S ,它有均值 X¯¯¯ ,如果我们对这个 X¯¯¯ 的性质感兴趣我们应该怎么办?
我们考虑四种情况:
1 知道理论分布,进行理论推导:
假如我们知道理论分布是 N(0,1) , 样本集S大小为n,数理统计的结论, X¯¯¯ 的分布为N(0,1/n)。
2 知道理论分布,进行Monte Carlo(MC)模拟:
假如我们知道理论分布,但是用数学分析手段困难,我们可以直接从这个分布中抽样来研究样本均值的分布。
3 不知道理论分布,通过经验分布EDF替代,进行理论推导
4 不知道理论分布,通过经验分布EDF替代,进行MC模拟
通常我们说的bootstrap是上面第4种情况。但是第3种情况也需要说明一下。我们首先解释第3种情况。
假如我们对 X¯¯¯ 感兴趣,假设我们手头只有一个样本集S: x1,x2,...,xn 。
按照bootstrap的思路,我们可以用样本S对应的EDF来代替X的分布。记住,这个经验分布EDF就是对S中每个样本点赋予概率 1n 。
在EDF的假设之下,我们将随机变量X记为 X∗ ,将 X¯¯¯ 记为 X¯¯¯∗ 以表示区别。也就是星号表示某个量是在EDF的假定之下。现在我们可以算出这个 X¯¯¯∗ 的期望和方差:
从上面的方差可以看出,bootstrap估计的的 X¯¯¯ 的方差,就是通常我们估计的值乘一个因子 n−1n 。
从上面可以看出来,bootstrap方法可以利用理论计算来获得我们关心的统计量性质。但是更常用的方法是通过MC方法。也就是通过经验分布替代理论分布,进行MC模拟。
现在,假设总体X的分布就是上面的经验分布EDF,我们如何通过MC方法求 X¯¯¯∗ 的分布?我们可以从EDF中抽样(注意,就是从样本集S中有放回抽样)组成了大小为n的样本集,计算一个 x¯ 。多次重复这个过程,例如1000次,就可以获得多个 X¯¯¯∗ 的实现,也就是 x¯1,x¯2,...,x¯1000 。根据这些模拟值,就可以获得 X¯¯¯∗ 分布的MC近似。
所以MC实际上是对 X¯¯¯∗ 分布的近似,也就是 X¯¯¯ 分布的bootstrap估计的近似。
所以,对于bootstrap方法,MC方法只是手段,用经验分布代替理论分布才是本质。文献中有这样的话:
a Monte Carlo approximation of the bootstrap estimate is obtained。
这句话是什么意思?如果X的分布假定为经验分布EDF,理论上说,随机变量 X¯¯¯ 就成了 X¯¯¯∗ ,它有一个特定的分布的,这个分布就是对 X¯¯¯ 真实分布的bootstrap estimate (就是上面的第3种情况)。
而由于这个EDF不便推导 X¯¯¯ 分布的bootstrap estimate,所以通过MC方法求解MC近似(就是上面的第4种情况)。
但是通常大家并不区分bootstrap估计和bootstrap估计的MC近似这两个名词。实际上,当MC重复的次数足够多,两者是很接近的。
了解这一点,我们就知道了bootstrap误差的来源了。第一个来源是源于用经验分布代替了理论分布,这肯定有偏差;第二个来源是用MC方法进行逼近产生的误差,这个误差可以增加再抽样的次数来减少。
最后,为什么bootstrap是有效的?
首先,对于某个分布F和其某个参数 θ ,如果我们用样本S计算估计值 θ^ 来估计 θ , θ^ 会随着每次抽样S的不同而围绕 θ 波动。现在,我们获得了一个样本集S,通过S获得了经验分布EDF,记为Fn。注意对于Fn来说,S就是总体。作为总体的S有一个参数 θ^ ,而我们对Fn进行抽样(就是对S进行有放回抽样)获得一系列的bootstrap集Sb,对每个Sb,使用与计算θ ̂同样的程序计算获得 θ^∗ 。这个 θ^∗ 就是对 θ^ 的估计。而不同的Sb会导致得 θ^∗ 围绕̂ θ^ 波动。注意,当样本集S中样本数n增大时,Fn会越来越接近F,所以从Fn中抽样会越来越接近从F中抽样,所以 θ^ 会接近 θ , θ^∗ 围绕 θ^ 的行为会接近 θ^ 围绕 θ 的行为。