本文主要介绍VIM和mice包,使用数据集为VIM包提供的哺乳动物睡眠数据sleep,主要研究62种哺乳动物的睡眠、生态学变量和体质变量间的关系。
睡眠变量包含睡眠中做梦时(Dream)、不做梦的时长(NonD)以及它们的和(Sleep)。体质变量包含体重(BodyWgt,单位为千克)、脑重(BrainWgt,单位为克)、寿命(Span,单位为年)和妊娠期(Gest,单位为天)。生态学变量包含物种被捕食的程度(Pred)、睡眠时暴露的程度(Exp)和面临的总危险度(Danger)。生态学变量以从1(低)到5(高)的5分制进行测量。
1 处理缺失值的步骤
一个完整的处理方法通常包含以下几个步骤:
(1) 识别缺失数据;
(2) 检查导致数据缺失的原因;
(3) 删除包含缺失值的实例或用合理的数值代替(插补)缺失值。
缺失数据的分类:完全随机缺失(MCAR)、随机缺失(MAR)、非随机缺失(NMAR)
2 识别缺失值
NA(不可得)代表缺失值,NaN(不是一个数)代表不可能的值。符合Inf和-Inf分别代表正无穷和负无穷。识别函数分别为is.na、is.nan()、is.infinite()。
VIM包函数中complete.cases()可用来识别矩阵或数据框中没有缺失值的行。若每行都包含完整的实例,则返回TRUE的逻辑向量;若每行有一个或多个缺失值,则返回FALSE。
由于逻辑值TRUE和FALSE分别等价于数值1和0,可用sum()和mean()函数来获取关于缺失数据的有用信息。
注:complete.cases()函数仅将NA和NaN识别为缺失值,无穷值(Inf和-Inf)被当做有效值。
3 探索缺失值模式
在决定如何处理缺失数据前,了解哪些变量有缺失值、数目有多少、是什么组合形式等信息非常有用。
1 列表显示缺失值
mice包中的md.pattern()函数可生成一个以矩阵或数据框形式展示缺失值模式的表格。例: