核心结论

AI 整理和清洗科研数据时,最重要的不是快速得到一张“干净表”,而是保证原始数据不被覆盖、每个变量含义清楚、每条清洗规则预先定义、每次修改能够重现。AI 可以生成候选规则、代码和异常清单,不能根据结果好不好看决定删除、填补或改值。

合格产物包括三部分:只读的原始数据、带版本的数据字典、能够从原始数据重建分析数据的脚本与变更日志。缺少其中任何一部分,研究者都难以解释 AI 到底改变了什么。

“清洗”包含不同性质的动作

科研人员常把以下动作都称为数据清洗:格式转换、变量重编码、单位统一、范围检查、重复识别、缺失标记、异常值处理和衍生变量计算。它们的证据要求并不相同。

把日期从文本转换为标准格式通常是可逆转换;把“999”识别为缺失需要数据字典依据;把极端实验值删除则会改变结果,必须有预先规则和领域判断。AI 可以帮助执行前两类,但越接近删除、推断和替换,越需要明确的人工作决定。

原始层、处理层和分析层必须分开

  • **原始层:**从仪器、问卷、数据库或录入系统获得的原始文件,只读保存,不手工覆盖;
  • **处理层:**用脚本完成类型、编码、合并和质量标记,保留中间结果;
  • **分析层:**按照冻结规则形成用于特定分析的数据集和变量。

AI 生成的任何代码只能作用于副本或由脚本产生的新文件。不要让聊天工具直接“修好 Excel”后覆盖唯一文件,因为之后无法区分原始错误、AI 修改和人工修正。

教学案例:三次随访数据怎样整理

**教学模拟案例:**流行病学研究者罗清有一套教学模拟随访数据,包含基线、三个月和六个月三张表。参与者编号格式不一,体重分别使用千克和磅,缺失值被记为 -9999 和空白,部分日期超出实际随访窗口。

她先建立数据字典,而不是直接让 AI “自动清洗”。

变量含义与单位合法范围或值缺失编码来源与备注
participant_id项目参与者编号,文本P加6位数字不允许缺失三个时点统一,禁止数值化丢失前导零
visit随访时点baseline/m03/m06不允许缺失由文件和访视日期共同校验
weight_kg体重,千克30—250仅作质量提示-9、999、空白m03原始单位为磅,转换需保留原值
visit_date实际访视日期ISO日期空白需与基线日期计算间隔
activity_min每周活动分钟0及以上-9、999、空白极大值不自动删除

AI 根据字典生成处理脚本和测试样例,但罗清要求它同时输出异常清单,不直接修改可疑记录。

一条异常值怎样处理

六个月表中一名参与者的 activity_min 为 4,200。它可能是录入错误,也可能包含工作和交通活动。正确流程是:

  1. 规则标记其超过预设质量检查阈值;
  2. 保留原始值和记录位置;
  3. 查询问卷定义、录入备注或源记录;
  4. 由数据负责人决定更正、保留、设为缺失或在敏感性分析中处理;
  5. 在日志中记录依据和受影响分析。

AI 不能仅因数值“异常”改成 420,也不能因为它显著影响结果而删除。异常检测发现的是需要判断的记录,不是自动更正权。

填写完成的清洗变更日志

变更编号输入规则与依据输出状态与负责人
C-014m03体重原始字段 weight_lb按固定系数换算,保留原始值;数据字典1.2新增 weight_kg脚本通过测试,罗清确认
C-015participant_id=00125按编号规范补前缀和前导零,不改变身份映射P000125与主索引核对通过
C-016activity_min=4200超过质量阈值,只标记不改值flag_activity_range=1等待数据负责人核查
C-017visit_date早于基线违反时间顺序保留原值并进入问题清单停止该参与者纵向派生变量

日志区分“已执行转换”和“待判断问题”。AI 输出的候选更正不能与已确认变更混在一起。

缺失值不能默认为零

零可能是真实观测,空白可能是未测、拒答、系统失败、不适用或失访。不同缺失原因对分析和解释不同。数据字典应为重要变量保留缺失原因字段,并在进入分析前定义处理策略。

AI 可以统计缺失模式、按时点和组别生成表格、生成多重插补代码候选,但是否适合插补依赖缺失机制、变量关系和分析目的。没有统计判断时,不能让 AI 用均值或模型自动填满数据。

合并数据先验证键和关系

三个时点合并前,要明确一名参与者在每个时点应有几条记录,主键是否唯一,重复意味着重复录入还是多次测量。合并后检查行数、匹配率、未匹配记录和一对多扩张。

