# 重抽样
在统计学中,重抽样是指从观测数据中反复地抽取数据值,目标是评估一个统计量中的随机变异性。
重抽样还可用于评估并提高一些机器学习模型的准确性。
例如,对于使用多个自助数据集构建的决策树模型,可以通过 Bagging 过程计算其平均值,参见 6.3 节。
- 重抽样过程主要有两种类型:
自助法 :自助法用于评估一个估计量的可靠性,我们在前面已经做了介绍(参见 2.4 节)。
置换检验 : 本节将介绍用于检验假设的置换检验,它通常涉及两组或多组。
主要术语
- 置换检验
将两组或多组样本组合在一起,并将观测值随机地(或穷尽地)重新分配给重抽样。 同义词:随机化检验、随机置换检验、准确检验
- 有放回,无放回
在抽样时,所抽取的元素在下一次抽取前是否放回样本中。
# 3.3.1 置换检验 Permutation Test
置换过程涉及两组或多组样本,通常是 A/B 测试或其他假设检验中的组。
置换意味着改变一组值的顺序。
要对一个假设进行置换检验,
首先要将从 A 组和 B 组(当然还可以包括其他组,例如 C、D......)中得到的结果组合在一起。
这就是零假设的逻辑,即无论处理指定给哪个组,都是无差别的。
然后,我们从组合集中随机抽取出各个组,并查看组间的差异情况,实现对假设的检验。
- 置换过程如下
- 将各个组得出的结果组合为一个数据集
- 对组合得到的数据做随机混洗
然后从中随机抽取(有放回)一个规模与 A 组相同的重抽样样本。 - 在余下的数据中,随机抽取(无放回)一个规模与 B 组相同的重抽样样本
- 如果还有 C 组、D 组甚至更多的组,执行同样的操作
- 无论对原始样本计算的是哪一种统计量或估计量(例如,组比例差异)
现在对重抽样进行重新计算,并记录结果。这构成了一次置换迭代。 - 重复上述步骤 R 次,生成检验统计量的置换分布。
现在我们回头查看所观测到的组间差异,并与置换差异进行对比。
如果观测到的差异位于置换差异内,那么置换检验的结果并不能证实任何事情。
因为观测到的差异落在偶然可能产生之差异的范围内。
但是,如果观测到的差异大部分落在置换分布之外,那么我们就可 以得出“与偶然性无关”这一结论。
如果使用专业术语描述,我们称差异是统计显著的(参见 3.4 节)。
# 3.3.2 例子:Web黏性
有一家公司提供较高价格的服务,现在,该公司想要测试两种 Web 显示,以确定哪一种能带来更高的销售额。
由于该公司提供的服务价格较高,因此销量并不大,而且销售周期很长。
要想确定哪种 Web 显示的效果更好,该公司需要很长的时间才能积累到足够多的销售数据。 鉴于此,该公司决定使用一种代理变量来度量结果,并使用详细描述公司服务的内部页面替代。
- 代理变量
是一种可以代表我们所关注的真正变量的变量,真正关注的变量可能不可用,也可能度量的成本太高或耗时过长。
例如,在气候研究中,远古冰芯的含氧量被用作温度的代理变量。
最好至少有一点关于真正变量的数据,这样可以评估真正变量与代理变量间的关联程度。
在本例中,一个潜在的代理变量是着陆页上的点击数。当然,更好的代理变量是访问者在页面上停留的时间。
可以认为,如果一个 Web 显示页面能吸引人们关注更长的时间,那么它就可能会带来更高的销售额。
因此,我们这里所采用的度量是页面 A 与页面 B 的平均会话时间。
由于检验中所使用的 Web 页面是内部专用的,因此并不会有大量的访问者。
另外应注意的是,我们使用了 Google Analytics(GA) 工具测定会话时间,但是 GA 无法测定访问者上次访问的会话时间。
不过,GA 并不从数据中删除该会话,而是将记录置为零,因此我们需要对数据做一些额外的处理,以从数据中删除这些会话。
基于此,我们就两种不同的 Web 显示合计得到了 36 个会话,其中页面 A 的会话为 21 个,页面 B 的会话为 15 个。
为了直观地比较会话时间,我们使用 ggplot 实现了箱线图的并排绘制。
图中显示了页面 B 具有比页面 A 更长的会话时间,平均比页面 A 高出约 35.7 秒。
但问题在于,这一差距是否落在随机性可能生成的范围内,即是否是统计显著的。
要回答这一问题,一种方法是应用置换检验,将所有会话时间组合在一起,然后反复做随机混洗。
再将数据分为一个具有 21 个 观测值的组(页面 A,n = 21) 和一个具有 15 个观测值的组(页面 B,n = 15)。
我们实现了一个进行置换检验的函数,该函数可以将 36 个会话时间随机分配给一个具有 21 个元素的组(页面 A)和一个具有 15 个元素的组(页面 B)。
该函数的工作原理是,无放回地抽样 n2 次,并分配给 B 组,余下的 n1 次抽样分配给 A 组。函数返回两组均值之间的差异。
我们指定 n2 = 15,n1 = 21,并调用该函数 R = 1000 次,然后绘制所生成的会话时间差异分布情况的直方图。
- 页面 A 和页面 B 会话时间差异的频数分布
从图中可以看出,对于页面会话时间,随机置换的均值差异通常会超出观测到的差异(图中的垂直线)。
这表明,页面 A 和页面 B 会话时间 之间的观测差异落在随机变异的范围内,因此不是统计显著的。
# 3.3.3 穷尽置换检验和自助置换检验
置换检验除了使用前面介绍的随机混洗过程(也称随机置换检验或随机检验)之外,还有两种重要变体:
- 穷尽(exhaustive)置换检验
穷尽置换检验并不是随机混洗并分组数据,而是尝试所有可能的分组。 穷尽置换检验只适用于规模较小的样本。
如果做大量的重复混洗,那么随机置换检验的结果会近似于穷尽置换检验的结果,并在极限上逼近。 穷尽置换检验有时也被称为准确检验,因为其统计学属性确保了零模型不会被检验为比 α 值水平更显著(参见 3.4 节)。
- 自助(bootstrap)置换检验
自助置换检验是在置换检验第二步和第三步的抽取中,进行有放回抽样,而非无放回抽样。
这样,重抽样过程不仅建模了随机分配对象给处理的过程,而且建模了从总体中随机抽取对象的过程。
这两个都是统计学过程,但是它们之间的差别过于复杂,因而不被数据科学实践所关注。
# 3.3.4 置换检验:数据科学的底线
在探索随机变异性中,置换检验是一种十分有用的启发式过程。它很容易编码,也很容易理解和解释。
针对统计学中那些基于公式的形式主义和“假决定论”,置换检验提供了切实可行的绕行方法。
不同于依赖于统计学公式的方法,重抽样的一个优点在于给出了一种更加近乎于“万能” 的推断方法。
它所适用的数据可以是数值,也可以是二元的,样本规模可以相同,也可以不同;
并且无须假设数据符合正态分布。
# 本节要点
- 置换检验将多个样本组合在一起,并做随机混洗。
- 对混洗后的值做分组并重抽样,计算我们感兴趣的统计量。
- 重复上述过程,并在表格中记录重抽样统计量的情况。
- 对比统计量的观测值与重抽样分布,就可以判定观测到的样本间差异是否由偶然性导致的。
# 拓展阅读
- Eugene Edgington 和 Patrick Onghena 合著的 Randomization Tests 不要过度沉溺于该书中的非随机抽样内容。
- Peter Bruce 撰写的 Introductory Statistics and Analytics: A Resampling Perspective 一书