R中的pwr.chisq.test错误

R中的pwr.chisq.test错误,r,error-handling,chi-squared,sample-size,R,Error Handling,Chi Squared,Sample Size,我现在试图估计网站转换率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,

我现在试图估计网站转换率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是观察次数

我认为有一个“数字”的解释。如果查看函数的代码,可以看到样本数是由
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

w谢谢你的回答。现在它起作用了。“N”是最小总样本量还是每组的最小样本量?根据
?pwr.chisq.test
,“
N:观察总数
”。