关于“缺失值”的讨论【探索性数据分析学习日记】

目录

一、缺失值的定义

二、缺失值的表示方式

三、缺失值的类型

1、完全随机缺失(MCAR)【可忽略】

2、随机缺失(MAR)

3、非随机缺失(MNAR)【不可忽略的】

四、对待缺失值的策略

五、缺失值的类型

1、单值缺失

2、任意缺失

3、单调缺失

六、探究缺失值

1、影子矩阵

七、利用工具来对缺失值进行分析

1、简单使用R代码:TAO数据集

2、使用图形工具


一、缺失值的定义

NA-> not available

二、缺失值的表示方式

R,S-Plus用 “NA”;SAS用“.”;Minitab用“*” ;matlab用“NaN”或“missing”,excel用“  ”表示;
或者自己编码,采用某个明显不合理的值,即特征值,比如,使用999来代替人类空缺的年龄值

三、缺失值的类型

1、完全随机缺失(MCAR)【可忽略】

完全随机的,是可以忽略的。

2、随机缺失(MAR)
3、非随机缺失(MNAR)【不可忽略的】

不可量化,不能简单处理。

四、对待缺失值的策略

• 直接删除包含缺失值的记录

• 简单插值策略,用估计值代替缺失值

• 多重插补策略,用多个估计值代替缺失值,分析多个结果产生或组合插补值

• 用最大期望(expectation maximaization, EM)算法

五、缺失值的类型

1、单值缺失
所有的缺失值都是同一属性。
2、任意缺失
缺失值属于不同的属性
3、单调缺失
对于时间序列类的数据,可能存在随着时间的缺失

六、探究缺失值

1、影子矩阵
用一个二值矩阵描述数据中的缺失值,1代表缺失值,0代表有记录的值,直观看出缺失值的分布
若包含多个分类变量,就不能用简单的二值分布描述
例如纵向研究,一个问题回答情况,可能存在三种结果,0代表已回答,1代表为回答,2代表在研究完成前死亡。

七、利用工具来对缺失值进行分析

1、简单使用R代码:TAO数据集
install.packages("norm")
setwd("C:/Users/86178/Desktop/EDA/实验/data")
library(norm) #加载norm包,分析具有缺失值的多变量正态数据集
d.tao <- read.csv("tao.csv", row.names=1) #读入数据集
d.tao.93 <- as.matrix(subset(
d.tao,year==1993,select=sea.surface.temp:vwind))
d.tao.97 <- as.matrix(subset(
d.tao,year==1997,select=sea.surface.temp:vwind))
d.tao.nm.93 <- prelim.norm(d.tao.93) # 初探带缺失值的数据矩阵
d.tao.nm.93$nmis #look at nmis 查看缺失值数量
d.tao.nm.97 <- prelim.norm(d.tao.97)
d.tao.nm.97$nmis #look at nmis



d.tao.nm.93
$x
               [,1]        [,2]        [,3]        [,4]         [,5]
  [1,]  0.054642998 -0.32840776 -1.92664146  0.89656278  0.567347873
…………………………………………
[200,]  0.077463475  0.01733360 -1.21024325 -1.25016210 -0.562571566
 [ reached getOption("max.print") -- omitted 168 rows ]

$n
[1] 368

$p
[1] 5

$r
    [,1] [,2] [,3] [,4] [,5]
274    1    1    1    1    1
  1    0    0    1    1    1
 90    1    1    0    1    1
  1    1    0    0    1    1
  2    0    0    0    1    1

$nmis
sea.surface.temp         air.temp         humidity            uwind            vwind 
               3                4               93                0                0 

$ro
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24
 [25]  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
…………………………

$mdpst
[1]   1 275 276 366 367

$nmdp
[1] 274   1  90   1   2

$npatt
[1] 5

$xbar
[1] 23.542110 23.365962 86.847636 -3.828804  2.496196

$sdv
[1] 0.8764259 0.8098504 2.9313391 1.8167209 1.5930340

$d
[1] 21

$psi
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    4    5    6
[2,]    2    7    8    9   10   11
[3,]    3    8   12   13   14   15
[4,]    4    9   13   16   17   18
[5,]    5   10   14   17   19   20
[6,]    6   11   15   18   20   21

$sj
[1] 5 5 5 5 5

$nmon
[1] 368 368 368 368 368

$last
[1] 5 5 5 5 5

$layer
[1] 1 1 1 1 1

$nlayer
[1] 1
使用的函数有norm包里面的prelim.norm()函数,接着取其中变量nmis即可
特别的,其中一个分量 r。
左边的一列代表该缺失类型的记录条数,右边的1和0代表缺失与否,可以看出93年有五种类型的数据记录,97年有两种类型的数据记录。
d.tao.nm.93$r;d.tao.nm.97$r
    [,1] [,2] [,3] [,4] [,5]
274    1    1    1    1    1
  1    0    0    1    1    1
 90    1    1    0    1    1
  1    1    0    0    1    1
  2    0    0    0    1    1
    [,1] [,2] [,3] [,4] [,5]
291    1    1    1    1    1
 77    1    0    1    1    1
2、使用图形工具

未完待续……

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值