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 假设的方法。

从数据模式识别缺失机制

识别不能只靠单列缺失率,要看缺失的分布结构。常用手段有三类:

  1. 缺失矩阵可视化:把样本按行、变量按列画成黑白矩阵,观察缺失是散点状(偏 MCAR)、成块状(偏 MAR,与某观测变量相关)还是集中在某变量高值端(偏 MNAR)。
  2. 缺失与观测变量的关联检验:对每个变量,比较“该变量缺失”与“未缺失”两组在其他观测变量上的分布。若某观测变量在两组的均值差异显著(如 t 检验 p < 0.05),说明缺失依赖该观测变量,倾向 MAR。
  3. 缺失与自身取值的关联:若缺失样本的邻近观测值或同批次其他指标显示其真实值偏高/偏低,则倾向 MNAR。这一步往往需要实验设计信息辅助。

下面这张图把三种机制在“缺失概率—变量取值”关系上的差异,以及对应的识别线索和典型实验来源放在一起对照,便于快速定位。

缺失机制识别与归因对照 缺失概率依赖什么 → 数据模式线索 → 实验设计来源 MCAR 完全随机缺失 缺失概率 P(M) 与任何变量无关 数据模式线索 • 缺失点随机散布 • 缺失组与完整组 各变量分布无差异 • 缺失率与取值无关 实验设计来源 • 随机采样丢包 • 试管破碎 / 断电 • 随机编号错位 处理倾向 删除或简单插补均可 偏差风险最低 MAR 随机缺失 缺失概率 P(M | Y_obs) 依赖观测变量 数据模式线索 • 缺失成块 / 成组 • 缺失组在某观测变量 上均值显著不同 • 缺失率随观测变量变化 实验设计来源 • 低于 LOD 记为缺失 • 某仪器批次未测 • 问卷跳题(依赖前题) 处理倾向 多重插补 / EM 可用 需纳入相关观测变量 MNAR 非随机缺失 缺失概率 P(M | Y_mis) 依赖缺失值本身 数据模式线索 • 缺失集中在高值 / 低值端 • 缺失与自身取值相关 • 缺失样本邻近值异常 实验设计来源 • 超量程被剔除 • 异常值人工删除 • 失败实验选择性不记录 处理倾向 需敏感性分析 / 模式混合模型 直接插补会引入系统偏差 依赖观测变量 依赖缺失值本身

结合实验设计反推缺失机制

统计检验只能给出“倾向”,真正可靠的归因要回到实验设计。做法是:把缺失记录与实验元数据(批次、仪器、操作人、时间、样本编号、量程、LOD)对齐,逐条追问“这个缺失是在哪个环节、因为什么规则产生的”。

举一个可复现的教学示例。某生化实验测量 120 个样本的酶活(U/L),同时记录底物浓度(mmol/L)和检测批次。数据中出现 18 个酶活缺失。按以下顺序排查:

  1. 看缺失矩阵:18 个缺失中有 14 个集中在批次 B3,且这些样本的底物浓度普遍偏高(均值 8.6 vs 全体 5.2)。
  2. 做关联检验:以“酶活是否缺失”为分组,比较底物浓度分布,t 检验 p = 0.003,说明缺失依赖底物浓度这一观测变量 → 倾向 MAR。
  3. 查实验记录:B3 批次使用旧酶标仪,量程上限 200 U/L。核对原始记录发现,这 14 个样本的初测读数均接近或超过 200 U/L,被操作员标记为“超量程”后未录入。
  4. 修正判断:缺失实际依赖的是酶活真实值(超过量程),而非底物浓度本身。底物浓度只是与酶活相关的伴随变量。因此机制应为 MNAR,而非 MAR。

这个例子说明:仅凭统计关联容易把 MNAR 误判为 MAR。必须结合“量程上限”“剔除规则”这类设计信息,才能确认缺失是否依赖缺失值本身。反过来,如果 B3 批次是因为仪器故障随机丢失了 14 个读数,与样本值无关,则应判为 MCAR。

可操作的归因检查表

把上述过程固化成一张检查表,每次遇到缺失列时逐项过一遍,能显著降低误判率。表中“判断依据”列给出的是可观察的证据,而非主观印象。

检查项观察内容判断依据倾向机制
缺失分布形态缺失矩阵中散点 / 成块 / 单侧集中散点→MCAR;成块→MAR;单侧→MNAR初判
与观测变量关联缺失组 vs 完整组在各观测变量上的差异显著差异→依赖观测变量MAR
与自身取值关联缺失样本邻近值、同批次其他指标系统性偏高/偏低→依赖缺失值MNAR
量程 / LOD 规则是否存在截断、剔除、检出限记录有截断规则且缺失集中→MNARMNAR
批次 / 仪器元数据缺失是否集中在某批次、仪器、操作人集中且与样本值无关→MCARMCAR
缺失率与时间缺失率是否随时间漂移漂移→可能依赖过程变量MAR/MNAR
常见误区:把“缺失率低”等同于“可以忽略”。即使缺失率只有 3%,如果这 3% 全部来自超量程样本,直接删除或均值插补都会系统性低估高值端,导致后续统计推断偏移。机制判断优先于缺失率大小。

归因结论如何影响修复策略

机制判断不是学术分类,它直接决定下一步能做什么。MCAR 下,完整案例分析(删除缺失行)是无偏的,简单插补也可接受;MAR 下,应使用多重插补或 EM,且插补模型必须包含与缺失相关的观测变量;MNAR 下,标准插补会引入偏差,需要引入敏感性分析、模式混合模型,或回到实验层面补充测量、修正量程记录。若无法确认机制,至少应做“MCAR 假设下”与“MNAR 假设下”两种修复的对比,报告结果差异范围,而不是默认选一种填完就结束。

实际工作中,建议在数据修复日志中为每个缺失列记录三件事:判定机制、判定依据(哪条检验、哪条实验记录)、所选修复方法及理由。这样当后续结果出现异常时,可以快速回溯是机制判断错了,还是修复方法用错了。缺失机制识别是质量闭环的入口,入口判错,后面所有修复都建立在错误假设上。