R

数据缺失值处理 -- R

2020-06-09  本文已影响0人  MaiyuAmmy

转载https://blog.csdn.net/yyykkklll123/article/details/83867076

步骤:

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函数可以实现这种方法

上一篇 下一篇

猜你喜欢

热点阅读