3. 缺失值机制

在金融数据处理中,缺失值并不是一个单纯的“技术故障”,它往往携带业务信息。一个客户没有填写收入,可能是因为他不愿透露,也可能是因为系统采集失败,还可能是因为该字段对这类客户根本不适用。若不加区分地删除或填充,模型可能学到错误规律,甚至引入系统性偏差。因此,理解缺失值机制是缺失值处理的第一步。

一、核心原理:三种缺失机制的定义

统计学将缺失机制分为三类:完全随机缺失(MCAR)、随机缺失(MAR)和非随机缺失(MNAR)。三者的核心区别在于:缺失概率是否依赖于已观测变量,是否依赖于缺失值本身。

  • 完全随机缺失(MCAR):缺失与任何变量都无关,纯粹是随机事件。例如,某次数据导出时网络抖动导致部分记录丢失。此时删除缺失样本通常不会引入偏差,但会损失样本量。
  • 随机缺失(MAR):缺失概率依赖于其他已观测变量,但不依赖于缺失值本身。例如,年轻客户更少填写收入字段,而年龄是已观测的。此时可以通过年龄等变量对缺失进行建模填补。
  • 非随机缺失(MNAR):缺失概率依赖于缺失值本身。例如,收入越高的客户越不愿意填写收入。此时任何基于已观测变量的填补都可能产生偏差,需要专门建模或敏感性分析。

记忆要点:MCAR 看“是否随机”,MAR 看“是否可由已观测变量解释”,MNAR 看“缺失是否与隐藏值有关”。

二、识别方法:从业务判断到统计检验

识别缺失机制没有单一万能方法,通常需要业务逻辑、统计检验和可视化三者结合。以下流程可作为实战参考:

  1. 业务访谈:先问数据产生过程。字段是必填还是选填?采集系统是否稳定?客户是否有权拒绝?这一步往往能直接排除或锁定 MNAR。
  2. 缺失模式可视化:用缺失矩阵或热力图观察缺失是否集中出现在某些变量组合中。若缺失呈块状,通常提示 MAR 或 MNAR。
  3. 分组统计:将样本按某变量分组,比较缺失率。若缺失率随已观测变量显著变化,支持 MAR。
  4. Little 检验:用于检验 MCAR 假设。若 p 值小于显著性水平,拒绝 MCAR。
  5. 敏感性分析:对 MNAR,可构造不同缺失假设,观察结论是否稳健。

下面给出一个用 Python 进行缺失模式初筛的示例:

import pandas as pd
import missingno as msno

df = pd.read_csv("loan_application.csv")

# 缺失率排序
missing_rate = df.isnull().mean().sort_values(ascending=False)
print(missing_rate)

# 缺失矩阵图
msno.matrix(df)

# 按年龄分组观察收入缺失率
df["age_group"] = pd.cut(df["age"], bins=[0, 25, 35, 50, 100])
print(df.groupby("age_group")["income"].apply(lambda x: x.isnull().mean()))

若收入缺失率在年轻组明显更高,而年龄已观测,则更倾向 MAR;若高收入客户缺失率更高,但收入本身缺失,则需警惕 MNAR。

三、业务含义:不同机制下的处理策略

缺失机制直接决定处理策略。下表总结了三种机制的业务含义与常见应对方式:

缺失机制 缺失概率依赖 业务含义 常见处理策略
MCAR 不依赖任何变量 采集故障、随机丢失 删除、均值/中位数填充、多重插补
MAR 依赖已观测变量 特定人群不愿填写、系统按规则跳过 回归插补、多重插补、EM 算法、模型自带缺失处理
MNAR 依赖缺失值本身 高收入者隐瞒收入、高风险客户回避 敏感性分析、Heckman 模型、模式混合模型、业务规则修正

在金融风控中,缺失本身常被当作特征。例如“收入字段缺失”可能本身就是高风险信号。此时即使机制是 MNAR,也不一定要填补,而是保留缺失指示变量。

四、案例与误区复盘

某消费金融公司在构建申请评分卡时,发现“月收入”缺失率约 18%。初期团队直接删除缺失样本,模型上线后 KS 下降明显。复盘发现:缺失收入的客户中,年轻客群占比高,且逾期率略高于整体。进一步分组统计显示,收入缺失率随年龄和职业类型显著变化,符合 MAR 特征。团队改用多重插补并加入“收入是否缺失”指示变量,模型稳定性提升。

常见误区包括:

  • 把 MNAR 当 MCAR 处理:直接删除会系统性剔除高收入或高风险人群,导致模型偏差。
  • 只做统计检验,忽略业务逻辑:Little 检验拒绝 MCAR 并不自动等于 MNAR,需结合业务判断。
  • 过度依赖单一插补:均值填充会压缩方差,低估不确定性,尤其在 MAR 下应优先多重插补。
  • 忽略缺失指示变量:在 MNAR 场景中,缺失模式本身可能具有预测力。

缺失机制判断错误,比缺失值本身更危险。任何填补方法都建立在机制假设之上,假设不成立,填补越精细,偏差可能越大。

缺失值机制识别与业务含义 MCAR 缺失与任何变量无关 随机丢失、采集故障 删除 / 简单填充 MAR 缺失依赖已观测变量 特定人群不愿填写 多重插补 / 回归插补 MNAR 缺失依赖缺失值本身 高收入者隐瞒收入 敏感性分析 / 模式混合 识别方法组合 业务访谈 缺失矩阵可视化 分组缺失率比较 Little 检验 敏感性分析 业务含义与处理原则 MCAR:可删除,但损失样本 MAR:建模填补,保留缺失指示 MNAR:谨慎填补,做敏感性分析 缺失机制判断错误 → 模型偏差放大

总结来看,缺失值机制不是纯理论问题,而是连接数据采集、业务规则与模型风险的桥梁。识别 MCAR、MAR 与 MNAR,既要看统计证据,也要看业务场景;处理时,应优先保留缺失指示变量,并在 MAR 下使用多重插补,在 MNAR 下进行敏感性分析。只有机制判断正确,后续的缺失值处理才真正可靠。