中药新药研发基础计算模块
Overview
本技能是中药新药研发(TCM/NMP)中最基础、最通用的数据处理与统计分析工具,服务于工艺研究、质量标准研究、稳定性研究、临床试验前研究等所有场景中的常规数据计算需求。所有统计计算基于 scipy.stats 标准统计库(与 R/SAS/SPSS 采用同源算法),结果可直接用于申报资料、批生产记录分析、稳定性数据汇总与论文发表。输出满足 ALCOA+ 数据可追溯原则:原始数据、计算方法、参数、时间戳全程留痕。
定位说明:本技能是"计算引擎",不替代实验设计指导。复杂化学计量学(PCA/OPLS-DA/聚类/指纹图谱相似度)请调用
tcm-qc-chemometrics技能;方法学验证专属计算(线性/LOD/LOQ/回收率)请调用physicochemical-chromatography技能;二者可在本技能完成描述性统计与显著性检验后接力。
法规与指导原则依据(详见 references/regulatory-basis.md)
| 序号 | 法规/指导原则 | 依据点 | |------|--------------|--------| | 1 | 《中药新药质量研究技术指导原则(试行)》(CDE 2021年第3号通告) | 质量研究应贯穿中药质量控制全过程 | | 2 | 《中药口服制剂生产过程质量控制研究技术指导原则(试行)》(2024年) | 重视对采集数据的统计分析和建模研究 | | 3 | 《中药制剂稳定性研究技术指导原则(试行)》(2024年) | 试验设计应当科学合理 | | 4 | 《中药标准管理专门规定》(2024年第93号) | 坚持科学、严谨、实用、规范原则 | | 5 | 《中国药典》2025年版四部通则 9101 分析方法验证指导原则 | 验证指标包括专属性、准确度、精密度等 | | 6 | ICH Q1A(R2)/Q2(R2)(参考) | 稳定性数据评估、分析方法验证的统计要求 |
触发条件
以下任一场景触发本技能:
- 用户要求计算实验数据的均值、SD、RSD、中位数、极差、IQR、偏度、峰度等描述性统计量
- 用户提供多组数据要求比较组间差异(t检验、ANOVA、非参数检验)并给出 P 值
- 用户要求检验数据是否服从正态分布,或要求生成 Q-Q 图/P-P 图
- 用户要求分析两个或多个指标间的相关性(Pearson/Spearman/偏相关/相关矩阵热图)
- 用户要求评估批内均一性、批间一致性、过程能力(Cpk/Ppk),判断是否满足质量标准
- 用户报告数据中存在疑似离群值,要求 Grubbs 检验或 Dixon 检验判定
- 用户要求对稳定性数据(含量、杂质、溶出等随时间变化)进行统计汇总
- 用户要求对计数资料(如合格/不合格数、出现/未出现)进行卡方检验
- 用户提供 CSV/Excel/JSON 数据文件要求自动识别数据类型并完成统计
工作流决策树
用户输入(数据文件/粘贴数据 + 分析目的)
│
├── ① 数据准备:运行 scripts/core.py 数据加载器
│ ├── CSV / Excel(.xlsx) / JSON / 剪贴板粘贴
│ └── 自动识别连续型/分类型 → 连续型进入统计,分类型进入卡方
│
├── ② 按分析目的路由:
│ ├── 单变量汇总(含量/收率/水分等)→ scripts/descriptive_stats.py
│ │ └── 含 Grubbs/Dixon 异常值检测(默认 α=0.05,可调)
│ ├── 正态性判断 → scripts/normality.py(Shapiro-Wilk n≤50 / K-S 大样本 + Q-Q图)
│ │ └── 不满足正态 → 自动警示并推荐非参数方法
│ ├── 组间比较(两组)→ scripts/significance.py t检验(自动 Levene 方差齐性预检)
│ ├── 组间比较(≥3组)→ scripts/significance.py ANOVA(Tukey HSD/LSD 事后比较)
│ │ └── 非正态 → Mann-Whitney U / Kruskal-Wallis
│ ├── 计数资料 → scripts/significance.py 卡方检验(独立性/适合度)
│ ├── 变量间关系 → scripts/correlation.py(Pearson/Spearman/偏相关 + 热图)
│ └── 批次质量 → scripts/batch_consistency.py(批内均一性/批间一致性/Cpk/Ppk)
│
├── ③ 输出:
│ ├── 结构化表格(终端 Markdown + 可选 JSON 导出,供下游模块调用)
│ ├── 每项计算附方法学说明(为何选此法)
│ ├── 统计学结论的专业解读(不只给 P 值,解释实际意义)
│ └── 完整计算日志(ALCOA+:时间戳/方法/参数/软件版本)
│
└── 全链路:统一入口 scripts/tcm_stats_cli.py(一条命令完成加载→计算→输出→日志)
推荐执行方式:数据已存为文件时,直接运行统一入口:
python3 <技能路径>/scripts/tcm_stats_cli.py --input data.xlsx --task all
(--task 可选:descriptive | normality | compare | correlation | batch | all)
核心能力模块
1. 描述性统计(描述性统计与异常值检测)
处理单变量连续型数据的集中趋势、离散程度、分布形态度量与异常值判定。
- 集中趋势:均值(Mean)、中位数(Median)、众数(Mode)
- 离散程度:标准差(SD,n-1 样本标准差)、相对标准偏差(RSD%,= SD/Mean×100%)、极差(Range)、四分位距(IQR,Q3−Q1)
- 分布形态:偏度(Skewness,样本无偏估计)、峰度(Kurtosis,超额峰度,正态≈0)
- 异常值检测(二选一,自动推荐):
- Grubbs 检验:单侧/双侧,临界值基于 t 分布计算,适用于总体近似正态、异常值 ≤2 个
- Dixon 检验(Q 检验):基于极值间差距比值,适用于小样本(3≤n≤30)、不依赖正态假设
- 检出异常值自动标识 ⚠ 并在解读中给出处置建议(复核原始记录→保留并说明→剔除须有依据)
- 输出格式:每个统计量附数值、有效数字位数(按中国药典/GB/T 8170 修约)、样本量 n;附方法学说明
2. 显著性检验(显著性检验模块)
处理两组/多组间差异的假设检验,自动完成前提条件检验。
- t 检验:单样本(与标准值/药典限度比较)、独立样本(两组间)、配对样本(同批样品两种方法/两个时间点)
- 独立样本 t 检验自动执行 Levene 方差齐性检验:方差齐→Student t;方差不齐→Welch t(自动切换)
- 输出 t 值、自由度(df)、P 值(双侧)、均值差及 95% 置信区间、显著性结论(P<0.05 显著,标注 ★)
- 方差分析(ANOVA):单因素(组间比较)、双因素(如 批×时间)——输出 F 值、P 值、SS/MS 分解表
- 事后多重比较:Tukey HSD(方差齐时首选,控制族错误率)或 LSD(灵敏度高但需校正风险),输出两两比较矩阵
- 卡方检验:独立性检验(2×2 或 R×C 列联表,含 Fisher 精确检验自动降级)、适合度检验
- 非参数检验自动推荐:正态性检验未通过时自动提示——两组→Mann-Whitney U(含效应量 r);多组→Kruskal-Wallis(含 Dunn 事后比较);配对→Wilcoxon 符号秩
- 所有检验给出:检验统计量、P 值、效应量(Cohen's d / η² / r)、专业解读
3. 相关性分析(相关性分析模块)
处理两个或多个连续变量间的关联分析。
- Pearson 相关系数:线性相关,输出 r、P 值(t 检验法)、95% 置信区间(Fisher z 变换)
- Spearman 秩相关系数:单调相关/非正态数据,输出 ρ、P 值
- 偏相关系数:控制第三(或更多)变量后计算,基于相关矩阵求逆法(矩阵法实现,与 R
ppcor一致) - 相关矩阵热图:多变量两两相关矩阵 + matplotlib 热图(PNG 输出),标注显著性星号,默认存至输出目录
- 解读标准:|r|≥0.8 强相关、0.5~0.8 中等、0.3~0.5 弱、<0.3 极弱(结合专业意义判断,不机械套用)
4. 正态性检验(正态性检验模块)
判断数据是否服从正态分布,为后续参数/非参数检验选型提供依据。
- Shapiro-Wilk 检验:小样本(n≤50)首选,输出 W 统计量、P 值
- Kolmogorov-Smirnov 检验:大样本(n>50),采用 Lilliefors 修正(参数未知时,与 R
lillie.test一致);已知参数时用标准 K-S - 图形诊断:Q-Q 图(分位数-分位数)、P-P 图自动生成(PNG),供目视判读
- 综合结论:结合 W/K-S 统计量 + 图形 + 偏度/峰度(|Skew|<2 且 |Kurt|<7 经验准则)给出"正态/近似正态/偏态"综合判定
- 非正态警示:判定为偏态时自动提示推荐方法(Mann-Whitney U / Kruskal-Wallis / 中位数±IQR 报告方式),并提示可考虑 Box-Cox 变换后重检
5. 批间/批内一致性分析(批次一致性分析模块)
面向生产与质量控制的批次数据评估,直接回应《中药口服制剂生产过程质量控制研究技术指导原则》"批间稳定、批内均一"要求。
- 批内均一性:同批次多个样品(取样点)的均值、SD、RSD%,与质量标准/指导原则限度比对(一般含量 RSD 限度 ≤2.0%,按品种规定执行)
- 批间一致性:多批次汇总均值、批间 RSD%、极值比(Max/Min,中药天然产物常用判定,一般 ≤1.5 视作可接受,按品种规定执行)
- 过程能力指数:Cpk(短期/组内能力)、Ppk(长期/总体能力),需提供规格限(USL/LSL)——输出 Cp、Cpk、Pp、Ppk、σ 估计,按行业惯例判定:≥1.67 优秀、1.33~1.67 充分、1.00~1.33 尚可、<1.00 不足
- 输出:批内/批间统计汇总表 + 能力指数判定 + 超限预警
输出要求(详见 references/output-format-spec.md)
- 方法学说明:每个计算结果附带所用统计方法与选型理由(如"因样本量 n=12<50,选用 Shapiro-Wilk 检验;因两组方差不齐,采用 Welch t 检验")
- 专业解读:不只输出 P 值,需解释实际意义(如"批间 RSD 0.92%<2.0%,批间一致性良好,满足《中药口服制剂生产过程质量控制研究技术指导原则》要求")
- 非正态警示:数据不满足正态分布时给出明确警示并推荐非参数方法
- 结构化输出:终端输出 Markdown 表格;
--json参数输出结构化 JSON(固定 schema,便于后续模块调用);图表存为 PNG - 可追溯性(ALCOA+):每次运行自动生成
.log计算日志(附原始数据指纹、时间戳、scipy 版本、参数),满足 Attributable/ Legible/ Contemporaneous/ Original/ Accurate + Complete/Consistent/Enduring/Available 要求
质量保证
- 交叉验证:统计引擎基于 scipy.stats(与 R stats 包、SAS、SPSS 同源算法);
scripts/run_selfcheck.py内置经典教科书数据集(如 Anscombe 数据集、Student 配对 t 数据)与 R 参考输出比对,全部断言误差 ≤1×10⁻⁶ - 错误处理:所有脚本含完整异常处理——文件不存在、格式非法、列缺失、样本量不足(如 n<3 无法 Grubbs)、除零(均值为 0 时 RSD 未定义)、非数值数据混入等,均给出明确中文错误信息与修正建议,不静默失败
- 计算日志:每一步计算记录 时间、方法、参数、输入数据指纹(SHA-256)
数据输入格式(详见 references/data-input-guide.md)
| 格式 | 要求 | 示例 |
|------|------|------|
| CSV | UTF-8,首行表头,逗号分隔 | 批号,含量(%),收率(%) |
| Excel (.xlsx) | 首行表头,数值列可含单位括注 | 用 openpyxl 读取(无需 Excel 环境) |
| JSON | 数组或 {列名:[值]} 结构 | [{"批号":"A","含量":98.2}, ...] |
| 粘贴文本 | 空格/制表符/逗号分隔的原始数字行 | 98.2 99.1 97.8 ... |
- 数据类型自动识别:全数值列→连续型;文本/有限类别→分类型(进入卡方);含"%"单位括注自动剥离
- 缺失值:默认剔除(listwise),日志中记录剔除数量与位置
- 分组标识列(如"批号""组别""时间点")自动识别并用于分组统计
资源索引
| 资源 | 用途 | 何时加载 |
|------|------|----------|
| references/regulatory-basis.md | 6 项法规与指导原则依据、引用原文要点 | 输出解读需引用法规时加载 |
| references/methods-and-interpretation.md | 统计方法学说明、公式、判定标准、专业解读话术 | 需要解释"为何选此法"或解读结果时加载 |
| references/output-format-spec.md | 结构化输出 JSON schema、有效数字规则、ALCOA+ 日志规范 | 输出格式/数据交接时加载 |
| references/data-input-guide.md | CSV/Excel/JSON/粘贴输入模板与数据类型识别规则 | 用户提供数据文件时加载 |
| scripts/core.py | 数据加载、类型识别、修约、日志(共享库) | 所有脚本自动调用 |
| scripts/descriptive_stats.py | 描述性统计 + Grubbs/Dixon 异常值检测 | 单变量汇总任务 |
| scripts/normality.py | Shapiro-Wilk/K-S 正态性检验 + Q-Q/P-P 图 | 正态性判断任务 |
| scripts/significance.py | t 检验/ANOVA/卡方/非参数检验 + 事后比较 | 组间比较任务 |
| scripts/correlation.py | Pearson/Spearman/偏相关 + 相关矩阵热图 | 相关性分析任务 |
| scripts/batch_consistency.py | 批内均一性/批间一致性/Cpk-Ppk | 批次质量任务 |
| scripts/tcm_stats_cli.py | 统一命令行入口(加载→计算→输出→日志) | 数据已存为文件时首选 |
| scripts/run_selfcheck.py | 与 R/教科书参考值交叉验证自检 | 安装后验证/结果存疑时 |
运行方式:python3 <技能路径>/scripts/tcm_stats_cli.py --input <文件> --task <任务>,脚本带中文交互提示,也可直接粘贴数据。
任务驱动示例路由
- "帮我算一下这批药材含量测定的均值、SD、RSD,看有没有离群值。" → 模块1 →
descriptive_stats.py - "三个批号的浸出物数据想比较差异是否显著,怎么算?" → 模块2 →
significance.py(ANOVA + Tukey) - "我怀疑这批数据不是正态分布,帮我检验一下。" → 模块4 →
normality.py - "含量和收率两个指标有没有相关性?另外控制温度后还有关系吗?" → 模块3 →
correlation.py(Pearson + 偏相关 + 热图) - "六个批号每批测了 6 个取样点,帮我评估批内均一性和批间一致性,规格限是 95~105%。" → 模块5 →
batch_consistency.py - "稳定性数据:0/3/6/12 个月含量是否随时间显著下降?" → 模块2(配对/回归趋势)→
significance.py - "这批样品里有几个值特别高,帮我用 Grubbs 检验看是不是离群值。" → 模块1 →
descriptive_stats.py(异常值检测)
微信扫一扫