这期内容当中小编将会给大家带来有关如何理解r语言中的缺失值处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
对缺失值的处理是数据预处理中的重要环节,造成数据缺失的原因有:数据丢失、存储故障和调查中拒绝透露相关信息。这里我们使用VIM包中的sleep数据集为样本,介绍缺失值处理的方法。sleep数据集纪录了62个哺乳动物的睡眠信息,包括体重,睡眠时长,做梦时长等。
-
缺失值分类
1,完全随机缺失(MCAR):缺失数据与其他变量无关。如果每个缺失变量都为MCAR,则完整样本可看为更大数据集的简单抽样。
2,随机缺失(CAR):缺失数据与其他观测变量相关,与本身变量不相关。比如体重小的动物Dream数据更容易缺失(较小动物难以观察),此时选定体重,则Dream缺失为随机。
3,非随机缺失(MNAR):缺失数据不仅依赖于其他变量还依赖于本身变量。比如做梦时间短,Dream容易缺失(可能由于时间短难测量),此时数据缺失为MNAR。
数据缺失一般为前两种情况,最后一种情况的处理较复杂,要对感兴趣的关系进行建模,还要对缺失值的生成机制进行建模,并不断收集新数据。
-
判断缺失值
1,is.na()函数。作用于向量、数据框,对应数值为缺失值则返回TRUE,否则返回FALSE。将sum()函数作用于is.na()的结果,可返回缺失值数量。
2,complete.cases()函数,返回逻辑值向量。与is.na()函数相反,缺失值返回FALSE,正常数据返回TRUE,常用来选择无缺失的数据。
-
判断缺失模式
1,列表显示缺失情况。这里使用mice包中的md.pattern()函数。
2,图形显示缺失情况。
(1)aggr()函数
左侧图显示了每个字段中缺失样本数量,右侧每一行代表了一种缺失模式,红色代表缺失,蓝色代表未缺失,右侧表示此模式数量,可与md.pattern()结果对应观察。
(2)matrixplot()函数
浅色代表值小,深色代表值大,红色代表缺失。matrixplot()展示了每条样本的缺失情况。
(3)marginplot()函数,每次只能绘制两个变量的缺失情况。
如果为MCAR,红绿箱线图应该很类似。
3,相关性探索缺失情况。通过生成影子矩阵,用1表示缺失数据,选取有缺失的样本,计算缺失相关系数矩阵。有助于观察哪些变量常一起缺失,以及分析变量“缺失”与其他变量间的关系。
-
处理缺失值
1,如果缺失样本数少且为随机出现,可考虑直接删除缺失样本。用na.omit(sleep)或者complete.cases(sleep)。如果某一字段的缺失比例达到5%以上,可与考虑删除此字段。
2,替换缺失值。可以通过均值、中位数、随机数来替换缺失值,但是会引入偏差。
3,多重插补法。mice包中的mice()函数可以通过插补返回多个完整数据集并存入imp,用with函数对imp进行线性回归,最后用pool()函数对回归结果进行汇总。
mice()函数默认生成5个完整数据集。查看插补数据,可用temp$imp,结果为每个数据集(第一行)每个观测值(第一列)对插补数据。
nmis表示变量中缺失数据个数,fmi表示由缺失数据贡献对变异。with用来检验某数据集是否合格,pool用来检验整个方法是否合格,以此判断选择哪个数据集。
最后用complete()函数生成完整数据集,这里选择生成对第一个数据集来对缺失值进行替换。
上述就是小编为大家分享的如何理解r语言中的缺失值处理了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/208362.html