核心结论
AI 整理和清洗科研数据时,最重要的不是快速得到一张“干净表”,而是保证原始数据不被覆盖、每个变量含义清楚、每条清洗规则预先定义、每次修改能够重现。AI 可以生成候选规则、代码和异常清单,不能根据结果好不好看决定删除、填补或改值。
合格产物包括三部分:只读的原始数据、带版本的数据字典、能够从原始数据重建分析数据的脚本与变更日志。缺少其中任何一部分,研究者都难以解释 AI 到底改变了什么。
“清洗”包含不同性质的动作
科研人员常把以下动作都称为数据清洗:格式转换、变量重编码、单位统一、范围检查、重复识别、缺失标记、异常值处理和衍生变量计算。它们的证据要求并不相同。
把日期从文本转换为标准格式通常是可逆转换;把“999”识别为缺失需要数据字典依据;把极端实验值删除则会改变结果,必须有预先规则和领域判断。AI 可以帮助执行前两类,但越接近删除、推断和替换,越需要明确的人工作决定。
原始层、处理层和分析层必须分开
- **原始层:**从仪器、问卷、数据库或录入系统获得的原始文件,只读保存,不手工覆盖;
- **处理层:**用脚本完成类型、编码、合并和质量标记,保留中间结果;
- **分析层:**按照冻结规则形成用于特定分析的数据集和变量。
AI 生成的任何代码只能作用于副本或由脚本产生的新文件。不要让聊天工具直接“修好 Excel”后覆盖唯一文件,因为之后无法区分原始错误、AI 修改和人工修正。
教学案例:三次随访数据怎样整理
**教学模拟案例:**流行病学研究者罗清有一套教学模拟随访数据,包含基线、三个月和六个月三张表。参与者编号格式不一,体重分别使用千克和磅,缺失值被记为
-9、999和空白,部分日期超出实际随访窗口。
她先建立数据字典,而不是直接让 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。它可能是录入错误,也可能包含工作和交通活动。正确流程是:
- 规则标记其超过预设质量检查阈值;
- 保留原始值和记录位置;
- 查询问卷定义、录入备注或源记录;
- 由数据负责人决定更正、保留、设为缺失或在敏感性分析中处理;
- 在日志中记录依据和受影响分析。
AI 不能仅因数值“异常”改成 420,也不能因为它显著影响结果而删除。异常检测发现的是需要判断的记录,不是自动更正权。
填写完成的清洗变更日志
| 变更编号 | 输入 | 规则与依据 | 输出 | 状态与负责人 |
|---|---|---|---|---|
| C-014 | m03体重原始字段 weight_lb | 按固定系数换算,保留原始值;数据字典1.2 | 新增 weight_kg | 脚本通过测试,罗清确认 |
| C-015 | participant_id=00125 | 按编号规范补前缀和前导零,不改变身份映射 | P000125 | 与主索引核对通过 |
| C-016 | activity_min=4200 | 超过质量阈值,只标记不改值 | flag_activity_range=1 | 等待数据负责人核查 |
| C-017 | visit_date早于基线 | 违反时间顺序 | 保留原值并进入问题清单 | 停止该参与者纵向派生变量 |
日志区分“已执行转换”和“待判断问题”。AI 输出的候选更正不能与已确认变更混在一起。
缺失值不能默认为零
零可能是真实观测,空白可能是未测、拒答、系统失败、不适用或失访。不同缺失原因对分析和解释不同。数据字典应为重要变量保留缺失原因字段,并在进入分析前定义处理策略。
AI 可以统计缺失模式、按时点和组别生成表格、生成多重插补代码候选,但是否适合插补依赖缺失机制、变量关系和分析目的。没有统计判断时,不能让 AI 用均值或模型自动填满数据。
合并数据先验证键和关系
三个时点合并前,要明确一名参与者在每个时点应有几条记录,主键是否唯一,重复意味着重复录入还是多次测量。合并后检查行数、匹配率、未匹配记录和一对多扩张。
常见危险是使用姓名、日期或不稳定文本模糊匹配参与者。涉及真实研究对象时,这既可能错配,也可能暴露身份。应使用项目批准的标识映射和安全环境,AI 不应接触不必要的身份字段。
用测试锁定清洗规则
每条重要规则至少准备:正常样本、边界样本、缺失样本和应拒绝样本。例如单位转换测试:150磅应转换为预期千克值;空白保持缺失;负值触发错误;已是千克的数据不能重复换算。
AI 生成脚本后先在人工构造的小表运行,比较预期与实际输出,再处理完整数据。任何规则变化都重新运行测试。代码运行不报错,只说明语法能够执行,不说明数据含义正确。
数据管理不止是清洗
NIH 数据管理与共享政策强调良好数据管理与科研严谨性、验证和隐私保护的关系。FAIR 原则要求数据和元数据具有可发现、可访问、可互操作和可复用条件,并保留来源信息。这里的“可访问”不等于公开所有数据;敏感数据可以有认证和授权限制。
数据字典、处理代码、许可、版本和来源记录,决定未来的研究者能否理解和重用数据。AI 可以帮助整理这些元数据,但不能决定哪些参与者数据可以共享。
清洗完成前做一次数据对账
数据对账不是再看一遍表格,而是证明处理层与原始层之间没有无法解释的数量变化。至少比较:文件和记录总数、每个时点的参与者数、唯一键数量、重复和未匹配数量、各变量缺失分布、类别频数、数值范围,以及每条排除规则影响了多少记录。变化必须能够对应某项代码和日志。
例如合并前三个随访文件共 1,120 行,合并后却有 1,147 行。即使模型顺利生成数据集,也必须暂停,因为可能发生一对多连接。只有定位到某次访视存在合法的两条测量并决定怎样表示后,才能继续派生纵向变量。反过来,去重后少了 18 行,也要区分完全重复、重复录入和真实重复测量,不能只保留第一条。
可以设置程序化断言:主键必须唯一;访视值只能来自允许集合;原始记录数与已保留、已排除、待判断三类之和相等;每个派生变量都有输入字段;处理脚本运行两次得到相同校验结果。AI 可以写这些测试草稿,负责人应检查它们是否真的覆盖当前数据规则。
冻结分析数据集,而不是复制“最终版”
正式分析使用的数据应有唯一版本号、生成脚本、输入文件校验值、运行环境和生成日期。论文中的每个表图都指向这个版本。后来修正数据时,生成新版本并重跑依赖分析,同时记录旧结果是否改变;不要在电子表格中手工覆盖后继续沿用原文件名。
冻结不等于永远不改,而是让改变可见。数据负责人确认待判断清单已处理,统计负责人确认分析需要的单位、编码与结构,项目负责人确认共享和访问范围。三者完成后,才把该版本标为可分析。这样 AI 或任何脚本都只能从明确输入产生结果,不会把聊天中的临时表格误当成正式数据。
冻结时还要生成一份简短的数据概况:观察单位、时间点、关键变量、样本流转、缺失与排除数量、尚存限制。它帮助分析者理解数据,却不能替代数据字典和逐条变更日志。
停止条件
- 原始文件没有独立只读备份;
- 变量含义、单位或缺失编码无法确认;
- 合并键不唯一或出现无法解释的一对多扩张;
- AI 建议根据结果方向删除或改写记录;
- 需要接触可识别或受限数据,但工具环境未获批准;
- 关键转换没有测试样本和可重跑脚本;
- 插补、异常处理或排除会改变主要结果,团队没有统计和领域放行。
停止后应回到源系统、数据负责人、方案或统计人员。不要为了尽快进入分析,把“不知道”改成一个具体值。
可直接复用的数据字典与清洗记录
数据集名称、版本与负责人:
原始文件位置与只读校验:
处理脚本版本和运行环境:
变量名:
含义、单位和测量时间:
类型与允许值:
缺失编码和缺失原因:
来源字段或计算公式:
质量检查阈值:
阈值外记录怎样处理:
变更编号:
原始记录和位置:
变更规则与依据:
输出字段:
是否影响既有分析:
执行人、核验人和日期:
合并前后行数与匹配率:
未匹配和重复记录:
测试样本与预期结果:
仍待人工判断的问题:
清洗完成的标准不是“表里没有空白和异常”,而是每个分析值都能回到原始记录和明确规则,任何人可以用相同输入、代码和版本重新得到同一分析数据集。