4. 缺失数据模式识别与归因
在实验数据修复流程中,看到缺失值的第一反应往往是想办法把它填上。但真正决定修复质量上限的,不是填充算法有多复杂,而是缺失机制判断得对不对。同一列里两个缺失值,可能一个来自仪器偶发丢包,另一个来自高浓度样本超出量程后被人为剔除——它们的统计性质完全不同,用同一种方式处理必然出错。本节要解决的就是:如何从数据模式出发,把缺失分成完全随机缺失(MCAR)、随机缺失(MAR)和非随机缺失(MNAR),再结合实验设计反推缺失是怎么产生的。
三种缺失机制的统计含义
设完整数据为 Y = (Y_obs, Y_mis),缺失指示变量 M(1 表示缺失)。三种机制的区别在于缺失概率依赖什么:
- MCAR(完全随机缺失):
P(M | Y_obs, Y_mis) = P(M)。缺失与任何变量(包括自身)都无关。典型来源:随机采样丢包、试管打碎、随机断电。 - MAR(随机缺失):
P(M | Y_obs, Y_mis) = P(M | Y_obs)。缺失只依赖已观测到的变量,不依赖缺失值本身。典型来源:低浓度样本因检测限(LOD)以下被记录为缺失,而浓度可由其他已测指标部分解释。 - MNAR(非随机缺失):
P(M | Y_obs, Y_mis)依赖Y_mis本身。典型来源:高浓度样本超量程被剔除、异常值被人工删除、失败实验被选择性不记录。
关键点:MCAR 和 MAR 的差别在于“缺失是否依赖未观测值”,而 MAR 和 MNAR 的差别在于“缺失是否依赖缺失值本身”。这个区分直接决定了后续能否用多重插补、EM 等基于 MAR 假设的方法。
从数据模式识别缺失机制
识别不能只靠单列缺失率,要看缺失的分布结构。常用手段有三类:
- 缺失矩阵可视化:把样本按行、变量按列画成黑白矩阵,观察缺失是散点状(偏 MCAR)、成块状(偏 MAR,与某观测变量相关)还是集中在某变量高值端(偏 MNAR)。
- 缺失与观测变量的关联检验:对每个变量,比较“该变量缺失”与“未缺失”两组在其他观测变量上的分布。若某观测变量在两组的均值差异显著(如 t 检验 p < 0.05),说明缺失依赖该观测变量,倾向 MAR。
- 缺失与自身取值的关联:若缺失样本的邻近观测值或同批次其他指标显示其真实值偏高/偏低,则倾向 MNAR。这一步往往需要实验设计信息辅助。
下面这张图把三种机制在“缺失概率—变量取值”关系上的差异,以及对应的识别线索和典型实验来源放在一起对照,便于快速定位。
结合实验设计反推缺失机制
统计检验只能给出“倾向”,真正可靠的归因要回到实验设计。做法是:把缺失记录与实验元数据(批次、仪器、操作人、时间、样本编号、量程、LOD)对齐,逐条追问“这个缺失是在哪个环节、因为什么规则产生的”。
举一个可复现的教学示例。某生化实验测量 120 个样本的酶活(U/L),同时记录底物浓度(mmol/L)和检测批次。数据中出现 18 个酶活缺失。按以下顺序排查:
- 看缺失矩阵:18 个缺失中有 14 个集中在批次 B3,且这些样本的底物浓度普遍偏高(均值 8.6 vs 全体 5.2)。
- 做关联检验:以“酶活是否缺失”为分组,比较底物浓度分布,t 检验 p = 0.003,说明缺失依赖底物浓度这一观测变量 → 倾向 MAR。
- 查实验记录:B3 批次使用旧酶标仪,量程上限 200 U/L。核对原始记录发现,这 14 个样本的初测读数均接近或超过 200 U/L,被操作员标记为“超量程”后未录入。
- 修正判断:缺失实际依赖的是酶活真实值(超过量程),而非底物浓度本身。底物浓度只是与酶活相关的伴随变量。因此机制应为 MNAR,而非 MAR。
这个例子说明:仅凭统计关联容易把 MNAR 误判为 MAR。必须结合“量程上限”“剔除规则”这类设计信息,才能确认缺失是否依赖缺失值本身。反过来,如果 B3 批次是因为仪器故障随机丢失了 14 个读数,与样本值无关,则应判为 MCAR。
可操作的归因检查表
把上述过程固化成一张检查表,每次遇到缺失列时逐项过一遍,能显著降低误判率。表中“判断依据”列给出的是可观察的证据,而非主观印象。
| 检查项 | 观察内容 | 判断依据 | 倾向机制 |
|---|---|---|---|
| 缺失分布形态 | 缺失矩阵中散点 / 成块 / 单侧集中 | 散点→MCAR;成块→MAR;单侧→MNAR | 初判 |
| 与观测变量关联 | 缺失组 vs 完整组在各观测变量上的差异 | 显著差异→依赖观测变量 | MAR |
| 与自身取值关联 | 缺失样本邻近值、同批次其他指标 | 系统性偏高/偏低→依赖缺失值 | MNAR |
| 量程 / LOD 规则 | 是否存在截断、剔除、检出限记录 | 有截断规则且缺失集中→MNAR | MNAR |
| 批次 / 仪器元数据 | 缺失是否集中在某批次、仪器、操作人 | 集中且与样本值无关→MCAR | MCAR |
| 缺失率与时间 | 缺失率是否随时间漂移 | 漂移→可能依赖过程变量 | MAR/MNAR |
归因结论如何影响修复策略
机制判断不是学术分类,它直接决定下一步能做什么。MCAR 下,完整案例分析(删除缺失行)是无偏的,简单插补也可接受;MAR 下,应使用多重插补或 EM,且插补模型必须包含与缺失相关的观测变量;MNAR 下,标准插补会引入偏差,需要引入敏感性分析、模式混合模型,或回到实验层面补充测量、修正量程记录。若无法确认机制,至少应做“MCAR 假设下”与“MNAR 假设下”两种修复的对比,报告结果差异范围,而不是默认选一种填完就结束。
实际工作中,建议在数据修复日志中为每个缺失列记录三件事:判定机制、判定依据(哪条检验、哪条实验记录)、所选修复方法及理由。这样当后续结果出现异常时,可以快速回溯是机制判断错了,还是修复方法用错了。缺失机制识别是质量闭环的入口,入口判错,后面所有修复都建立在错误假设上。