常见危险是使用姓名、日期或不稳定文本模糊匹配参与者。涉及真实研究对象时,这既可能错配,也可能暴露身份。应使用项目批准的标识映射和安全环境,AI 不应接触不必要的身份字段。

用测试锁定清洗规则

每条重要规则至少准备:正常样本、边界样本、缺失样本和应拒绝样本。例如单位转换测试:150磅应转换为预期千克值;空白保持缺失;负值触发错误;已是千克的数据不能重复换算。

AI 生成脚本后先在人工构造的小表运行,比较预期与实际输出,再处理完整数据。任何规则变化都重新运行测试。代码运行不报错,只说明语法能够执行,不说明数据含义正确。

数据管理不止是清洗

NIH 数据管理与共享政策强调良好数据管理与科研严谨性、验证和隐私保护的关系。FAIR 原则要求数据和元数据具有可发现、可访问、可互操作和可复用条件,并保留来源信息。这里的“可访问”不等于公开所有数据;敏感数据可以有认证和授权限制。

数据字典、处理代码、许可、版本和来源记录,决定未来的研究者能否理解和重用数据。AI 可以帮助整理这些元数据,但不能决定哪些参与者数据可以共享。

清洗完成前做一次数据对账

数据对账不是再看一遍表格,而是证明处理层与原始层之间没有无法解释的数量变化。至少比较:文件和记录总数、每个时点的参与者数、唯一键数量、重复和未匹配数量、各变量缺失分布、类别频数、数值范围,以及每条排除规则影响了多少记录。变化必须能够对应某项代码和日志。

例如合并前三个随访文件共 1,120 行,合并后却有 1,147 行。即使模型顺利生成数据集,也必须暂停,因为可能发生一对多连接。只有定位到某次访视存在合法的两条测量并决定怎样表示后,才能继续派生纵向变量。反过来,去重后少了 18 行,也要区分完全重复、重复录入和真实重复测量,不能只保留第一条。

可以设置程序化断言:主键必须唯一;访视值只能来自允许集合;原始记录数与已保留、已排除、待判断三类之和相等;每个派生变量都有输入字段;处理脚本运行两次得到相同校验结果。AI 可以写这些测试草稿,负责人应检查它们是否真的覆盖当前数据规则。

冻结分析数据集,而不是复制“最终版”

正式分析使用的数据应有唯一版本号、生成脚本、输入文件校验值、运行环境和生成日期。论文中的每个表图都指向这个版本。后来修正数据时,生成新版本并重跑依赖分析,同时记录旧结果是否改变;不要在电子表格中手工覆盖后继续沿用原文件名。

冻结不等于永远不改,而是让改变可见。数据负责人确认待判断清单已处理,统计负责人确认分析需要的单位、编码与结构,项目负责人确认共享和访问范围。三者完成后,才把该版本标为可分析。这样 AI 或任何脚本都只能从明确输入产生结果,不会把聊天中的临时表格误当成正式数据。

冻结时还要生成一份简短的数据概况:观察单位、时间点、关键变量、样本流转、缺失与排除数量、尚存限制。它帮助分析者理解数据,却不能替代数据字典和逐条变更日志。

停止条件

  • 原始文件没有独立只读备份;
  • 变量含义、单位或缺失编码无法确认;
  • 合并键不唯一或出现无法解释的一对多扩张;
  • AI 建议根据结果方向删除或改写记录;
  • 需要接触可识别或受限数据,但工具环境未获批准;
  • 关键转换没有测试样本和可重跑脚本;
  • 插补、异常处理或排除会改变主要结果,团队没有统计和领域放行。

停止后应回到源系统、数据负责人、方案或统计人员。不要为了尽快进入分析,把“不知道”改成一个具体值。

可直接复用的数据字典与清洗记录

数据集名称、版本与负责人:
原始文件位置与只读校验:
处理脚本版本和运行环境:

变量名:
含义、单位和测量时间:
类型与允许值:
缺失编码和缺失原因:
来源字段或计算公式:
质量检查阈值:
阈值外记录怎样处理:

变更编号:
原始记录和位置:
变更规则与依据:
输出字段:
是否影响既有分析:
执行人、核验人和日期:

合并前后行数与匹配率:
未匹配和重复记录:
测试样本与预期结果:
仍待人工判断的问题:

清洗完成的标准不是“表里没有空白和异常”,而是每个分析值都能回到原始记录和明确规则,任何人可以用相同输入、代码和版本重新得到同一分析数据集。