SuperAPI AI 工具集

experimental-design

数据与分析

查看项目

更新于 10-21 16:17

技能介绍

用途

实验设计技能用于在数据收集之前做出关键决策:如何将实验单元分配到不同条件、哪些因素保持恒定、哪些因素变化以及以何种结构变化。这些决策决定了数据能够回答什么问题。任何分析都无法在事后挽救一个混杂或伪重复的设计。该技能帮助用户选择设计类型、生成实际的随机化或 DOE 布局(附带可复现脚本),并避免导致数据无法解释的结构性错误。

主要能力

该技能围绕 Fisher 的三项原则展开:

  • 随机化:随机分配处理,使已知和未知的混杂因素在期望上保持平衡,从而将比较转化为因果推断。
  • 重复:在正确层级上进行独立重复,以估计变异性。最常见的致命错误是伪重复——将同一单元上的重复测量当作独立重复。
  • 区组化/局部控制:将相似单元(按批次、日期、地点、窝别)分组,在区组内随机化,从而将干扰变异从误差项中移除。

技能提供决策树,帮助在以下设计类型中选择:完全随机、随机区组、交叉/重复测量、整群随机、析因、部分析因、Plackett-Burman 筛选、响应面(中心复合、Box-Behnken)、拉丁超立方等。

使用方式

安装依赖:

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

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

随机化/分配表 — scripts/randomization.py:

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:

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)

运行顺序默认随机化,以避免因子与时间/漂移混杂。

适用场景

  • 规划任何比较实验或试验,决定如何分配单元
  • 将受试者/样本随机分配到各组(简单、区组、分层或整群)
  • 通过区组化或分层消除干扰变异
  • 设计多因子实验:全析因或部分析因、筛选设计
  • 在连续因子上优化响应(响应面设计)
  • 受试者内/重复测量、交叉、裂区或拉丁方设计
  • 整群或分组随机设计(地点、诊所、教室、窝别)
  • 决定重复次数和水平,避免伪重复
  • 序贯、成组序贯或自适应设计及中期分析
  • 布置板/批次并随机化运行顺序以对抗漂移

限制

该技能聚焦于数据收集前的设计决策,不涵盖数据收集后的分析执行(相关技能为 statistical-analysis)。样本量/功效计算由 statistical-power 技能负责。技能中提到的函数、标志或端点可能因安装版本不同而缺失,需查阅已安装版本的官方文档,不得凭空编造 API。技能明确要求:不得捏造结果、参数、标识符、引用或统计量;无法运行或验证的内容应如实说明;推测需标注为推测;版本相关细节可能过时,需对照官方文档确认。涉及费用、共享 GPU/云配额、个人或患者数据以及不可撤销操作时,需先征得用户同意。