“缺失数据的多重填补”的简单介绍

“缺失数据的多重填补”模块

多重填补(Multiple Imputation)是一种常用的缺失值处理方法,它通过多次模拟生成缺失值的估计值,并取平均值来减少估计偏差,提高数据分析结果的可靠性。[1]

链式方程多重填补(Multiple Imputation by Chained Equations,以下简称MICE)是一种通过迭代生成多个缺失值的估计值,并利用每次迭代的结果来更新模型,最终得到缺失值的估计方法。相较于传统的多重填补方法,MICE方法能够更准确地估计缺失值,特别是在处理复杂数据和多个缺失变量时效果更佳。[2]

本方法基于链式方程多重填补方法,对存在缺失的数据进行多重填补,并输出多个完整数据集方便用户进行后续分析。

本模块涉及的数学符号

针对本模块,我们规定下述通用的符号表示变量(variable)

  • \(Y\): \(n\times p\) 矩阵,表示包含样本中所有 \(n\) 个单位在 \(p\) 个变量上的数据值的矩阵
  • \(R\): \(n\times p\) 矩阵,指示变量,与Y中元素一一对应。 \(r_{ij}=1\) 表示 \(y_{ij}\) 被观察到; \(r_{ij}=0\) 表示 \(y_{ij}\) 缺失
  • \(Y_{mis}\):当 \(r_{ij}=0\) 时, \(y_{ij} \in Y_{mis}\)
  • \(Y_{obs}\):当 \(r_{ij}=1\) 时, \(y_{ij} \in Y_{obs}\)

链式方程多重填补方法介绍

MICE方法是一种迭代算法,它的基本思想是将缺失数据问题转化为一个反复迭代求解的过程。该方法首先将含有缺失值的数据集分成两部分:一部分是完整的变量,另一部分是存在缺失值的变量。然后,对缺失值变量进行填补,填补的过程是通过迭代来实现的。

在MICE方法中,对每个缺失值变量都建立一个子模型,通过预测该变量的值来填补缺失值。这些子模型的建立方式可以根据数据类型来选择。在每次迭代中,MICE方法将所有的子模型串联起来,形成一个链式方程。这个方程的顺序通常是按照缺失值变量的顺序排列的。在每个迭代周期中,MICE方法会按照链式方程的顺序,依次估计每个缺失值变量的值,然后将这个估计值作为下一个缺失值变量的输入,继续估计下一个缺失值变量的值,直到所有的缺失值变量都被估计出来。

MICE方法的迭代过程会持续多次,直到估计值的变化足够小或者达到了预设的迭代次数。在每次迭代结束后,MICE方法会生成一个完整的数据集,其中所有的缺失值变量都被估计为一个具体的数值。这个过程会重复多次,每次生成一个完整的数据集,最终会得到多个完整的数据集。这些完整的数据集可以用于后续的统计分析。

MICE方法填补过程

  1. 对每一个变量 \(Y_j\) , \(j=1,...,p\) ,选择一个填补模型 \(P(Y_j^{mis}|Y_j^{obs},Y_{-j},R)\).

  2. 对每一个 \(j\) , 从 \(Y_j^{obs}\) 中随机抽取值作为 \(\hat{Y_j^0}\) .

  3. 对每一轮填补 \(t=1,...,M\) ,重复.

  4. 对每一个变量 \(j=1,...,p\) ,重复.

  5. 定义 \(\hat Y_{-j}^t=(\hat Y_{1}^t,...,\hat Y_{j-1}^t,\hat Y_{j+1}^{t-1},...,\hat Y_{p}^{t-1})\) 是目前除了 \(Y_j\) 的完整数据.

  6. 选取 \(\hat \phi_j^t \sim P(\phi_j^t|Y_j^{obs},\hat Y_{-j}^t,R)\) .

  7. 选取当前填补值 \(\hat{Y_j^t} ~ P(Y_j^{mis}|Y_j^{obs},\hat Y_{-j}^t, R, \hat \phi_j^t)\) .

  8. 停止重复 \(j\) .

  9. 停止重复 \(t\) .

填补模型选择和具体方法介绍

由上述介绍可知,利用MICE方法填补数据集需要对每一个需要填补的变量建立一个填补模型。在本方法中,简化为对二值变量和连续变量分别选择一个填补模型,即所有含缺失值的二值变量使用同一个填补模型,所有含缺失值的连续变量选择一个填补模型。

1. 对于二值变量

  • 方法1:逻辑斯蒂回归(Logistic regression)

利用数据集中的非缺失部分中拟合逻辑回归模型,从其后验分布中得到回归系数向量,计算每个缺失值的预测分数,并分别与从 \(U(0,1)\) 随机抽取的值比较,再进行填补。

  • 方法2:Lasso逻辑斯蒂回归(Logistic Regression with L1 regularization)

从数据集中的非缺失部分中抽取1个bootstrap样本,拟合Lasso逻辑回归模型,从其后验分布中得到回归系数向量,计算每个缺失值的预测分数,并分别与从 \(U(0,1)\) 随机抽取的值比较,再进行填补。

  • 方法3:预测匹配(Predictive Mean Matching)

对于每个缺失值,找到与其最相似的 \(k\) 个(默认 \(k=5\))个完整值,其中相似度是指变量间的欧氏距离,从这 \(k\) 个最相似的完整值中,随机选取一个值来替代缺失值。其中,被选中的完整值越靠近缺失值,被选中的概率就越大。

  • 方法4:分类与回归树(Classification and Regression Tree)

通过递归分割拟合分类或回归树,对于每个缺失值,根据拟合的树找到它们所属的终端节点,在节点成员中进行随机抽样,并将抽样得到的观测值作为填补值。

  • 方法5:随机森林(Random Forest)

