R - power.prop.test、prop.test 和 A/B 测试中不等的样本量

机器算法验证 r 假设检验 统计学意义 部分 测试
2022-03-29 22:43:50

假设我想知道我想要确定两个成功比例的差异是否具有统计显着性的实验所需的样本量。这是我目前的流程:

  1. 查看历史数据以建立基线预测。假设在过去,采取行动会导致 10% 的成功率,而不采取行动会导致 9% 的成功率。假设这些结论尚未经过统计验证,但它们基于相对大量的数据(10,000 多个观察值)。
  2. 将这些假设插入 power.prop.test 以获得以下结果:

     power.prop.test(p1=.1,p2=.11,power=.9)
    
     Two-sample comparison of proportions power calculation 
    
              n = 19746.62
             p1 = 0.1
             p2 = 0.11
      sig.level = 0.05
          power = 0.9
    alternative = two.sided
    
  3. 所以这告诉我,为了检测比例之间的显着差异,我需要在 A/B 测试的每组中使用 ~20000 的样本量。

  4. 下一步是在每组中使用 20,000 个观察值进行实验。B 组(未采取行动)在 20,000 次观察中有 2300 次成功,而 A 组(采取行动)在 20,000 次观察中有 2200 次成功。

  5. 做一个 prop.test

    prop.test(c(2300,2100),c(20000,20000))
    
    2-sample test for equality of proportions with continuity correction
    
    data:  c(2300, 2100) out of c(20000, 20000)
    X-squared = 10.1126, df = 1, p-value = 0.001473
    alternative hypothesis: two.sided
    95 percent confidence interval:
    0.003818257 0.016181743
    sample estimates:
    prop 1 prop 2 
    0.115  0.105
    
  6. 所以我们说我们可以拒绝比例相等的原假设。

问题

  • 这种方法是否合理或至少在正确的轨道上?
  • alt="greater"即使 power.prop.test 用于双面测试,我是否可以在 prop.test 上指定并信任 p 值?
  • 如果 prop.test 上的 p 值大于 0.05 怎么办?我应该假设我有一个统计上显着的样本,但两个比例之间没有统计上的显着差异吗?此外,prop.test 中的 p 值是否具有统计显着性 - 即 power.prop.test 是否必要?
  • 如果我不能进行 50/50 拆分而需要进行 95/5 拆分怎么办?有没有一种方法可以计算这种情况下的样本量?
  • 如果我不知道我的基线预测应该是什么比例怎么办?如果我猜测并且实际比例有偏差,那会使我的分析无效吗?

您可以填补的任何其他空白将不胜感激 - 对于这篇文章的复杂性质,我深表歉意。谢谢!

1个回答

这种方法是否合理或至少在正确的轨道上?

是的,我认为这是一个非常好的方法。

我可以在 prop.test 上指定 alt="greater" 并相信 p 值,即使 power.prop.test 是用于双面测试的?

我不确定,但我认为你需要使用alternative="two.sided"for prop.test

如果 prop.test 上的 p 值大于 0.05 怎么办?我应该假设我有一个统计上显着的样本,但两个比例之间没有统计上的显着差异吗?此外,prop.test 中的 p 值是否具有统计显着性 - 即 power.prop.test 是否必要?

是的,如果 p 值大于 0.05,则无法确定样本之间存在可检测的差异。是的,统计显着性是 p 值固有的,但在您开始实验以确定样本量之前仍然需要 power.prop.test 。power.prop.test用于设置您的实验,prop.test用于评估您的实验结果。

顺便说一句 - 您可以计算每个组的置信区间,看看它们是否在您的置信水平上重叠。您可以按照以下步骤来计算分布中的许多置信区间

为了形象化我的意思,看看这个计算器并插入你的示例数据: http ://www.evanmiller.org/ab-testing/chi-squared.html#!2300/20000;2100/20000@95

结果如下:

每组的置信区间

请注意它提供的显示每个组的置信区间范围的图形。

如果我不能进行 50/50 拆分而需要进行 95/5 拆分怎么办?有没有一种方法可以计算这种情况下的样本量?

这就是您需要使用power.prop.test的原因,因为拆分无关紧要。重要的是您满足每个组的最小样本量。如果您进行 95/5 拆分,那么达到 5% 的变异的最小样本量将需要更长的时间。

如果我不知道我的基线预测应该是什么比例怎么办?如果我猜测并且实际比例有偏差,那会使我的分析无效吗?

您需要在沙子上画一条线,猜测合理的可检测效果,并计算必要的样本量。如果您没有足够的时间、资源等来满足计算出的样本量power.prop.test,那么您将不得不降低您的可检测效果。我通常像这样设置它并运行不同delta的值,以查看该效果所需的样本量。

#Significance Level (alpha)
alpha <- .05

# Statistical Power (1-Beta)
beta <- 0.8

# Baseline conversion rate
p <- 0.2   

# Minimum Detectable Effect
delta <- .05

power.prop.test(p1=p, p2=p+delta, sig.level=alpha, power=beta, alternative="two.sided")