是根据样本数据得出结论和预测总体的强大工具。它 并了解不同选择的有效性。统计推断的一种流行应用是 ,我们在其中比较两个版本或处理以确定表现更好的那个。但是,当我们 ? 统计推断 使我们能够做出明智的决定 A/B 测试 向实验中 引入更多版本或处理时会发生什么 在实验中引入额外的版本似乎是做出更好决策的机会。 ,如果处理不当, 。这个挑战被称为 。 不幸的是 可检验假设数量的增加会导致误导性结果和错误决策 多重比较问题 在这篇文章中,我解释了多重假设检验的概念、它的潜在缺陷,并给出了一种由 Python 模拟支持的可能解决方案。 什么是多重假设检验? 要了解多重假设检验,让我们首先检查 的基本概念。 涉及两个变体的简单 A/B 测试 在 A/B 测试中,我们首先制定两个相互竞争的假设: 表示变体之间不存在差异, 表示存在差异。 零假设 备择假设 然后我们设置一个 ,表示为 。该阈值决定了 。常用的显着性水平为 0.05 (5%) 和 0.01 (1%),表示 显着性水平 alpha 拒绝原假设所需的证据量 原假设为真时观察到数据的概率。 运行实验并收集数据后,我们计算 。 。如果 p 值小于显着性水平 ,我们拒绝原假设而支持备择假设。 p 值 p 值表示如果零假设为真,则获得与观察到的数据一样极端或更极端的结果的概率 alpha 重要的是要注意,低 p 值表明有强有力的证据反对原假设,表明观察到的数据不太可能单独偶然发生。然而,这并不意味着确定性。 即使原假设为真,观察到样本之间差异的概率仍然不为零。 当我们遇到有 情况时,我们将其称为 。在这种情况下,复杂性会增加,因为我们需要仔细考虑同时进行多项测试的潜在影响。 多个替代假设的 多重假设检验 多重假设检验的缺陷 当我们在不调整显着性水平 的情况下检验多个假设时,就会出现多重假设检验的陷阱。在这种情况下,我们 ,这意味着我们倾向于 (找出差异) (根本没有差异)。 alpha 无意中夸大了“I 类”错误的比率 拒绝零假设 ,而这个零假设实际上是正确的 我们同时检验的假设越多,找到 假设的 p 值低于 并错误地得出显着差异结论的可能性就越大。 至少一个 alpha 为了说明这个问题,请考虑一个场景,我们要测试 假设以确定多个新网页设计中的哪一个可以吸引更多具有所需 的客户。假设我们知道 ,这意味着零假设适用于所有 个案例。 N alpha = 0.05 没有一个新设计比默认设计更好 N 然而,对于每种情况,有 5% 的概率(假设原假设为真)犯下 或 。换句话说,有 95% 的概率没有正确检测到误报。理论上, 测试中至少出现一次误报的概率等于 。例如,当 时,这个概率约为 40%,明显高于最初的 5%。 “I 类”错误 误报 N 1 - (1 - alpha)^N = 1 - 0.95^N N = 10 随着我们增加测试假设的数量,问题变得更加明显。即使在只涉及少数变体和子样本的场景中,比较的数量也可以快速累积。例如,为所有用户比较三种设计 D1、D2 和 D3,然后分别为 C1 国家的用户和 C1 以外的国家的用户进行比较,结果总共有九次比较。 很容易在不知不觉中进行多重比较,而没有意识到随后 I 类错误率的膨胀。 使用多重假设检验的鲑鱼复活 让我们深入研究一个 ,它强调了在测试多个假设时不控制“I 类”错误的后果。 有趣的例子 2009 年, 要了解这种意想不到的结果是如何产生的,我们需要探索 fMRI 扫描的本质。 一组研究人员对死去的大西洋鲑鱼进行了 fMRI 扫描,并惊人地发现大脑活动就好像它还活着一样! ,对每位患者进行大量测试。扫描仪监测血液氧合的变化,作为大脑活动的指标。研究人员通常专注于特定的感兴趣区域,这导致他们将整个身体体积划分为称为体素的小立方体。 。由于对高分辨率扫描的需求, fMRI 扫描仪作为广泛的实验平台 每个体素都代表一个假设,用于测试该特定立方体中是否存在大脑活动 fMRI 扫描仪最终会在单个程序中评估数千个假设。 在这种情况下,研究人员 适当 , 然而,这一结果与我们对 理解相矛盾。 ,说明解决 I 类错误问题的重要性。 故意 没有 纠正初始显着性水平 alpha = 0.001 他们在死去的鲑鱼中识别出三个具有大脑活动的体素。 鲑鱼确实死亡的 修正显着性水平后,类似复活的现象消失 每当在单个实验中测试多个假设时,应对这一挑战和控制 I 类错误就变得至关重要。可以采用各种统计技术(例如 来减轻与多重假设检验相关的夸大的误报率。 Bonferroni 校正) Bonferroni校正 是一种统计程序,专门用于解决假设检验期间多重比较的挑战。 Bonferroni 校正 理论 假设您需要在实验期间检验 假设,同时确保 I 类错误的概率保持在 以下。 N alpha 该过程的基本思想很简单: 。还记得至少一个误报概率的公式吗?在该公式中,我们有 ,可以降低它以降低整体概率。 降低拒绝每个替代假设的原假设所需的显着性水平 alpha 因此,为了在多个假设中实现至少一个误报的较低概率,您可以将每个 p 值不与 进行比较,而是与更小的值进行比较。 alpha 但“更小的东西”到底是什么? 事实证明,使用 作为每个单独假设的显着性水平可确保 I 类错误的总体概率保持在 以下。 bonferroni_alpha = alpha / N alpha 例如,如果您要检验 10 个假设 ( ) 并且所需的显着性水平为 5% ( ),则您应该将每个单独的 p 值与 进行比较因此,错误地拒绝至少一个真实零假设的概率不会超过 0.05 的期望水平。 N = 10 alpha = 0.05 bonferroni_alpha = alpha / N = 0.05 / 10 = 0.005 由于 ,这项非凡的技术之所以奏效,它表明 。虽然存在正式的数学证明,但视觉解释提供了直观的理解: 布尔不等式 事件并集的概率小于或等于它们各自概率的总和 因此,当在 显着性水平上测试每个单独的假设时,我们有一个 假阳性概率。对于 个这样的测试,“假阳性”事件并集的概率小于或等于各个概率的总和。其中,在所有 N 个检验零假设都成立的最坏情况下,等于 bonferroni_alpha = alpha / N bonferroni_alpha N N * bonferroni_alpha = N * (alpha / N) = alpha 实践 为了进一步支持前面讨论的概念,让我们 我们将观察结果并评估 Bonferroni 校正的有效性。 在 Python 中进行模拟 。 考虑一个场景,我们在单个测试中有 10 个备选假设。假设在所有 10 种情况下,零假设都为真。您同意 的显着性水平适合您的分析。 alpha = 0.05 然而,如果不对夸大的 I 类错误进行任何校正,我们预计出现至少一个假阳性结果的理论概率约为 40%。在应用 Bonferroni 修正后,我们预计这个概率不会超过 5%。 对于特定的实验,我们要么得到至少一个假阳性,要么没有。只有在多次实验的规模上才能看到这些概率。 然后让我们对每个单独的实验进行 100 次模拟,并计算至少有一个假阳性(p 值低于显着性水平)的实验数量! 您可以在我的 GitHub 存储库中找到包含运行此模拟和生成图形的所有代码的 文件 - .ipynb IgorKhomyanin/blog/bonferroni-and-salmon import numpy as np import matplotlib.pyplot as plt # To replicate the results np.random.seed(20000606) # Some hyperparameters too play with N_COMPARISONS = 10 N_EXPERIMENTS = 100 # Sample p-values # As we assume that null hypothesis is true, # the p-value would be distributed uniformly sample = np.random.uniform(0, 1, size=(N_COMPARISONS, N_EXPERIMENTS)) # Probability of type I error we are ready to accept # Probabiltiy of rejecting null hypothesis when it is actually true alpha = 0.05 # Theoretical False Positive Rate # # 1. # Probability that we cocnlude a significant difference for a given comparison # is equal to alpha by definition in our setting of true null hypothesis # Then [(1 - alpha)] is the probability of not rejecting the null hypothesis # # 2. # As experiments are considered independent, the probability of not rejecting # the null hypothesis in [(1 - alpha)]^N # # 3. # Probability that at least one is a false positive is equal to # 1 - (probability from 2.) prob_at_least_one_false_positive = 1 - ((1 - alpha) ** N_COMPARISONS) # Observed False Positive Rate # We conclude that experiment is a false positive when p-value is less than alpha false_positives_cnt = np.sum(np.sum(sample <= alpha, axis=0) > 0) false_positives_share = false_positives_cnt / N_EXPERIMENTS # Bonferroni correction bonferroni_alpha = alpha / N_COMPARISONS bonferroni_false_positive_comparisons_cnt = np.sum(np.sum(sample <= bonferroni_alpha, axis=0) > 0) bonferroni_false_positive_comparisons_share = bonferroni_false_positive_comparisons_cnt / N_EXPERIMENTS print(f'Theoretical False Positive Rate Without Correction: {prob_at_least_one_false_positive:0.4f}') print(f'Observed False Positive Rate Without Correction: {false_positives_share:0.4f} ({false_positives_cnt:0.0f} out of {N_EXPERIMENTS})') print(f'Observed False Positive Rate With Bonferroni Correction: {bonferroni_false_positive_comparisons_share:0.4f} ({bonferroni_false_positive_comparisons_cnt:0.0f} out of {N_EXPERIMENTS})') # Output: # Theoretical False Positive Rate Without Correction: 0.4013 # Observed False Positive Rate Without Correction: 0.4200 (42 out of 100) # Observed False Positive Rate With Bonferroni Correction: 0.0300 (3 out of 100) 这是结果的可视化: 顶部图片将每个正方形表示为单个比较(假设检验)的 p 值。正方形越暗,p 值越高。 由于我们知道原假设在所有情况下都成立,因此任何显着的结果都将是误报。 中间的图代表没有校正的实验,而底部的图代表有 Bonferroni 校正的实验。 当 p 值低于显着性水平(由几乎为白色的方块表示)时,我们拒绝原假设并获得假阳性结果。 至少有一个假阳性的实验被涂成红色。 显然,修正有效。在没有校正的情况下,我们观察到 100 次实验中有 42 次至少有一次误报,这与理论 ~40% 的概率非常接近。然而, 通过 Bonferroni 校正,100 次实验中只有 3 次至少有一次误报,远低于所需的 5% 阈值。 ,进一步验证了它在多假设检验中的实用性。 通过这个模拟,我们可以直观地观察到 Bonferroni 校正在减轻误报发生方面的影响 结论 在本文中,我解释了多重假设检验的概念并强调了它的潜在危险。 如果处理不当,这种提高的概率可能会导致关于可能偶然发生的重大影响的错误结论。 当测试多个假设时,例如在 A/B 测试期间进行多重比较,观察到罕见的“假阳性”事件的概率会增加。 ,它调整每个假设的显着性水平。通过利用布尔不等式,此校正有助于将整体显着性水平控制在所需阈值,从而降低误报风险。 此问题的一种可能解决方案是 Bonferroni 校正 然而,重要的是要认识到每个解决方案都是有代价的。 这意味着可能需要更大的样本量或更强的效果来检测相同的差异。在决定实施 Bonferroni 校正或其他校正方法时,研究人员必须仔细考虑这种权衡。 当使用 Bonferroni 校正时,所需的显着性水平会降低,这会影响实验的功效。 如果您对本文讨论的内容有任何问题或意见,请随时分享。 参与对统计技术的进一步讨论和探索对于更好地理解和在实践中应用至关重要。 参考 - 我的 GitHub 存储库,其中包含运行模拟和生成图表所需的所有代码 IgorKhomyanin/blog/bonferroni-and-salmon 生成封面图片 Kandinsky 2.1 贝内特、CM、MB 米勒和 GL 沃尔福德。 “在死后大西洋鲑鱼中采用种间观点的神经相关性:多重比较校正的论据。” NeuroImage 47(2009 年 7 月):S125。 https://doi.org/10.1016/s1053-8119(09)71202-9 维基百科 - Boferroni 校正 维基百科 - 布尔不等式