从数据集中的非缺失部分中抽取 \(k\) 个bootstrap样本,使用随机森林方法建立 \(k\) 个决策树,并将缺失值分配到每个决策树的叶子节点中,最终从每个叶子节点的样本中随机选择一个非缺失值作为填补值。

2. 对于连续变量

  • 方法1:贝叶斯线性回归(Bayesian Linear Regression)

利用数据集中的非缺失部分拟合一个贝叶斯线性回归模型,考虑参数不确定性,从其后验分布中抽取多个回归系数向量,并考虑噪声,最终结合预测值得到填补值。

  • 方法2:Lasso线性回归(Lasso Linear Regression)

从数据集中的非缺失部分中抽取1个bootstrap样本,用Lasso回归拟合模型,用得到的回归系数,原始(非bootstrap)数据、和估计误差方差定义的预测分布中随机抽取填补值。

  • 方法3:线性回归预测值(Linear Regression, Predicted Values)

利用数据集中的非缺失部分计算线性回归权重,并将预测值作为缺失数据的填补值。

  • 方法4:预测匹配(Predictive Mean Matching)

对于每个缺失值,找到与其最相似的 \(k\) 个(默认 \(k=5\))个完整值,其中相似度是指变量间的欧氏距离,从这 \(k\) 个最相似的完整值中,随机选取一个值来替代缺失值。其中,被选中的完整值越靠近缺失值,被选中的概率就越大。

  • 方法5:分类与回归树(Classification and Regression Tree)

通过递归分割拟合分类或回归树,对于每个缺失值,根据拟合的树找到它们所属的终端节点,在节点成员中进行随机抽样,并将抽样得到的观测值作为填补值。

  • 方法6:随机森林(Random Forest)

从数据集中的非缺失部分中抽取 \(k\) 个bootstrap样本,使用随机森林方法建立 \(k\) 个决策树,并将缺失值分配到每个决策树的叶子节点中,最终从每个叶子节点的样本中随机选择一个非缺失值作为填补值。



分析模型选择和具体方法介绍

用以下符号表示变量:

  • \(Z\) :解释变量; 对一般结局产生主要影响的变量
  • \(Y\) :响应变量;一般结局,包括二值或连续变量
  • \(X\) :协变量;可能对处理分配或结果变量有影响

估计目标(estimand)和估计方法介绍

对于上一步中得到的 \(m\) 个完整数据集,我们都按照以下方式进行分析,并得到相应的估计目标:

1. \(Y\) 为二值变量时,估计目标为:
  • 平均因果作用 (average treatment effect, ATE),定义为

$$\mathbb E[Y(1)-Y(0)]$$

估计方法为逻辑斯蒂回归(logistic regression)。

2. \(Y\)为连续变量时,估计目标为:
  • 平均因果作用

$$\mathbb E[Y(1)-Y(0)]$$

使用线性回归(linear regression)进行协变量调整,并输出标准差。

当 \(M\) 个完整数据集都进行了分析后,我们使用鲁宾规则(Rubin’s rule)来组合得到的估计目标。对 \(t=1,...,M\) 个完整数据集,我们记对其分析得到的平均因果作用集合为 \(ate\) ,标准差集合 \(se\) 。我们组合得到如下的分析结果:

  • 平均因果作用

取 \(M\) 个完整数据集所得到的平均因果作用的平均值,即: $$\hat{ate}=E[ate]$$

  • 标准差

总方差 \(T\) 按如下估计: 组内方差:$U = E[se^{2}]$, 组间方差:$B = V[est}$, 从而得到总方差 $$\hat{T}= U + (1 + (1/M)) * B.$$

从而,标准差 \(se\) 的估计为: $$\hat{se}=\sqrt{T}$$

  • 95%置信区间

按照如下方式进行自由度的计算: $$r=\frac{B+B/M}{\bar{U}},$$ $$\nu_{old}=\frac{M-1}{\lambda^2},$$ $$\nu_{com}=n-k,$$ 其中 \(n\) 为每个完整数据集的样本量, \(k\) 为分析模型中的参数个数, $$\nu_{obs}=\frac{\nu_{com}+1}{\nu_{com}+3} \nu_{com}(1-\lambda),$$ 从而得到: $$\nu=\frac{\nu_{old} \nu_{obs}}{\nu_{old}+\nu_{obs}},$$ 并可以利用自由度计算t分布的95%分位数,进而得到95%置信区间。

  • p值: $$\hat{ate}/\hat{se}, $$

\(t\) 值:$$\hat{ate}/\hat{T},$$ 从而可以结合上述得到的自由度计算得到 \(p\) 值。


参考文献

[1] 1. Rubin DB, editor. Multiple Imputation for Nonresponse in Surveys [Internet]. Hoboken, NJ, USA: John Wiley & Sons, Inc.; 1987. (Wiley Series in Probability and Statistics). http://doi.wiley.com/10.1002/9780470316696

[2] Van Buuren S, Brand JPL, Groothuis-Oudshoorn CGM, Rubin DB. Fully conditional specification in multivariate imputation. Journal of Statistical Computation and Simulation. 2006 Dec;76(12):1049–64. http://www.tandfonline.com/doi/abs/10.1080/10629360600810434


缺失数据的链式方程多重填补

数据和描述性结果




若不存在缺失,则无需选择直接点击开始填补则可得到原数据;若仅存在二值缺失或连续缺失,则只需要在左侧选择对应缺失方法即可。
说明
  • 状态为missing,则该变量存在缺失,可以填补。
  • 状态为invalid,则该变量存在缺失,但不能填补,需要重新传入数据。
  • 状态为complete,则该变量完整,无需操作。

Output 2. 填补结果




基于填补后的数据的因果推断

预览数据

注意:以下只显示数据前6行,全部数据详见“数据”页面。


分析结果