重新随机化是估计统计显着性的有效方法吗

机器算法验证 统计学意义 置换检验
2022-04-01 16:50:26

我是统计学的新手,我正在学习可汗学院的课程一个视频我不太明白。

这是要点。一位统计学家想知道哪辆公共汽车让她工作得更快:A 或 B。在 50 天内,她乘坐公共汽车 A 或公共汽车 B 并记录经过的时间。然后她计算每辆公共汽车的平均运行时间,并发现它们之间的差异是 8(A 更快)。这一切对我来说都很清楚。

现在是不清楚的部分。为了测试统计显着性,她进行了重新随机化:她只是将所有观察结果打乱,将它们分成两个相等的组并找到中值差异。她重复了很多次。然后她发现结果 8 出现在 9.3% 的重新随机化中,因此她得出结论,她的初始结果在统计上不显着。

我不明白为什么这是一种估计统计显着性的方法。这是一个有点极端的例子。想象巴士 A总是需要 9 分钟。巴士B总是需要10分钟。我已经对该数据进行了几次重新随机化模拟(例如对 A 和 B 进行 1000 次估计以及 100000 次重新随机化轮次),并且在大约 50% 的重新随机化中得到了结果 1(这对我来说很直观)。这是否意味着结果确实没有统计学意义(很奇怪,赢家很清楚)?或者重新随机化在估计统计显着性方面的应用有限(或没有)?

我知道有更好(和更常见)的方法来估计重要性,我的问题是关于重新随机化。

2个回答

随机化测试的想法是,如果给定的治疗对结果没有影响,那么该治疗的分配只是一种任意标签。Fisher 精确检验是第一个基于此概念的方法。)现在,如果我们有一些统计量,并且我们想知道它在没有治疗效果的零假设下的分布,我们可以通过随机重新标记来模拟估计这个零分布观察并查看我们的统计数据在这种情况下的行为,因为零假设实际上是正确的。

您给出的示例是一个有趣的示例,但请注意,我们将作为总线 A 更快的证据的不是平均时间差异的大小,而是总线 A总是更快的事实。因此,更明智的检验统计量将是更直接地衡量这一点的东西,例如Wilcoxon 秩和检验中使用的统计量。如果您使用秩和统计量进行随机化测试,那么您将获得高度“显着”的结果。

好的,我参加这个聚会有点晚了,但是虽然我同意 dsaxton 在第一段中所说的话,但我认为第二段迷路了。

重新随机化可以很好地为大量统计数据指定零分布。但是,您已经设法通过将两个病态分布(分别以 9 和 10 为中心的点分布)与中位数相结合来引发问题——在只有两个可能值的情况下,这个统计数据可能最不有用,因为它可以变成很不稳定。

我将尝试对几个样本大小进行比较,以显示这里发生的情况。它应该有助于解释 dsaxton 的见解,即一致性是真正的统计能力所在。

想象一下,我们在每辆公共汽车上乘坐一次。我们得到一个 9 和一个 10。我们随机化 10,000 次进行推理。有一半的人换了位置,有一半的人没有。因此,如果我们测量中位数,中位数差异的一半时间为 -1,一半时间为 1。同样对于均值,均值差异的一半时间为 -1,一半时间为 1 .

现在想象一下,我们在每辆公共汽车上乘坐了 10 次,产生了 10 次 10 和 10 次 9。我们重新随机化。这一次,大多数随机化导致每个样本中每 10 和 9 中大约有 5 个。对于每个样本,均值将形成大约 9.5 的正态分布(实际上是一个移位的二项式),给出以 0 为中心的差异。中位数的差异有时可能为 0——如果我们实际上在每个样本中每次都得到 5 个——给出中位数在每个 9.5 的样本中,但它更可能有轻微的不平衡。这种轻微的不平衡使中位数为 9 和 10 或 10 和 9。因此,大多数情况下,中位数的差异将是 -1 或 1,这与我们的实际结果相似,从而给出了额外的高 p 值。

似乎继续增加乘坐公共汽车的次数应该可以解决这个问题,但是虽然这会使平均值更加稳定——并将零值固定在 0 附近,但它实际上会破坏中位数。获得精确匹配的可能性越来越小,因此中间立场消失了。

好的。也许这是有道理的。我将包含一些 R 代码以使其具体化。

n = 10
a = rep(10,n) #initial samples 
b = rep(9,n)
joint.sample = c(a,b) #Combining samples for ease
bootstraps = 10000 #Number of replications

est.mean = mean(a) - mean(b) #Estimate of treatment    
boot.mean = replicate(bootstraps, {
  new.sample = sample(joint.sample)
  mean(new.sample[1:n]) - mean(new.sample[1:n+n])
}) #Simply resamples and takes means of the two groups
CI.mean = quantile(boot.mean,prob=c(0.025,0.975) #Calculates a CI
pval.mean = mean(boot.mean >= est.mean)*2 #Two-sided p-value

#Same things but with median
est.median = median(a)-median(b)
boot.median = replicate(bootstraps, {
  new.sample = sample(joint.sample)
  median(new.sample[1:n]) - median(new.sample[1:n+n])
})
CI.median = quantile(boot.median,prob=c(0.025,0.975) 
pval.median = mean(boot.median >= est.median)*2 

这应该会为您提供结果,表明具有平均值的随机化会强烈拒绝这些相同。随意摆弄样本大小 n 以查看它如何影响事物,但大多数情况下,对于这样一个明确的案例,不需要大样本即可发现差异。您还应该能够拒绝使用中位数 - 但您需要一对不同的分布,以便中位数移动得更多。我认为应该做任何连续的事情,然后是样本量的问题。

一个注意事项。我在这里使用示例函数的默认值来指示我是否要替换。一般来说,您需要认真考虑使用哪种采样类型,因为这会影响结果。