利用R包mice实现的链式方程多重插补方法来插补缺失的数据。
所有多重插补方法都遵循三个步骤
插补——与单次插补类似,对缺失值进行插补。但是,插补值会从分布中提取m次,而不是仅提取一次。此步骤结束时,应该有m 个完整的数据集。
分析——对m个数据集进行逐一分析。此步骤结束时,应该有m个分析结果。
池化——通过计算关注变量的平均值、方差和置信区间,或组合各个独立模型的模拟结果,将m个结果合并为一个结果。
为什么要多重插补?
单次插补直接用某种方法填补缺失值,得到一个完整数据集,但忽略了插补值本身存在的不确定性,会低估标准误,导致统计推断过于乐观。
多重插补通过多次(比如5次、10次)插补,生成多个完整数据集,反映了缺失值可能的多种合理取值,从而考虑了插补的不确定性。
链式方程多重插补(MICE)怎么做?
先对所有变量的缺失值初始化(比如用均值或随机值填充),得到一个初步完整数据集。
逐个变量进行迭代插补,比如第1个变量的缺失值用其它变量的当前完整值建立回归模型预测(如线性回归、逻辑回归、PMM等),插补预测值(加上随机扰动)。
依次对第2个、第3个…变量做类似操作,每一轮完成一遍所有变量的插补。
这个过程迭代多次(比如20次),模型逐渐稳定。
每一次迭代的最终结果就是一个完整数据集,重复m次(默认5次)得到多个完整数据集。
随机性的来源在哪里?
每次变量插补时,不是简单用回归预测值,而是用带随机误差的预测值,比如PMM(预测均值匹配)会随机从训练样本中选取一个类似的真实值来填补。
这种“随机扰动”保证了插补值的多样性,使得多组插补结果反映了缺失值潜在的真实变异。
同时,在初始化、模型拟合、抽样步骤中都会引入随机性,保证不同插补数据集的差异。
什么是 PMM(预测均值匹配)?
在 MICE 多重插补中,PMM 是一种常用的插补方法,它不直接使用回归预测值,而是找一个“相似的人”来“借值”填补缺失。
例子
假设你现在有个变量是认知分数(比如“记忆得分”),有些人没填。
你要为“小明”插补一个记忆得分,他的其它信息是:
年龄:40
教育年限:16年
BMI:23
其他认知指标:都正常
你用这些变量训练了一个回归模型来预测“记忆得分”。
回归模型告诉你:“小明的记忆得分大概是 78.3”。
但你不会直接填 78.3。
PMM 怎么做呢?
找到所有“非缺失者”(有真实记忆得分的人),用同一个模型去预测他们的得分。
得到每个人的“预测得分”和他们的真实得分(比如:预测=78.0,真实=80)。
从中选出预测得分最接近 78.3 的几个“邻居”(通常是5个)。
从这几个邻居的“真实得分”中随机抽一个来给小明用,比如抽到的是“80”,那小明就插补为 80。
所以随机来自:
- “邻居”中随机选一个真实值填进去;
- 整个插补过程本身也有随机扰动(不同种子、初始化方式);
插补每个数据集时都独立进行,因此你得到了5个(默认)不完全一样的版本。
分别对5个数据集进行了检验,并应用Rubin规则汇集了5个数据集中的参数估计值。
参考:
https://en.wikipedia.org/wiki/Imputation_(statistics)