核心结论

让 AI 帮忙做统计分析,最容易犯的错误不是代码写错,而是问题还没说清,模型就已经跑出一串 p 值。数据中的一行代表什么、主要比较是什么、哪些选择是在看结果前决定的,这些信息不能让 AI 从列名猜。

比较可靠的做法,是先完成一份分析说明,再让 AI 按说明写代码;结果出来后,把真正要进入论文的数字登记下来,逐项核对数据版本、分母、方向、区间和图表。本文只讨论这条核验链,不把统计咨询压缩成一套万能提示词。

一句“比较三组差异”,足以让分析走错

教学案例来自一项蛋白表达实验。对照、低剂量和高剂量三组各有 12 个培养样本,实验分两个批次完成。主要结局是归一化蛋白表达,另有技术重复。数据清洗后,一项测量因仪器失败缺失。

研究者最初把表格交给 AI,只写:“比较三组有没有显著差异,找出效果最好的处理。”AI 做了三次两两 t 检验,挑出高剂量与对照的 p<0.05,随后生成“高剂量显著提高蛋白表达”的结论。代码能够运行,数字也能从表里算出来,但这还不是一个可以使用的分析。

首先,AI 把两次技术读数当作独立样本,使每组看起来有 24 个观察;其次,它没有处理批次,也没有说明三次比较带来的选择问题;更关键的是,“效果最好”并不是方案中的研究问题。团队停止解释输出,回到实验记录确认实验单位和原定目的。

实际输入:3 组 × 12 个独立培养样本,每个样本有 2 次技术读数
AI 第一次处理:把 72 行都当成独立观察,运行 3 次两两检验
人工核对:技术读数应先按实验方案汇总到培养样本;主要问题是总体组间差异
处理决定:废弃该输出,从冻结数据与分析说明重新运行

这个错误不能靠在提示词末尾补一句“请严谨分析”解决。模型需要明确的设计信息,研究者也要能判断这些信息为什么改变方法。

分析说明先锁定允许回答的问题

团队把一页分析说明作为唯一入口。它没有罗列几十种检验,而是把当前实验的选择写实:

分析位置本案例的决定为什么要先写
研究问题三种处理条件下表达水平是否存在总体差异防止按最小 p 值改成“最佳处理”
实验单位独立培养样本;技术读数按预定规则汇总避免虚增样本量
主要结局预先指定的归一化表达值不在多个指标中挑结果
主要比较总体组间比较;后续只比较预先指定的处理与对照区分主要与后续比较
批次两批实验均保留,检查处理与批次是否混淆不把批次差异写成处理效应
缺失仪器失败保留原因,不填零零是观测值,不是缺失
报告原始点、组别描述、效应估计、区间、诊断和实际分母不让显著性替代效果大小

检查设计表时,统计负责人发现高剂量组在第二批次少了两个样本。处理与批次没有完全混淆,但各组并不平衡。AI 起初建议“删除第二批次保持一致”,团队没有接受,因为这会丢弃有效观察且改变目标人群。最终模型怎样纳入批次,由统计负责人根据设计与诊断决定;删除、变换或稳健方法都不能以得到显著结果为理由。

样本量也在这里核对。每组 12 个是生物学重复数,不因两次技术读数变成 24;仪器失败后,某项比较的实际分母还会变化。论文里的流程、表格和图注都必须使用模型真正纳入的数量,而不是实验计划中的整数。

AI写代码时,先用一个已知答案的小数据集拦错

正式数据很难靠肉眼看出分组、方向和缺失处理是否正确。团队因此构造了一张很小的测试表:每组两个培养样本,各有两次相同技术读数,其中一项为缺失。期望结果提前写下,包括汇总后每组样本数、对照组均值、处理减对照的方向,以及缺失不能变成零。

AI 生成脚本后,第一次测试便发现它使用默认方式静默删除整行,只要某个次要字段为空,主要结局也不会进入分析。团队把纳入规则改为只依赖当前模型所需字段,并让脚本输出每一步排除数量。第二次又发现参照组按字母顺序被设成高剂量,系数方向与分析说明相反。修正后,测试同时检查参照、单位和标签。

正式任务也写成可验收的代码契约:输入只接受冻结的长表和指定变量;技术重复汇总后必须保留原培养样本编号;任何筛选都输出筛选前后数量和原因;主模型、诊断、表格与绘图读取同一个分析对象;运行结束生成环境与依赖版本。AI 不得自行读取目录里名称相近的旧文件,也不得遇到报错后更换模型继续运行。

团队还故意把测试表中的一组标签写成未允许值。脚本应立即失败并指出位置,而不是把它转成缺失后继续。又把一个表达值的单位改错,确认范围检查能够拦截。这样的失败测试比“顺利生成一张图”更能证明程序执行了研究者写下的规则。

