SuperAPI AI 工具集

experimental-design

数据与分析

查看项目

更新于 10-16 06:00

技能介绍

用途

实验设计技能关注数据采集之前的决策:如何把实验单元分配到不同条件、哪些因素保持恒定、哪些因素发生变化以及以什么结构变化。资料强调,一个被混淆或存在伪重复的设计在事后无法通过分析挽救,因此该技能聚焦于在数据收集之前做出正确选择——挑选能隔离目标效应的设计、通过随机化获得因果推断的资格、通过区组消除已知的干扰变异,并组织多因子实验使各效应可估计而非纠缠在一起。

主要能力

该技能以 Fisher 的三项原则为基础:

  • 随机化:随机分配处理,使已知与未知的混淆因素在期望上保持平衡,这是把比较转化为因果结论的关键。
  • 重复:在正确的层级进行独立重复,以估计变异并避免效应只是单个单元的偶然产物。资料特别指出最常见的致命错误是伪重复——把同一单元上的重复测量当作独立重复。
  • 区组/局部控制:把相似单元按批次、日期、站点、窝别等分组,在区组内随机化,从而把干扰变异从误差项中移除。

在具体设计选择上,技能提供决策树:比较少数预定义条件时,可在完全随机、随机区组、交叉/重复测量、整群随机之间选择;需筛选 5 个以上众多因子时使用部分因子或 Plackett-Burman 筛选设计;需量化少数因子的主效应与交互时使用全因子 2^k 设计;需优化响应且存在曲率时使用响应面设计(中心复合或 Box-Behnken);在连续空间上探索仿真/计算机模型时使用空间填充设计(拉丁超立方)。

技能还涉及:受试者/样本的简单、区组、分层、整群随机化;通过区组或分层移除非目标变异;受试者内/重复测量、交叉、裂区、拉丁方设计;整群/组随机设计;确定重复数量并避免伪重复;带中期分析的序贯、成组序贯或自适应设计;以及实验板/批次布局与运行顺序随机化以对抗漂移。

使用方式

安装命令为:

uv pip install "numpy>=1.26" "pandas>=2.0" pyDOE3

其中 pyDOE3 是 pyDOE/pyDOE2 的维护后继版本,提供因子、部分因子、Plackett-Burman、中心复合、Box-Behnken 和拉丁超立方生成器。技能附带的脚本对其封装,以真实因子单位返回带命名列与随机化运行顺序的设计。

随机化/分配计划通过 scripts/randomization.py 生成,可用函数包括 simple_randomization、block_randomization、stratified_block_randomization、cluster_randomization、assign_factorial_runs、arm_balance。例如:

from randomization import (
    simple_randomization, block_randomization,
    stratified_block_randomization, cluster_randomization,
    assign_factorial_runs, arm_balance,
)

sched = block_randomization(n=60, arms=["treatment", "control"], seed=42)
sched = stratified_block_randomization({"siteA": 30, "siteB": 30},
                                       arms=["drug", "placebo"], ratio=(2, 1), seed=42)
sched = cluster_randomization(["clinic1", "clinic2", "clinic3", "clinic4"], seed=42)
arm_balance(sched)
sched.to_csv("allocation_schedule.csv", index=False)

DOE 矩阵通过 scripts/doe_designs.py 生成,可用函数包括 full_factorial、two_level_factorial、fractional_factorial、plackett_burman、central_composite、box_behnken、latin_hypercube。例如:

from doe_designs import (
    full_factorial, two_level_factorial, fractional_factorial,
    plackett_burman, central_composite, box_behnken, latin_hypercube,
)

factors = {"temp_C": (20, 60), "conc_mM": (1, 10), "pH": (6, 8)}
design = two_level_factorial(factors, seed=42)

many = {f"factor_{i}": (0, 1) for i in range(7)}
design = plackett_burman(many, seed=42)

design = central_composite({"temp_C": (20, 60), "conc_mM": (1, 10)}, seed=42)

design.to_csv("experimental_runs.csv", index=False)

运行顺序默认随机化,以避免因子与时间/漂移(如机器预热、试剂老化)混淆。脚本均设有随机种子,便于归档和重新生成,满足试验注册和良好实验室规范的要求。

适用场景

资料列出的适用场景包括:规划任何比较性实验或试验并决定单元分配方式;将受试者/样本随机分配到各组(简单、区组、分层或整群);通过区组或分层移除非目标变异;设计多因子实验(全因子或部分因子、筛选设计);在连续因子上优化响应(响应面设计);受试者内/重复测量、交叉、裂区或拉丁方设计;整群或组随机设计(站点、诊所、教室、窝别);确定重复数量与层级并避免伪重复;带中期分析的序贯、成组序贯或自适应设计;以及实验板/批次布局与运行顺序随机化。

限制与注意事项

资料强调这些错误是结构性的,只能在设计中解决,无法在分析阶段修复:伪重复(例如对施加于小鼠的处理而言,3 只小鼠各 100 个细胞应记为 n=3 而非 n=300);由干扰变量造成的混淆(如周一做全部处理样本、周二做全部对照,使处理与日期混淆);没有随机化或随机化被破坏(如先到先得分配);缺乏适当对照;把批次效应误认为生物学效应;实验板边缘/位置效应;部分因子设计中忽略别名结构;以及不在存在曲率时优化(两级因子设计无法检测弯曲响应,会错过内部最优值)。

工作流程建议为:陈述问题、单元与响应;列出干扰因子并计划区组、分层或随机化;用决策树与参考文件选择设计;在正确层级决定重复并借助 statistical-power 技能确定样本量;用带种子的脚本生成布局;随机化运行/处理顺序与板/批次位置;记录设计、种子与计划(尽可能预注册);最后让分析匹配设计,确保区组、分层、整群与嵌套出现在模型中。

相关资料还列出参考文件 references/randomization_and_blocking.md、references/factorial_and_doe.md、references/design_types.md、references/sequential_and_adaptive.md,以及相关技能 statistical-power、statistical-analysis、statsmodels、pymc,并列出了 Fisher (1935)、Montgomery (2019)、Hurlbert (1984)、Lazic (2016) 等关键参考文献。

关于该技能的收费、价格、平台支持范围等信息,资料暂未提供。