如何用tt_ind_solve_power计算含4变体的实验效应量及设置nobs1?
多组实验(4变体+1对照)的效应量计算方案
首先明确:tt_ind_solve_power是专门为两组独立t检验设计的功效分析工具,无法直接用于多组(5组)的整体效应量计算。你的需求可以分两种场景处理:
场景1:分别计算每个变体与对照组的效应量
如果目标是得到每个变体相对对照组的效应量,可以对每一组变体-对照组的配对,单独调用tt_ind_solve_power。
nobs1参数设置规则
nobs1设为其中一组的样本量,ratio设为另一组样本量与nobs1的比值(即ratio = nobs2 / nobs1)- 两种设置方式等价:
- 把对照组样本量设为
nobs1,ratio设为变体样本量/对照组样本量 - 把变体样本量设为
nobs1,ratio设为对照组样本量/变体样本量
- 把对照组样本量设为
代码示例
from statsmodels.stats.power import tt_ind_solve_power # 对照组样本量 control_n = 1002 # 各变体样本量 variant_ns = [990, 1001, 1100, 999] alpha = 0.05 power = 0.8 # 逐个计算每个变体与对照组的效应量 for idx, var_n in enumerate(variant_ns, 1): effect_size = tt_ind_solve_power( nobs1=control_n, alpha=alpha, power=power, ratio=var_n / control_n, alternative='two-sided' ) print(f"Variant {idx} vs Control 的效应量: {effect_size:.4f}")
结果说明
这里得到的是每个变体单独与对照组对比的效应量,不是整个多组实验的整体效应量。
场景2:计算多组实验的整体效应量
如果需要衡量所有5组(4变体+1对照)之间的整体差异程度,应该用方差分析(ANOVA)对应的功效分析工具FTestAnovaPower。
代码示例
from statsmodels.stats.power import FTestAnovaPower # 总样本量 total_n = control_n + sum(variant_ns) # 组数 k = 5 # 计算多组整体效应量(ANOVA的f值) anova_power = FTestAnovaPower() effect_size_f = anova_power.solve_power( nobs=total_n / k, # 输入每组的平均样本量 alpha=alpha, power=power, k_groups=k ) print(f"多组实验的整体效应量f值: {effect_size_f:.4f}")
结果说明
这里得到的effect_size_f是ANOVA的效应量指标,衡量所有组之间的整体差异幅度,和单组对比的效应量不是同一个概念。
内容的提问来源于stack exchange,提问作者titutubs
相关产品推荐
相关产品推荐

