news 2026/9/10 5:35:30

如何用 analytical-method-validation 技能按 ICH Q2(R2) 检查校准曲线线性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 analytical-method-validation 技能按 ICH Q2(R2) 检查校准曲线线性

如何用 analytical-method-validation 技能按 ICH Q2(R2) 检查校准曲线线性

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

做方法验证时,"r² 很高"常常被直接当作线性合格的证据,但 r² 会随量程拉大而升高,对弯曲几乎不敏感。scientific-agent-skills 仓库中的 analytical-method-validation 技能把 ICH Q2(R2) 3.2.2.1 对线性响应的要求落成了一个纯 Python 脚本 check_response.py:它在报告斜率、截距、决定系数之外,还做失拟 F 检验、残差符号游程检验和逐浓度水平回算误差——后几项才是真正能发现模型不适合的统计量。本文的任务是:给定一组校准数据,用这个脚本按 ICH Q2(R2) 完成一次可复核的校准曲线线性检查,并知道输出里每一项如何判读。

前提只有一条:Python 3.11+。按技能 frontmatter 的说明,脚本只用标准库实现,不依赖 numpy、scipy,也不访问网络,统计分布从第一原理计算,保证在任何合规解释器下可复现。

先确认"响应"是必测特性

Q2(R2) 的必测项由被测属性决定,而不是由仪器决定。技能随附的 plan_validation.py 可以直接列出某个属性需要哪些特性:

cd skills/analytical-method-validation/scripts python3 plan_validation.py --framework ich-q2r2 --attribute assay --technique hplc --range-use assay

对含量测定(assay),ich-q2r2.md 中引用的 Q2(R2) Table 1 给出的必测项是:专属性、响应(校准模型)、准确度、重复性、中间精密度。也就是说含量测定必须报告校准模型;而限度试验只需要专属性和 DL,不涉及本文的线性检查。可报告范围本身来自质量标准,Table 2 的示例是 assay 取标示含量的 80–120%。

准备校准数据

输入文件需要两列:level(名义浓度或 %)和response(信号),每次进样一行。同一个浓度水平的重复进样写成重复行即可——这些重复是失拟检验的纯误差来源,不提供重复行,失拟检验就无法进行。脚本支持 CSV/TSV/JSON,也接受-从 stdin 读取;可选的replicate列会被忽略。

不想自己造数据时,仓库测试目录自带三组校准曲线 fixture,可直接用:

  • calibration_good.csv:5 个水平 × 3 重复,行为良好的线性曲线;
  • calibration_curved.csv:5 个水平 × 2 重复,含弯曲的曲线;
  • calibration_three_levels.csv:只有 3 个水平的薄设计。

执行线性检查

SKILL.md 给出的主命令形式是:

cd skills/analytical-method-validation/scripts python3 check_response.py -i calibration.csv --max-back-calc-error 2

其中-i指向你的校准数据文件;--max-back-calc-error是逐水平回算相对误差的判限,单位 %。注意 Q2(R2) 本身几乎不给数值判限——判限必须来自质量标准、分析目标档案(ICH Q14 第 3 节)或开发数据,并且按技能的两条规则,判限要在收集数据之前写进方案。文档示例里的2只是示例值,请替换为你方案中预先声明的数值。

从仓库根目录跑自带的 fixture,可以直接执行:

python3 skills/analytical-method-validation/scripts/check_response.py \ -i tests/analytical-method-validation/fixtures/calibration_good.csv \ --max-back-calc-error 2

输出分两路:数据(汇总表 + 逐水平表)走 stdout,溯源说明和 findings 走 stderr,所以> out.tsv重定向不会污染数据。--format可选table(默认)、tsvjson。退出码是 0(无发现)、1(有发现)、2(输入有误),可以直接用来给工作流把关。

读输出:哪些是证据

汇总表包含:不同水平数、权重方案、斜率及其 95% CI、截距及其 95% CI、截距 CI 是否包含 0、决定系数 r²、相关系数 r、残差 SD、失拟 F 值与 p 值、游程检验 p 值、高/低三段残差 SD 比。随后是按水平的回算表,每行给出level、重复数 n、平均响应、平均回算值和relative_error_pct

判读时对应 Q2(R2) 3.2.2.1 的要求——报告图、相关系数或决定系数、y 截距、斜率,以及实际数据点偏离回归线的分析;对线性响应要评估残差图中非随机模式的影响。具体到脚本的 findings(打印在 stderr,前缀finding:):

  • 失拟 F 检验(p <--alpha,默认 0.05):直线在重复进样散度之外仍不能描述数据,即模型失拟;
  • 游程检验:残差符号非随机,提示检查残差图有无弯曲;
  • 异方差检查:量程上三分之一的残差方差超过下三分之一 10 倍且未加权时,低端的回算结果有偏,建议加权;
  • 逐水平回算误差:某水平平均回算值偏离名义值超过--max-back-calc-error,单独报一条 finding。

