如何理解r语言中的缺失值处理

这期内容当中小编将会给大家带来有关如何理解r语言中的缺失值处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

对缺失值的处理是数据预处理中的重要环节,造成数据缺失的原因有:数据丢失、存储故障和调查中拒绝透露相关信息。这里我们使用VIM包中的sleep数据集为样本,介绍缺失值处理的方法。sleep数据集纪录了62个哺乳动物的睡眠信息,包括体重,睡眠时长,做梦时长等。

  • 缺失值分类

1,完全随机缺失(MCAR):缺失数据与其他变量无关。如果每个缺失变量都为MCAR,则完整样本可看为更大数据集的简单抽样。

2,随机缺失(CAR):缺失数据与其他观测变量相关,与本身变量不相关。比如体重小的动物Dream数据更容易缺失(较小动物难以观察),此时选定体重,则Dream缺失为随机。

3,非随机缺失(MNAR):缺失数据不仅依赖于其他变量还依赖于本身变量。比如做梦时间短,Dream容易缺失(可能由于时间短难测量),此时数据缺失为MNAR。

数据缺失一般为前两种情况,最后一种情况的处理较复杂,要对感兴趣的关系进行建模,还要对缺失值的生成机制进行建模,并不断收集新数据。

  • 判断缺失值

1,is.na()函数。作用于向量、数据框,对应数值为缺失值则返回TRUE,否则返回FALSE。将sum()函数作用于is.na()的结果,可返回缺失值数量。

如何理解r语言中的缺失值处理

2,complete.cases()函数,返回逻辑值向量。与is.na()函数相反,缺失值返回FALSE,正常数据返回TRUE,常用来选择无缺失的数据。

如何理解r语言中的缺失值处理

  • 判断缺失模式

1,列表显示缺失情况。这里使用mice包中的md.pattern()函数。

如何理解r语言中的缺失值处理

2,图形显示缺失情况。

(1)aggr()函数

如何理解r语言中的缺失值处理

如何理解r语言中的缺失值处理

左侧图显示了每个字段中缺失样本数量,右侧每一行代表了一种缺失模式,红色代表缺失,蓝色代表未缺失,右侧表示此模式数量,可与md.pattern()结果对应观察。

(2)matrixplot()函数

如何理解r语言中的缺失值处理

如何理解r语言中的缺失值处理

浅色代表值小,深色代表值大,红色代表缺失。matrixplot()展示了每条样本的缺失情况。

(3)marginplot()函数,每次只能绘制两个变量的缺失情况。

如何理解r语言中的缺失值处理

如何理解r语言中的缺失值处理

如果为MCAR,红绿箱线图应该很类似。

3,相关性探索缺失情况。通过生成影子矩阵,用1表示缺失数据,选取有缺失的样本,计算缺失相关系数矩阵。有助于观察哪些变量常一起缺失,以及分析变量“缺失”与其他变量间的关系。

如何理解r语言中的缺失值处理

  • 处理缺失值

1,如果缺失样本数少且为随机出现,可考虑直接删除缺失样本。用na.omit(sleep)或者complete.cases(sleep)。如果某一字段的缺失比例达到5%以上,可与考虑删除此字段。

2,替换缺失值。可以通过均值、中位数、随机数来替换缺失值,但是会引入偏差。

3,多重插补法。mice包中的mice()函数可以通过插补返回多个完整数据集并存入imp,用with函数对imp进行线性回归,最后用pool()函数对回归结果进行汇总。

如何理解r语言中的缺失值处理

mice()函数默认生成5个完整数据集。查看插补数据,可用temp$imp,结果为每个数据集(第一行)每个观测值(第一列)对插补数据。

如何理解r语言中的缺失值处理

nmis表示变量中缺失数据个数,fmi表示由缺失数据贡献对变异。with用来检验某数据集是否合格,pool用来检验整个方法是否合格,以此判断选择哪个数据集。

最后用complete()函数生成完整数据集,这里选择生成对第一个数据集来对缺失值进行替换。

如何理解r语言中的缺失值处理

上述就是小编为大家分享的如何理解r语言中的缺失值处理了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/208362.html

(0)
上一篇 2021年12月7日
下一篇 2021年12月7日

相关推荐

发表回复

登录后才能评论