4. A/B测试基础:假设检验、第一类错误、第二类错误、统计功效

在信贷逾期预测模型的A/B测试中,我们并非简单比较两个模型的逾期率高低,而是需要通过假设检验来科学判断:观察到的差异究竟是模型真实改进带来的,还是随机波动造成的。理解假设检验、两类错误与统计功效,是设计可信A/B测试的基石。

4.1 假设检验的核心逻辑

假设检验遵循“反证法”思想:先假设模型没有效果(原假设),然后计算在当前数据下出现“比实际观测更极端结果”的概率(p值)。如果这个概率足够小(小于显著性水平α),我们就拒绝原假设,认为模型确实有效。

关键概念速览
  • 原假设 H₀:新模型与基线模型的逾期率无差异(或新模型不优于基线)。
  • 备择假设 H₁:新模型的逾期率显著低于基线模型。
  • 显著性水平 α:我们愿意承受的“误判风险”上限,通常设为 0.05 或 0.01。
  • p值:在原假设为真的前提下,观察到当前结果(或更极端结果)的概率。p < α 时拒绝 H₀。
假设检验决策流程 假设检验决策流程 计算检验统计量 & p值 p值 < 显著性水平 α ? 拒绝 H₀ 新模型显著优于基线 不拒绝 H₀ 差异不显著,维持现状

4.2 第一类错误(α错误)与第二类错误(β错误)

任何假设检验都无法做到100%准确。当我们基于样本数据做出决策时,可能犯以下两类错误:

错误类型 通俗理解 统计含义 在A/B测试中的表现
第一类错误(α) “假阳性” — 虚惊一场 原假设为真,但我们错误地拒绝了它 模型实际无效,却误判为有效,上线后可能增加坏账
第二类错误(β) “假阴性” — 错失良机 原假设为假,但我们未能拒绝它 模型实际有效,却误判为无效,错失降低逾期率的机会
业务权衡:在信贷风控中,第一类错误(上线无效模型)的代价通常高于第二类错误(错过有效模型)。因此,我们倾向于设置更严格的 α(如 0.01),并接受相对较高的 β(如 0.2),即统计功效为 0.8。

4.3 统计功效(Statistical Power)

统计功效 = 1 - β,表示当模型确实有效时,我们的A/B测试能够正确检测出这种效果的概率。功效越高,越不容易错过真正优秀的模型。

影响统计功效的四个核心因素:

  • 样本量(n):样本越大,功效越高。这是我们在测试设计阶段最可控的因素。
  • 效应量(Effect Size):新模型相对于基线的预期提升幅度。效应量越大,越容易被检测到。
  • 显著性水平(α):α 越宽松(如 0.05 vs 0.01),功效越高,但第一类错误风险也增大。
  • 数据变异性(σ):逾期率的波动越小,功效越高。可通过分层抽样或更精细的指标设计来降低。
统计功效影响因素 统计功效影响因素 统计功效 = 1 - β 样本量 ↑ 效应量 ↑ 显著性水平 α ↑ 数据变异性 ↓ ↑ 表示该因素增大时功效提升,↓ 表示该因素减小时功效提升

4.4 样本量估算:从功效反推

在A/B测试设计阶段,我们需要根据预期的效应量、设定的 α 和 β,反推所需的最小样本量。以下是常用的近似公式(基于两样本比例检验):

n = (Z_α/2 + Z_β)² × [p₁(1-p₁) + p₂(1-p₂)] / (p₂ - p₁)²

其中:
  n      = 每组所需样本量
  Z_α/2 = 对应显著性水平 α 的双侧Z值(α=0.05 时取 1.96)
  Z_β   = 对应功效 1-β 的单侧Z值(功效=0.8 时取 0.84)
  p₁    = 基线模型逾期率
  p₂    = 新模型预期逾期率
实战案例:基线模型逾期率 p₁ = 3.0%,期望新模型降至 p₂ = 2.5%(效应量 0.5 个百分点)。设 α = 0.05,功效 = 0.80,代入公式:
n = (1.96 + 0.84)² × [0.03×0.97 + 0.025×0.975] / (0.005)² ≈ 7,840
即每组至少需要约 7,840 个样本,两组共约 15,680 个样本。

4.5 常见误区与避坑指南

误区 正确做法
p值越小,模型效果越好 p值只反映统计显著性,不反映实际业务效果大小。需同时关注效应量(如逾期率绝对降幅)。
样本量越大越好,无需提前计算 样本量过大会导致微小且无业务意义的差异也被判定为“显著”。应基于最小业务有意义效应量计算所需样本。
α 固定为 0.05 即可 在信贷场景中,可根据第一类错误的业务代价调整 α。代价高时用 0.01,探索性测试可用 0.10。
测试结束后才计算功效 功效应在测试设计阶段确定。事后功效分析(post-hoc power)在统计上存在争议,应避免。
⚠️ 重要提醒:不要在A/B测试过程中“偷看”结果并提前停止测试。这种做法会严重膨胀第一类错误率(α inflation)。如需中途监测,应使用序贯检验(sequential testing)或设置提前停止边界。