R -- 如何处理缺失数据

brief

R -- 如何处理缺失数据_第1张图片

R -- 如何处理缺失数据_第2张图片

识别缺失值

R -- 如何处理缺失数据_第3张图片

  • 当传入向量,返回的是包含逻辑向量的等长向量。
  • complete.cases()用来识别矩阵或者数据框有没有包含缺失值的行,若整行数据完整则返回TRUE,若行数据包含缺失值,不管几个缺失值则返回FALSE。

R -- 如何处理缺失数据_第4张图片

探索缺失值模式

列表+图形展示缺失值

library(mice)
library(VIM)

data(sleep, package="VIM")
md.pattern(sleep,rotate.names = TRUE)

R -- 如何处理缺失数据_第5张图片
R -- 如何处理缺失数据_第6张图片
如何理解输出的数据框:1代表未缺失,0代表缺失

  • 最左边的一列要和最右侧的一列一起看:
    有42个观测缺失0个变量
    有9个观测缺失2个变量
    有3个观测缺失1个变量
    有2个观测缺失1个变量
  • 最下面一行表示每个变量缺失的个数
    sleep变量缺失个4个数据
    span变量缺失了4个数据

    总共缺失了38个数据

纯图形探索缺失值

library(VIM)

data(sleep, package="VIM")
aggr(sleep, prop=FALSE, numbers=TRUE) # vim 包
aggr(sleep, prop=TRUE, numbers=TRUE) # 数字变成比例

R -- 如何处理缺失数据_第7张图片

  • 右边barplot表示哪些变量缺失的数值个数
  • 左边的图每一行的cell颜色区分是否有缺失值,最下面表示42个完整的观测
    NonD+Dream 变量同时缺失的有9个观测
    Geet变量缺失4次,仅仅缺失Geet变量的只有3个观测

用相关性探索缺失值

x <- as.data.frame(abs(is.na(sleep))) #生成影子矩阵,缺失值为1,未缺失值为0
y <- x[which(apply(x,2,sum)>0)]
cor(y)

R -- 如何处理缺失数据_第8张图片

  • 相关性系数越大,说明同时缺失的频率越高

理解数据的缺失原因和影响

R -- 如何处理缺失数据_第9张图片

处理缺失值的几种方法

推理法

  • 比如某几个变量之间具有线性关系,缺失的那个可以用其他几个变量推算出来
    比如,年龄缺失,可以用出生日期推算
    比如,性别缺失,用性别偏向的名字也可以推算

行删除

R -- 如何处理缺失数据_第10张图片
在这里插入图片描述

插补法

R -- 如何处理缺失数据_第11张图片
R -- 如何处理缺失数据_第12张图片
R -- 如何处理缺失数据_第13张图片

其他方法

  • 成对删除
    只有用到这个观测 的变量有缺失时才会被剔除,用到这个观测其他变量时并不会删除。
cor(sleep, use="pairwise.complete.obs")

在这里插入图片描述

  • 简单插补法
    就是用均值、中位数、众数等固定值替代缺失值
    在这里插入图片描述

你可能感兴趣的:(R,统计学,r语言)