如何进行精确的排列测试程序:迭代排列或使用一组组合?

机器算法验证 假设检验 p 值 置换检验 组合学
2022-03-29 02:15:30

我试图找到一篇文章来解释对所有排列进行详尽抽样的排列测试过程(不是蒙特卡罗方法),但找不到足够具体的资源来帮助我解决下面概述的歧义。例如,维基百科文章(https://en.wikipedia.org/wiki/Resampling_(statistics)#Permutation_tests)说

在此处输入图像描述

例如,给定一个组合数据集 (1, 2, 3),其中组 A 的长度为 2,组 B 的长度为 1,为简单起见,我不清楚“所有可能的划分方式”是否意味着 {(1, 2 ), (3)} 和 {(2, 1), (3), ...} 或者如果它们计数 "{(1, 2), (3)}" 和 "{(2, 1), (3 )}" 作为相同的划分。

查看各种代码示例,例如https://rosettacode.org/wiki/Permutation_test上的 Python、R、Julia 等示例,我看到排列测试通常实现如下:


给定两个样本 A 和 B

  1. 记录测试统计数据(例如,|A¯B¯|)
  2. 将样本 A 和 B 合并为一个大样本 AB
  3. 对于来自 AB 的长度(A)的组合:
    3a)计算排列统计量(例如,|A¯B¯|,其中 A' 是 3 的组合。 B' 是 AB 中不在 A' 中的所有样本)。
    3b) 记录排列统计
  4. 将 p 值计算为 3a) 中的排列统计量比 1 中的检验统计量更极端的比例。除以采样的组合数

但是,我们不应该对排列而不是长度 A 的组合进行采样吗?例如,如下所述(我以粗体突出显示与上一个过程的区别):


给定两个样本 A 和 B

  1. 记录测试统计数据(例如,|A¯B¯|)
  2. 将样本 A 和 B 合并为一个大样本 AB
  3. 对于来自 AB 的长度(AB)的排列:3a)计算排列统计量(例如,|A¯B¯|,其中 A' 是置换 AB 序列中的第一个 len(A) 个样本,B' 是 AB 中的剩余样本

  4. 将 p 值计算为 3a) 中的排列统计量比 1 中的检验统计量更极端的比例。除以采样的排列数


或者,为了提供一个简单的数字示例,请考虑以下 2 个示例

a = [1, 3] b = [2]

观察到的差异:obs = |mean(a) - mean(b)| = 2

使用“组合”程序,我们将采样以下内容:

(1, 2), (3) => 差异 0
(1, 3), (2) => 差异 2
(2, 3), (1) => 差异 4

其中,在 3 个案例中的 2 个案例中,我们会观察到与观察到的统计数据相同或更大的差异(即 p=2/3)

现在,使用排列,我们将得到以下结果:

(1, 2), (3) => diff 0
(1, 3), (2) => diff 2
(2, 1), (3) => diff 0
(2, 3), (1) =>差异 4
(3, 1), (2) => 差异 2
(3, 2), (1) => 差异 4

在这里,我们观察到 6 个案例中有 4 个的差异等于或大于观察到的统计量(p=4/6)

有没有人不再了解确切的程序并且手头有可靠的资源?谢谢!

1个回答

无论您是否采用组合或排列实际上都不会影响您的结果,因为排列的数量nA中的特定对象AnB中的特定对象B是相同的所有组合x1...xnAxnA+1...xnA+nB因为每组的大小不会改变。

也就是说,对于每个给定的组合,您将得到nA!×nB!无论每个集合中的值如何,排列都是组合的倍数。并且由于结果的值(组均值之间的差异)在同一组合的排列之间没有变化,因此在进行排列时每个特定结果的频率将被平等地缩放。因此,在实际计算分位数时,使用组合或排列没有区别。实际上,您在以下情况下凭经验证明了这一点nA=1nb=2每个结果的频率,D=0,2,4, 只是按比例缩放2当进行排列导致分位数相同时。

让我们假设样本独立的标准场景,我们想根据样本均值的差异来测试两个样本是否来自同一分布(零假设)

从技术上讲,如果您想测试这个特定假设,我认为更严格地“正确”采用每组的完整排列(而不是组合)集,因为在 null 下的分布假设组标签无关紧要,本质上是允许每个xi.在其他人面前接受每一个价值xji., 哪些组合不允许。

但同样,经验分布的分位数结果是相同的,因为每个结果的频率只是按相同的量缩放nA!×nB!,所以实际上没关系。