3

我现在正在尝试估计网站转换率的 A/B 测试所需的样本量。当我的转化率值较小时,pwr.chisq.test 总是给我错误消息:

# conversion rate for two groups
p1 = 0.001
p2 = 0.0011

# degree of freedom
df = 1

# effect size
w = ES.w1(p1,p2)

pwr.chisq.test(w,
               df = 1,
               power=0.8,
               sig.level=0.05)

**Error in uniroot(function(N) eval(p.body) - power, c(1 + 1e-10, 1e+05)) : 
  f() values at end points not of opposite sign**

但是,如果我对 p1 和 p2 有较大的值,则此代码可以正常工作。

# conversion rate for two groups
p1 = 0.01
p2 = 0.011

# degree of freedom
df = 1

# effect size
w = ES.w1(p1,p2)

pwr.chisq.test(w,
               df = 1,
               power=0.8,
               sig.level=0.05)

卡方幂计算

      w = 0.01
      N = 78488.61
     df = 1   sig.level = 0.05
  power = 0.8

注意:N 是观察次数

4

1 回答 1

2

我认为对此有一个“数字”的解释。如果你看一下函数的代码,你可以看到样本的数量是由计算的,uniroot并且应该属于一个边界设置为1e-10和的区间1e5。错误消息指出此间隔不会给您结果:在您的情况下,上限太小。

知道了这一点,我们可以简单地取一个更宽的区间:

w <- 0.00316227766016838
k <- qchisq(0.05, df = 1, lower = FALSE)
p.body <- quote(pchisq(k, df = 1, ncp = N * w^2, lower = FALSE))
N <- uniroot(function(N) eval(p.body) - 0.8, c(1 + 1e-10, 1e+7))$root

“解决方案”是N=784886.1......这是大量的观察结果。

于 2015-05-07T16:23:10.017 回答