前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >缺失值处理(r语言,mice包)

缺失值处理(r语言,mice包)

作者头像
三猫
发布2018-04-10 11:32:34
3.5K0
发布2018-04-10 11:32:34
举报
文章被收录于专栏:机器学习养成记

对缺失值的处理是数据预处理中的重要环节,造成数据缺失的原因有:数据丢失、存储故障和调查中拒绝透露相关信息。这里我们使用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()函数生成完整数据集,这里选择生成对第一个数据集来对缺失值进行替换。


机器学习养成记

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习养成记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档