zoukankan      html  css  js  c++  java
  • R语言处理缺失数据的高级方法

    一、处理缺失值的步骤

      一个完整的处理方法通常包含以下几个步骤:

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

      遗憾的是,往往只有识别缺失数据是清晰明确的步骤。明白数据为何缺失依赖于你对数据生成过程的理解,而决定如何处理缺失值则需要判断那种方法的结果最为可靠和精确。

      缺失数据的分类:统计学家通常将数据分为三类。尽管它们都采用概率术语进行描述,但思想都非常直观。

    1. 完全随机缺失(MCAR)。若某变量的缺失数据与其他任何观测变量或未观测变量都不相关,则数据为完全随机缺失。注意,如果每个有缺失值的变量都是MACR,那么可以将数据完整的实例看作对更大数据集的一个简单随机抽样。
    2. 随机缺失(MAR)。若某变量上的缺失数据与其他观测变量相关,与它自己的未观测值不相关,则数据为随机缺失。
    3. 非随机缺失(NMAR)。若缺失数据不属于MCAR和MAR,则数据为非随机缺失(NMAR)。

    二、识别缺失值

      R使用NA代表缺失值,NaN代表不可能值,符号Inf和-Inf分别代表正无穷和负无穷。函数is.na()、is.nan()、和is.infinite()可分别用来识别缺失值、不可能值和无穷值。每个返回结果都是TRUE或FALSE。

      由于逻辑值TRUE和FALSE分别等价于数值1和0,可用sum()和mean()函数来获取关于缺失数据的有用信息。

    > sum(is.na(sleep$Dream))
    [1] 12
    > mean(is.na(sleep$Dream))
    [1] 0.19
    > mean(!complete.cases(sleep))
    [1] 0.32

      结果表明变量Dream有12个缺失值,19%的实例在此变量上有缺失值。另外,数据集中32%的实例包含一个或多个缺失值。

      对于识别确实值需要牢记两点。第一,complete.cases()函数仅将NA和NaN识别为缺失值,无穷值(Inf和-Inf)被当作有效值。第二,必须使用与本文以上提到的类似函数来识别R数据对象中的缺失值。像myvar == NA 这样的逻辑比较无法实现。

    三、探索缺失值模式

      知道数据为何缺失,这将为后续深入研究提供许多启示。

    1. 列表显示缺失值
      mice包中的md.pattern()函数可生成一个以矩阵或数据框形式展示缺失值模式的表格。将函数应用到sleep数据集,可得到:
      > library(mice)
      > md.pattern(sleep)
         BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD   
      42       1        1    1   1      1     1    1    1     1    1  0
       2       1        1    1   1      1     1    0    1     1    1  1
       3       1        1    1   1      1     1    1    0     1    1  1
       9       1        1    1   1      1     1    1    1     0    0  2
       2       1        1    1   1      1     0    1    1     1    0  2
       1       1        1    1   1      1     1    0    0     1    1  2
       2       1        1    1   1      1     0    1    1     0    0  3
       1       1        1    1   1      1     1    0    1     0    0  3
               0        0    0   0      0     4    4    4    12   14 38

      0表示缺失值,1表示非缺失值。每行表示一个可能的缺失值模式,左边第一个数给出了该模式的数量,右边第一个数给出了该模式有几个缺失值,例如完整数据有42个,有2个观测的Span缺失,有1个观测同时缺失Span、Dream和NonD。最后一行给出了每个变量缺失值出现的次数,如Sleep变量共有4个缺失值,数据集一共有38个缺失值。

    2. 图形探索缺失数据
      library("VIM")
      aggr(sleep, prop=FALSE, numbers=TRUE)

  • 相关阅读:
    Leetcode Excel Sheet Column Number
    AlgorithmsI PA2: Randomized Queues and Deques Subset
    AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
    AlgorithmsI PA2: Randomized Queues and Deques Deque
    AlgorithmsI Programming Assignment 1: PercolationStats.java
    hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
    hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对
    hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到
    hdu多校第三场 1007 (hdu6609) Find the answer 线段树
    hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测
  • 原文地址:https://www.cnblogs.com/yangk/p/6375705.html
Copyright © 2011-2022 走看看