在R中,pwr.chisq.test出现错误

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)

Chi squared power calculation

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

NOTE: N is the number of observations

1个回答

2
我认为这个问题有一个“数字”解释。如果您查看该函数的代码,您会发现样本数量是由uniroot计算的,并且应该属于一个区间,其边界设置为1e-101e5。错误消息说明该区间不能给出结果:在您的情况下,上限太小了。
了解了这一点,我们可以简单地取一个更宽的区间:
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… 这是一个巨大的观察数。

谢谢您的回答。现在它可以工作了。这里的“N”是指最小总样本量还是每组的最小样本量? - Peter Pan
根据?pwr.chisq.test,"N:观测总数"。 - Vincent Guillemot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接