数据缺失值处理

步骤:
1.识别缺失值
2.分析缺失的原因
3.查看缺失值情况
4.处理缺失值

识别
判断缺失值:is.na()
识别矩阵或数据框中的完整观测:complete.cases()

any(is.na(data)):检查是否存在缺失值
head(is.na(data $ col1),5):查看数据data中col1列前5个数据的缺失情况
sum(is.na(data $ col1)):计算col1列中的缺失值个数
sum(!is.na(data $ col1)):计算col1列中的非缺失值个数
mean(!complete.cases(data)):计算data中完整行的百分比
newdata=data[complete.cases(data),]:从data中提取出完整观测
deldata=data[!complete.cases(data),]:从data中提取出非完整观测

分析缺失的原因
MCAR:完全随机缺失,即某变量缺失值与它所在变量其他观测值无关,与其他变量也无关。

MAR:随机缺失,即某变量出现缺失与其他变量相关,与自身未观测值不相关(大多数情况下处理的都是这种数据)

MANR:非随机缺失,即变量出现缺失与其观测值有关,需要用专门的方法重新收集数据。

查看缺失值情况
1.列表显示:
加载mice包(实现处理丢失数据方法的包)
md.pattern()函数:md.pattern(x, plot = TRUE)
生成一个显示缺失值模式(0,1)的表格,0表示列中有缺失值,1表示没有

2.图形显示:
加载VIM包(可视化缺失值、插补值)
aggr()函数:绘制变量缺失值个数
aggr(x, delimiter = NULL, plot = TRUE, …)

处理缺失值
删除法
1.行删除(个案删除)
适用:缺失数据较少,且分散
缺点:造成数据浪费,估计参数可能会有偏
data[complete.cases(data),]

2.成对删除
优点:用到了 所以可获取的信息,在MCAR时可,参数估计无偏
缺点:相关系数矩阵可能不正定,难以选择用哪个样本量计算标准误,用平均的可能造成低估
apply(data,2,mean,na.rm=T)
cor(data,use=‘pair’)

插补
1.用代表中心趋势的值插补缺失
选择中位数、平均数、众数中哪一个由分布决定
近似正态分布:均值插补
偏态分布:中位数插补

例:使用内置数据集实现均值插补


2.回归插补
方法:对缺失变量和已观测变量建立回归方程,用缺失变量的预测值对缺失值进行插补

例:

3.随机回归插补

在回归预测值上增加随机因素

(这种方法生成的插补值可能有负数,这是由于加入随机因素引起的)

4.多重插补
基于重复模拟插补缺失值


5.K临近法
根据样本观测值之间的相关性,利用欧氏距离寻找与缺失观测最相似的k个样本中的观测,填补缺失值
DMwR包中knnInputation函数可以实现这种方法

 ———————————————— 
版权声明:本文为CSDN博主「yyykkklll123」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yyykkklll123/article/details/83867076

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值