文档中记录了一段真实输出,来自一条 r² 看似过关、实际不可用的曲线(示例结果,数值不要当成固定预期):

statistic value distinct levels 5 slope 166.6000 intercept 2495.0000 intercept CI includes 0 no coefficient of determination (r2) 0.9830 lack-of-fit F 469.5294 lack-of-fit p 1.5139e-06 runs test p 0.0492 level n mean_response mean_back_calculated relative_error_pct 50.0000 2 10075.0000 45.4982 -9.0036 75.0000 2 15150.0000 75.9604 1.2805 100.0000 2 20050.0000 105.3721 5.3721 125.0000 2 24050.0000 129.3818 3.5054 150.0000 2 26450.0000 143.7875 -4.1417

r² = 0.983,但量程底端回算误差 −9.0%、失拟 p = 1.5 × 10⁻⁶、残差符号非随机——模型不可用。这正是技能明确要防止的错误第 3 条:把 r² 当线性证据。

可选分支:加权拟合

宽量程曲线可以加--weight 1/x2(也支持1/x):

python3 check_response.py -i calibration.csv --weight 1/x2

两点限制要留意:加权要求所有水平非零,出现零水平会直接报输入错误;且加权后失拟 F 检验仍基于未加权残差计算,其零分布只是近似的——脚本会在 stderr 的note:中提示这一点,此时应结合逐水平回算误差一起读,后者不受加权影响。

其他可用参数:--levels-required(默认 5,对应 Q2(R2) "至少 5 个浓度、适当分布"的推荐);--alpha(默认 0.05);--through-origin-tolerance(截距超过最高水平响应的给定百分比时报警,作为 y 截距显著性检查的近似)。

用自带 fixture 验证脚本行为

tests/analytical-method-validation/test_scripts.py 固化了三组 fixture 的预期行为,可以当作验证方式:

输入预期退出码预期现象
calibration_good.csv+--max-back-calc-error 20无 findings
calibration_curved.csv1stderr 出现 lack-of-fit finding;JSON 输出中 r² > 0.98 而失拟 p < 0.001,且最差水平回算误差绝对值 > 5%
calibration_three_levels.csv1stderr 出现 "recommends at least 5" 的级别数不足 finding

输入列名缺失、数值非数值、文件不存在等情况退出码为 2;某个水平有重复时失拟检验才适用,否则输出会写明lack-of-fit test: not run,并在 note 中提示"至少一个水平做重复才能进行线性检验"。

边界

最后一条 stderr note 是固定输出的:this tool does not decide that the calibration model is acceptable。脚本报告、不做结论——它不判定程序已验证、不放行批次,替代不了分析人员、技术审核和质量部门。另外,对免疫分析、细胞实验等合理非线性的响应(3.2.2.2),Q2(R2) 不要求浓度–响应线性,应改用非线性回归评估,这个脚本的线性检验不适用于该类曲线。

线性检查通过后,同一技能按 Q2(R2) 特性继续走即可:check_accuracy_precision.py评估准确度与精密度,check_detection_limits.py评估 DL/QL,compare_methods.py做方法转移的等价性检验,用法均在 SKILL.md 的 Workflow 一节。

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 5:34:54

Agent评估体系:九维度评分与Prompt发布门禁实战指南

如果只靠肉眼观察几个 Demo 就觉得 Agent “能用”&#xff0c;那大概率一上线就会被真实用户教做人。我做过不少 Agent 项目&#xff0c;从最初的新奇劲儿过去之后&#xff0c;很快就意识到一个扎心的事实&#xff1a;没有量化评估体系的 Agent 优化&#xff0c;本质上是靠玄学…

作者头像 李华
网站建设 2026/9/10 5:34:35

ML-KWS-for-MCU源码解析:Cortex-M上的边缘AI语音唤醒实践

这两年只要聊到边缘AI&#xff0c;ARM Cortex-M上跑关键词识别几乎是个绕不开的入口。Arm 自己开源的 ML-KWS-for-MCU 项目&#xff0c;基本是业内做低功耗语音唤醒的必看代码。我最近把它的源码从头到尾静态过了一遍&#xff0c;不看文档、直接读工程&#xff0c;再把整体架构…

作者头像 李华
网站建设 2026/9/10 5:33:35

游戏UI自动化测试:从画质到稳定性的实战拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:33:29

物业管理系统毕设实战:Spring Boot+Vue从0到1完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:29:57

为什么 macOS 12 及以下系统里 OpenScreen 无法录制系统音频?

为什么 macOS 12 及以下系统里 OpenScreen 无法录制系统音频&#xff1f; 【免费下载链接】openscreen Create stunning demos for free. Open-source, no subscriptions, no watermarks, and free for commercial use. An alternative to Screen Studio. 项目地址: https://…

作者头像 李华