R-使用power.prop.test& prop.test

时间:2014-07-17 17:35:23

标签: r

免责声明:我在Cross Validated中打开了类似的主题,但它没有得到任何答案。我决定在这里提出一个更简单的问题:

如何在实验前一起使用power.prop.testprop.test来确定足够的样本量,然后确定结论是否具有统计学意义?

实际上,非常感谢任何关于这两个函数(以及相关函数)的所有知识。

背景:我正在尝试为简单的A / B测试开发测试方法,范围从实验设置到分析。

1 个答案:

答案 0 :(得分:2)

根据您对人口比例的猜测,您可以编写一个绘制功率曲线的函数来确定样本大小(每组)以达到所需的功率水平。

以下是我粗暴的尝试。此功能为您提供包含样本大小和相应功率级别的数据框,以及可选的图。它需要以下参数:

## n = vector of sample sizes;
## desired_power = the power level you want to achieve (typically 0.8);
## p1 = population proportion of group 1;
## p2 = population proportion of group 2;
## plot = whether you want a power curve or not (by default yes).

DrawPowerCurve <- function(n, desired_power, p1, p2, plot=TRUE){
  powers <- sapply(n, function(x) power.prop.test(x, p1=p1, p2=p2)$power)
  n_power <- min(n[powers>desired_power])
  print(data.frame(n, powers))

  if(plot){
    plot(n, powers, type="l")
    segments(y0=desired_power, x0=0, x1=n_power, col="red")
    segments(y0=0, y1=desired_power, x0=n_power, col="red")
    text(paste("n =", n_power, " \nper group"), x=n_power, y=desired_power/2, pos=4)
    title(paste("Sample Size (n) per Group to Achieve Power of", desired_power))
  }
}

假设您希望确定每组的样本量,以达到所需的0.8的功效,给定的人口比例为0.5和0.6。然后情节显示每组需要390名参与者。

n <- seq(10, 1000, 5)
DrawPowerCurve(n, desired_power=0.8, p1=0.5, p2=0.6, plot=TRUE)

enter image description here