测试通过仍不代表模型合适。团队查看原始点与批次分布、残差和影响点,确认是否存在聚类、明显尺度问题或单个样本主导结果。AI 可以生成诊断代码并解释图形的一般含义,不能看到一张残差图就自行判定“符合所有假设”。判断需要联系实验设计和数据规模。

美国统计协会关于 p 值的声明提醒读者,p 值不表示假设为真的概率,也不衡量效应大小或科学重要性。对这项实验来说,即使总体比较跨过常用阈值,也仍要看处理差异有多大、区间有多宽、结果是否由批次或少数点推动。

一条结果要经过登记,才能进入摘要

重跑后,团队没有把整份软件输出交给写作模型,而是只登记经过核验的结果。登记表的一行对应论文中的一个判断:

结果编号来源与分析对象需要核对的数字可写到什么程度
R-015-01数据 v1.3;主脚本提交 a82…;全部合格培养样本各组实际 n、总体检验、批次处理与诊断说明三组总体是否有差异,不直接声称因果机制
R-015-02同一版本;预先指定的高剂量减对照差值、95% 区间、单位、方向和 p 值报告估计与不确定性,不写“效果最好”
R-015-03去除受关注样本的敏感性运行估计变化及其原因说明结论是否依赖单个观察,不取代主分析

另一名分析者从冻结数据运行主脚本,再用不同函数复算高剂量与对照的关键估计。复算时两边的 p 值一致,效应符号却相反。追查后发现,一份输出写的是“高剂量减对照”,另一份函数默认报告“对照减高剂量”。这不是科学结果冲突,而是比较方向不同;登记表把方向写进字段,避免写作时只复制数字。

图表也从相同分析对象生成。若某个模型因协变量缺失只使用 31 个样本,表下注明实际分母,不能沿用“每组 12 个”的计划数量。正文、图注和补充材料引用结果编号,而不是手工复制某次控制台输出。数据或代码更新时,团队能查出哪些句子必须重新核对。

写作核对时,摘要里出现了“高剂量组提高 18%”,登记表却保存的是归一化表达的绝对差值,并没有百分比换算。作者追问后发现,这是语言模型根据组均值自行计算的说法,分母选择也未说明。该句被删除,改回登记表已有的差值、区间和单位。未经登记的派生数字,即使算术上看似合理,也不能直接进入论文。

没有显著,不等于三组相同

AI 很容易把 p>0.05 改写成“处理没有效果”。在小样本实验中,这句话可能超过数据能支持的范围。区间若同时包含有实际意义的增加和减少,更准确的结论是估计不够精确,不能稳定区分这些可能性。

如果研究目的真的是证明等效或非劣,需要事先给出有科学依据的界值,并按相应设计分析。事后看到不显著,再声称三组相同,并没有完成等效判断。同样,估计为正且 p 值较小,也不自动代表生物学意义重大,更不说明观察到的机制已经得到证明。

敏感性分析用于检查合理决定是否改变结论,不是第二次寻找好看结果。团队检查受关注样本和批次处理后,如实保留主分析与敏感性结果。若结论对某一条无法核验的处理规则高度敏感,文章应写“结果不稳定”,而不是让 AI 继续尝试变换和协变量,直到出现满意数字。

分析跑不出来时,也要留下结果

假设高剂量组最终只有两个有效生物学重复,复杂模型仍可能输出系数,但区间和诊断很难支持原目标。此时可交付的不是一个被迫收敛的模型,而是一条失败记录:实际样本、报错或诊断、尝试过的合理修正、为什么仍不可用,以及研究问题因此缩小到什么范围。

模型不收敛、完全分离、事件太少或缺失破坏比较,都属于需要统计人员判断的信号。不能把技术重复展开成独立样本,也不能隐去失败组。补充实验是否可行属于研究决定;仅能描述数据时,就按描述性结果报告。

NIH 的严谨性与可重复性资源把透明的研究设计、分析和报告放在同一条链上。对本案例,真正可复查的是从实验单位、冻结数据和代码版本到结果登记表的对应关系,而不是一段“由 AI 完成统计分析”的笼统说明。

最后交给写作工具的材料只包括已核验登记表、研究设计和明确限制。提示可以要求按“观察结果—允许解释—替代解释—不能声称”组织候选文字。涉及机制、实际意义或因果的句子仍由领域和统计人员确认。AI 减少的是编码与对账劳动,不能替团队决定数据究竟证明了什么。

投稿前,作者最后从摘要中的每个数字反查结果编号;反查不到的句子先撤下。这个简单动作把统计分析和论文叙述重新接回同一份证据。 方法名称可以改变,这条反查要求不应改变。