用途:处理数据集中的缺失值,属于分析模块。核心纪律是先声明缺失机制(MCAR/MAR/MNAR),再选用能诚实反映不确定性的方法,即多重插补加 Rubin 规则合并,或 FIML;单次插补会把猜测值当作观测值,低估标准误,不可作为最终分析。
主要能力:区分三种机制及其后果——MCAR 下成列删除无偏但浪费;MAR 下 MI/FIML 有效;MNAR 需选择模型或模式混合模型加敏感性分析。机制是假设且基本不可检验,需说明并论证,可用 mice::md.pattern 检查缺失模式、Little 检验作辅助证据。
使用方式:Python 用 statsmodels 的 MICE,如 mice.MICEData(df) 与 mice.MICE("y ~ x1 + x2", sm.OLS, imp).fit(n_burnin=10, n_imputations=20);R 用 mice,如 md.pattern(data)、imp <- mice(data, m = 20, method = "pmm")、fit <- with(imp, lm(y ~ x1 + x2))、summary(pool(fit))。FIML 适用于 MAR 下的似然/SEM 模型,潜变量模型应转 alterlab-sem-psychometrics。
插补次数 m:经验上不少于不完整案例百分比,缺失信息比例越高 m 越大,现代建议常取 20–50,需报告 m 与 FMI。
限制与注意:scikit-learn 的 IterativeImputer 只返回单个完整数据集,不按 Rubin 规则合并,官方文档已明确说明,用于推断会低估不确定性;若必须使用可设 sample_posterior=True 并换种子重复后手动合并,但 mice 与 statsmodels MICE 开箱即正确。报告清单需包含机制、方法、合并与 MNAR 敏感性分析。其他事实暂未提供。