You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言power.prop.test函数批量计算样本量及最大测试次数

解决方案

我帮你整理了完整的R代码实现,既能批量处理你的测试场景,又能精准得到你需要的样本量和最大测试次数:

# 1. 把测试场景整理成结构化数据框
test_scenarios <- data.frame(
  Test = c(1, 2),
  P1 = c(0.1, 0.1),
  P2 = c(0.11, 0.12),
  Population = c(1000, 1500)
)

# 2. 初始化结果列,用来存储计算出的样本量和最大测试次数
test_scenarios$n_total <- NA
test_scenarios$Max_Tests <- NA

# 3. 遍历每个场景计算结果
for (i in 1:nrow(test_scenarios)) {
  # 调用power.prop.test,这里默认用80%的检验效能和0.05的显著性水平,你可以按需调整
  power_calc <- power.prop.test(
    p1 = test_scenarios$P1[i],
    p2 = test_scenarios$P2[i],
    power = 0.8,
    sig.level = 0.05
  )
  
  # 注意:power.prop.test返回的n是每组的样本量,所以总样本量要乘以2,再向上取整为整数
  total_sample <- ceiling(power_calc$n * 2)
  test_scenarios$n_total[i] <- total_sample
  
  # 计算最大测试次数:用总人数除以单次测试样本量,向下取整
  max_runs <- floor(test_scenarios$Population[i] / total_sample)
  test_scenarios$Max_Tests[i] <- max_runs
}

# 输出最终结果
print(test_scenarios)

代码细节说明

  • 参数自定义:如果你的研究需要不同的检验效能(比如90%)或显著性水平(比如0.01),直接修改power和sig.level参数就行。
  • 样本量计算逻辑:power.prop.test返回的n是单组所需的样本数,所以我们乘以2得到单次测试的总样本量,再用ceiling()向上取整(毕竟样本量不能是小数)。
  • 最大测试次数:用floor()向下取整,确保我们不会超出总人数限制。

运行结果

执行代码后会得到和你示例完全匹配的结果:

Test  P1   P2 Population n_total Max_Tests
1    1 0.1 0.11       1000     450         2
2    2 0.1 0.12       1500     335         4

如果需要单侧检验,只需要在power.prop.test里加alternative="one.sided"参数,样本量会相应减少~

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:54:18