进行简单的数据处理时,我们处理的基本都是完整的数据集,但是实际问题中我们经常会遇到带有缺失值的数据,处理此类数据也就显得尤为重要。

处理缺失值的一般步骤

首先我们列出处理缺失值的一般步骤,对整个流程有一个大致的了解。

  1. 识别缺失数据;
  2. 检查导致数据缺失的原因;
  3. 删除包含缺失值的实例或用合理的数值插补缺失值。

数据缺失的种类

  1. 完全随机缺失(MCAR)
  2. 随机缺失(MAR)
  3. 非随机缺失(NMAR)

完全随机缺失:若某变量的缺失数据与其他任何观测和未观测变量都不相关,则数据为完全随机缺失。

随机缺失:若某变量上的缺失数据与其他观测变量相关,与他自己的未观测值不相关,则数据为随机缺失。

非随机缺失:若缺失数据不属于上两种则是非随机缺失。

识别缺失值

要想处理缺失值,首先我们就要去识别出来哪些数据是缺失值,R语言中,NA代表缺失值,NaN代表不可能的值,Inf和-Inf代表的是正无穷和负无穷。有对应的函数is.na()、is.nan()、is.infinite()可以分别用来识别缺失值,不可能值以及无穷值,返回的结果是TRUE/FALSE。

要想统计缺失值的个数,我们可以直接通过sum()函数来对TRUE/FALSE进行统计,其中TRUE的逻辑值是1,FALSE的逻辑值为0,同样不可能的值以及无穷值也可以用此方法进行判断。

探究缺失值

对于缺失值,我们只统计他的个数是不可取的,本节中给出探究缺失值的几种方法。

一、图表显示缺失值

我们可以用一个图标的形式去展示缺失值,在R语言中mice包中的md.pttern()函数提供了一个可以生成矩阵来显示缺失值的表格,示例如下:

library(lattice)
library(mice)
data(sleep,package="VIM")
md.pattern(sleep)

得到的图表结果以及图形结果如下:

二、图形展示缺失值

md.pattren()函数已经给我们清晰的列出了每一项的缺失值,但是图形时一种更能够清晰的表达缺失值的一种方法,VIM包中提供了大量的可视化函数,我们来学习一下其中的一些函数。

aggr()函数

library(VIM)
aggr(sleep,prop=FALSE,numbers=TRUE)

matrixplot()函数

matrixplot()

marginplot()函数

marginplot(sleep[c("Gest","Dream")],pch=c(20),col=c("darkgray","red","blue"))

缺失值的处理

一、删除

对于缺失值的处理首先我们先采用第一种最简单的方法——删除缺失值所在的行,R语言中提供了两种删除缺失值的函数,分别是complete.cases()函数和na.omit()函数。

对于删除的处理直接对数据进行使用即可,这里不做演示。

二、多重插补法

多重插补(MI)是一种基于重复模拟的处理缺失值的方法,在面对复杂的缺失值问题时,MI是常选用的方法,它将从一个包含缺失值的数据集中生成一组完整的数据集。本节中我们将使用R中的mice包对数据集进行插补。

mice包中多重插补法的工作流程如下:

基于mice包的分析通常要符合以下的过程:

library(mice)
imp <- mice(mydata,m)
fit <- with(imp, analysis)
pooled <- pool(fit)
summary(pooled)

过程说明:

  • mydata是一个包含缺失值的矩阵或数据框
  • imp是一个包含m个插补数据集的列表对象,同时还含有完成插补过程的信息。默认的m的值为5。
  • analysis是一个表达式对象,用来设定应用于m个插补数据集的统计分析方法。
  • fit是一个包含m个单独统计分析结果的列表对象。
  • pooled是一个包含这m个统计平均分析结果的列表对象。

三、简单插补法

简单插补法,即用某个值(如均值、中位数、众数)来替换变量中的缺失值。注意的一点是,这些替换是随机的,这也就意味着不会引入随机误差。

四、处理缺失值的其他方法

R语言支持其他一些缺失值的处理方法。

软件包 描述
Hmisc 包含多种函数,支持简单插补、多重插补和典型变量插补。
mvnmle 对多元正太分布数据中缺失值的最大似然估计。
cat 对线性模型中多元类别型变量的多重插补。
arrayInpute、Seqknn 处理微阵列缺失数据的实时函数。
longitudinalData 相关的函数列表,比如对时间序列缺失值进行插补的一系列函数。
kmi 处理生存分析缺失值的Kaplan-Meier多重插补。
mix 一般位置模型中混合类别型和连续型数据的多重插补。
pan 多元面板数据或聚类数据的多重插补。

