样本量计算¶
方法简介¶
样本量估算是临床试验设计的核心环节,直接影响试验的检验效能和可行性。
常用设计类型¶
| 设计 | 检验假设 | 关键参数 |
|---|---|---|
| 优效性 | H0: Δ ≤ 0 | 效应量 δ, α, β |
| 非劣效性 | H0: Δ ≤ -margin | margin, α, β |
| 等效性 | H0: |Δ| ≥ margin | margin, α, β |
代码实现¶
# 两样本均值比较(优效性)
power.t.test(
delta = 5, # 组间差异
sd = 10, # 标准差
sig.level = 0.05, # α
power = 0.90, # 1-β
type = "two.sample",
alternative = "two.sided"
)
# 两样本率比较
power.prop.test(
p1 = 0.6,
p2 = 0.4,
sig.level = 0.05,
power = 0.80
)
# 生存分析样本量
library(survival)
power_ct <- powerSurvEpi(
n = NULL,
time = 24,
event = 0.8,
hr = 0.7,
alpha = 0.05,
power = 0.90
)
from statsmodels.stats.power import TTestIndPower, NormalIndPower
# 两样本 t 检验
power = TTestIndPower()
n = power.solve_power(
effect_size=0.5, # Cohen's d
alpha=0.05,
power=0.90,
alternative='two-sided'
)
print(f"每组所需样本量: {n:.0f}")
# 率的比较
from statsmodels.stats.proportion import proportion_effectsize
es = proportion_effectsize(0.6, 0.4)
n = NormalIndPower().solve_power(es, power=0.80, alpha=0.05)
关键参数¶
- 效应量:临床 meaningful difference,非统计学最小可检测差异
- α:通常双边 0.05
- β:通常 0.10-0.20(power 80-90%)
- 脱落率:需在计算样本量基础上调整:N_adj = N / (1 - dropout_rate)