数据分析基础|R语言(处理缺失值)

简介: 用R语言处理缺失值

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

处理缺失值的一般步骤

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

    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)

      image.gif

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

      image.png

      image.png

      二、图形展示缺失值

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

      aggr()函数

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

      image.gif

      image.png

      matrixplot()函数

      matrixplot()

      image.gifimage.png


      marginplot()函数

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

      image.gif

      image.png

      缺失值的处理

      一、删除

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

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

      二、多重插补法

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

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

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

      image.gif

      过程说明:

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

        三、简单插补法

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

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

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

        软件包 描述
        Hmisc 包含多种函数,支持简单插补、多重插补和典型变量插补。
        mvnmle 对多元正太分布数据中缺失值的最大似然估计。
        cat 对线性模型中多元类别型变量的多重插补。
        arrayInpute、Seqknn 处理微阵列缺失数据的实时函数。
        longitudinalData 相关的函数列表,比如对时间序列缺失值进行插补的一系列函数。
        kmi 处理生存分析缺失值的Kaplan-Meier多重插补。
        mix 一般位置模型中混合类别型和连续型数据的多重插补。
        pan 多元面板数据或聚类数据的多重插补。
        相关文章
        |
        2月前
        |
        机器学习/深度学习 并行计算 数据挖掘
        R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
        【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
        56 2
        |
        2月前
        |
        数据采集 数据可视化 数据挖掘
        R语言与Python:比较两种数据分析工具
        R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
        44 2
        |
        7月前
        |
        监控 安全 数据可视化
        R语言在员工上网行为监控中的数据分析
        本文讲述了如何使用R语言分析员工上网行为以提升企业网络安全。通过收集网络流量和访问记录数据,利用R进行读取、分析和可视化,例如查看访问时长分布和热门网站。此外,文中还介绍了一个自动将监控数据提交到网站的R脚本,通过定时任务实现数据的持续更新和管理,及时发现并应对安全风险,增强网络安全性。
        308 3
        |
        3月前
        |
        数据采集 算法 搜索推荐
        R语言营销数据分析:使用R进行客户分群的实践探索
        【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。
        |
        4月前
        |
        数据采集 机器学习/深度学习 数据挖掘
        R语言数据清洗:高效处理缺失值与重复数据的策略
        【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
        |
        4月前
        |
        机器学习/深度学习 数据可视化 数据挖掘
        为啥我敢说Python是数据分析界的扛把子语言?
        为啥我敢说Python是数据分析界的扛把子语言?
        |
        7月前
        |
        机器学习/深度学习 数据挖掘 计算机视觉
        R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
        R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
        |
        7月前
        |
        数据可视化
        R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化
        R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化
        |
        7月前
        |
        机器学习/深度学习 数据采集 数据可视化
        R语言电影数据分析:随机森林探索电影受欢迎程度因素、参数调优可视化
        R语言电影数据分析:随机森林探索电影受欢迎程度因素、参数调优可视化
        |
        7月前
        R语言中缺失值的处理
        R语言中缺失值的处理
        40 0

        热门文章

        最新文章