缺失值处理是数据处理前期必经的步骤。最近学校课程里做的几个项目中,出现了不同情况的缺失值,特在这里根据自己的经验总结一下,希望对读者有所帮助~
缺失值的种类,大概可以分为三类:
完全随机缺失值 Missing completely at random (MCAR) :下面的例子中的MCAR, 缺失是随机的,每个值的缺失概率相同。缺少数据这一事实与观察到的数据和未观察到的数据均无关,数据只是丢失了。他们彼此之间不存在任何逻辑关系。
举个例子:完全随机缺失值符合---缺少数据与数据中的其他信息完全无关。当数据完全随机丢失时,这意味着可以只使用具有完整数据的观测值进行分析(前提是我们有足够的此类观测值)。如果我们可以预测哪些属性缺少数据(例如使用常识,回归或其他方法),则该数据不是MCAR。下图,我们可以去除ID=4,存在缺失值的数据。
随机缺失值 Missing at random (MAR) :
当数据随机丢失时,这意味着我们需要使用插补方法(例如多重插补)或者是专门为随机数据丢失而设计的分析方法。与完全随机丢失相比,随机丢失始终是一个更安全的假设。 这是因为在假定数据完全随机丢失的情况下进行的任何有效分析在假定数据随机丢失的情况下也将有效。下图中的例子,我们可以用概率推出缺失值可能为“High”.
不随机缺失值 Missing not at random (nonignorable): 举个例子,调查收入的时候,低收入和高收入的人可能会拒绝回答。当数据丢失不是随机的时,这意味着我们不能使用任何标准方法来处理丢失的数据(例如,插补或专门为丢失值设计的算法)。 如果丢失的数据不是随机丢失的,则任何标准计算都会给出错误的答案。
除此之外,还有一种系统缺失值(假性缺失值)。我的理解是由于输入的数据不符合表中的数据的一些属性,所以呈现缺失状态。我自己理解不属于上面三种真性缺失值。在今年下半年的项目中,有一个是统计不同量表之间变量的关系。把量表合在一起之后发现,有大量的缺失值,然后又仔细检查了一下量表信息,发现每个量表的年龄范围不同。所以很多人只要求回答自己范围里的题目即可。这既是一种系统缺失值。
举个例子:图中的ID3,不是children,所以后面一切关于children的数据都缺失了。在这种情况下,我们可以从逻辑上推断出正确的值为0,因此在我们的分析中应使用该值来代替缺少的值。
了解数据丢失原因的最简单方法是了解数据收集过程,统计方法也可以帮助我们了解数据是MCAR还是MAR。缺失值出现的可能原因:
-参与者可能无法(合法或非法)回答问题。 例如,调查中的受访者可能拒绝回答年龄或收入等特定项目。
-设备和数据收集或记录机制可能会发生故障。 例如一项生物学研究中,动物可能会死于某些无法衡量的变量。
-受试者可能在研究完成之前退出研究。
-调查中的受访者可能拒绝回答年龄或收入等特定问题。
可能会发生数据输入错误。 例如,数据清理也可能导致数据丢失。
缺失值缺失的多种模式:
普通的模型(General Pattern)
特殊模型(special patterns)