15.1 处理缺失值的步骤

刚接触缺失数据研究的读者可能会被各式各样的方法和言论弄得眼花缭乱。该领域经典的读本是Little和Rubin的Statistical Analysis with Missing Data, Second Edition(2002)一书。其他比较优秀的专著还有Allison的Missing Data(2001)、Schafer和Graham的“Missing Data: Our View of the State of the Art”(2002),以及Schlomer、Bauman和Card的“Best Practices for Missing Data Management in Counseling Psychology”(2010)。一个完整的处理方法通常包含以下几个步骤:

  • 识别缺失数据;

  • 检查导致数据缺失的原因;

  • 删除包含缺失值的实例或用合理的数值代替(插补)缺失值。

但遗憾的是,仅有识别缺失数据是最清晰明确的步骤。知道数据为何缺失依赖于你对数据生成过程的理解,而决定如何处理缺失值则需要判断哪种方法的结果最为可靠和精确。

缺失数据的分类

统计学家通常将缺失数据分为三类。它们都用概率术语进行描述,但思想都非常直观。我们将用sleep研究中对做梦时长的测量(有12个动物有缺失值)来依次阐述三种类型。

  1. 完全随机缺失 若某变量的缺失数据与其他任何观测或未观测变量都不相关,则数据为完全随机缺失(MCAR)。若12个动物的做梦时长值缺失不是由于系统原因,那么可认为数据是MCAR。注意,如果每个有缺失值的变量都是MCAR,那么可以将数据完整的实例看做是对更大数据集的一个简单随机抽样。

  2. 随机缺失 若某变量上的缺失数据与其他观测变量相关,与它自己的未观测值不相关,则数据为随机缺失(MAR)。例如,体重较小的动物更可能有做梦时长的缺失值(可能因为较小的动物较难观察),“缺失”与动物的做梦时长无关,那么该数据就可以认为是MAR。此时,一旦你控制了体重变量,做梦时长数据的缺失与出现将是随机的。

  3. 非随机缺失 若缺失数据不属于MCAR或MAR,则数据为非随机缺失(NMAR)。例如,做梦时长越短的动物也更可能有做梦数据的缺失(可能由于难以测量时长较短的事件),那么数据可认为是NMAR。

大部分处理缺失数据的方法都假定数据是MCAR或MAR。此时,你可以忽略缺失数据的生成机制,并且(在替换或删除缺失数据后)可以直接对感兴趣的关系进行建模。当数据是NMAR时,想对它进行恰当地分析比较困难,你既要对感兴趣的关系进行建模,还要对缺失值的生成机制进行建模。(目前分析NMAR数据的方法有模型选择法和模式混合法。由于NMAR数据的分析十分复杂,超出了本书的范畴,我们将忽略对它的讨论。)

处理缺失数据的方法有很多,但不能保证都生成一样的结果。图15-1列出了一系列可用来处理不完整数据的方法,以及相应的R包。

15.1 处理缺失值的步骤 - 图1

图15-1 处理不完整数据的方法,以及R中相关的包和函数

对于处理缺失数据方法的完整介绍要有一本书的篇幅才能做到。本章,我们只是学习探究缺失值模式的方法,并重点介绍三种最流行的处理不完整数据的方法(推理法、行删除法和多重插补法)。在本章最后,我们还将介绍一些在特定环境中非常有用的其他处理办法。