数据分析基础——R语言(处理缺失值)相关推荐

  1. R语言-数据清洗-缺失值处理

    缺失值处理包括两个步骤,即缺失数据的识别和缺失值处理.在R语言总缺失值以NA表示,可以使用函数is.na()判断缺失值是否存在,函数complete.cases()可识别样本数据是否完整从而判断缺失情 ...

  2. R语言进行缺失值填充(Filling in missing values):使用R原生方法、data.table、dplyr等方案

    R语言进行缺失值填充(Filling in missing values):使用R原生方法.data.table.dplyr等方案 目录 R语言进行缺失值填充&#x

  3. 主成分分析,充分图,聚类,主成分回归——数据分析与R语言 Lecture 11

    主成分分析,充分图,聚类,主成分回归--数据分析与R语言 Lecture 11 主成分分析 例子:求相关矩阵特征值 例子:求主成分载荷 例子:画碎石图确定主成分 例子:主成分得分-相当于predict ...

  4. 聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测——数据分析与R语言 Lecture 10

    聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测--数据分析与R语言 Lecture 10 聚类 dist( )函数 各种类与类之间距离计算的方法 动态聚类:K-means方法 kme ...

  5. 因子分析,主成分分析,主因子分析,因子分析函数,极大似然法——数据分析与R语言 Lecture 12

    因子分析,主成分分析,主因子分析,因子分析函数,极大似然法--数据分析与R语言 Lecture 12 因子分析 因子分析的主要用途 与主成分分析的区别 因子分析使用了复杂的数学手段 统计意义 因子载荷 ...

  6. 数据分析之R语言基础学习一

    数据分析--R语言1 一.基础 二. 简单的数据处理 2.1 下载数据包 install.packages("nycflights13") #安装数据包,美国运输统计局13年从纽约 ...

  7. 如何利用R语言处理 缺失值 数据

    主要用到VIM和mice包 [plain]  view plain  copy install.packages(c("VIM","mice")) 1.处理缺失 ...

  8. [个人笔记]R语言:缺失值NA处理

    目录 前言 缺失值分布评估 看有多少行有缺失值: VIM:看一下缺失值的分布.比例情况 缺失值填补方法 Hmisc或e1071包:均值.中位数.随机填充 DMwR2包: 中心填充centralImpu ...

  9. R语言 处理缺失值数据

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 主要用到VIM和mice包 install.packages(c("VIM","mice")) 1.处 ...

  10. R语言数据缺失值处理(随机森林,多重插补)

    缺失值是指数据由于种种因素导致的数据不完整,可以分为机械原因和人为原因.对于缺失值我们通常采用以下几种方法来进行插补. 1.读取数据 通过read.csv函数导入文档,也可以用其他函数读入,如open ...

最新文章

  1. ASP.NET ViewState 初探
  2. 正则表达式简介及在C++11中的简单使用
  3. phpcms V9 相关阅读/相关文章
  4. 面试题SMKJ——no.1
  5. mac os touch命令_Mac系统忘记开机密码怎么办?
  6. CTS(4)---mtk cts FAIL处理方法
  7. WMITesting
  8. PHP文件系统-文件路径操作和权限
  9. Mac的「预览」程序如何旋转图片
  10. 找不到或是无法加载主类 不是原创
  11. 【高德地图】获取我的位置信息
  12. python爬取qq音乐
  13. 气体涡轮流量计和涡街流量计的区别
  14. 七牛云图片服务器搭建,对接
  15. opencv img.shape
  16. 秦时明月--动漫人物介绍
  17. Python 获取动漫番剧 -XXOO
  18. fs和php的区别,对比爆料评测美的wfs4037跟wfs5017哪个好?区别是?良心评测点评...
  19. 针对DDoS攻击异常流量攻击统计
  20. 推荐几款好用的UI框架 和 后台管理系统(开源免费)

热门文章

  1. MySQL简单技巧(三):教你轻松用information_schema表+python实现表结构同步(上)——理论篇
  2. 02-----音频通道数、采样频率、采样位数、采样个数(样本数)的概念及计算一帧音频的大小、每秒播放的音频字节大小、一帧的播放时长、音频重采样
  3. matlab保存f黑白图片_MATLAB的矩阵运算与重构
  4. ai面试的优缺点_AI面试需要注意哪些问题?
  5. Java数组、集合、散列表常见算法浅析
  6. mysql中日期相减_一篇文章,搞定Excel表格中日期计算,内含公式详解!
  7. impala hive随机抽样方法
  8. python在直方图上画折线图_在python中,在柱状图上绘制一个折线图
  9. 银行卡四要素API 方便好用
  10. linux 显示数字权限,Linux数字权限解释