R语言学习系列14缺失值及缺失模式Word格式文档下载.docx
- 文档编号:16634666
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:113.54KB
R语言学习系列14缺失值及缺失模式Word格式文档下载.docx
《R语言学习系列14缺失值及缺失模式Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《R语言学习系列14缺失值及缺失模式Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
(2)有些信息是被遗漏的
(3)有些对象的某个或某些属性是不可用的
(4)有些信息(被认为)是不重要的
(5)获取这些信息的代价太大
(6)系统实时性能要求较高
3.NA与NULL区别:
NA表示数据集中的该数据遗失、不存在。
在针对具有NA的数据集进行函数操作的时候,该NA不会被直接剔除。
如
x<
-c(1,2,3,NA,4)则mean(x)为NA
如果想去除NA的影响,需要显式告知mean方法,如
mean(x,na.rm=T)
另外,NA会“追随”其他数据的类型。
NULL表示未知的状态。
它不会在计算之中,如
-c(1,2,3,NULL,4)则mean(x)为2.5
NULL是不算数的,length(c(NULL))为0,而length(c(NA))为1。
可见NA“占着”位置,它存在着,而NULL没有“占着”位置,或者说,“不知道”有没有真正的数据
注:
NaN表示“非数,不可能的值”,其识别函数为is.NaN()
Inf和-Inf分别表示正无穷和负无穷,其识别函数为is.infinite()
4.处理缺失值的基本步骤
(1)识别缺失值
(2)判断缺失模式(完全随机缺失、随机缺失、完全非随机缺失)
(3)处理缺失值(删除、用合适的方法插补)
5.处理缺失值的方法及包
二、识别缺失值
在数据预处理中,首先要做的通常是判断是否存在缺失值。
判断是否为缺失值的函数是is.na(),可以应用于向量、数据框等多种对象,返回逻辑值。
另一个常用函数是VIM包中的complete.cases(),判断每个观测样本是否完整,TRUR表示完整。
library(mice)
#数据集nhanes2为mice包自带数据集,25个观测值,4个变量
is.na(nhanes2)#判断每个值是否为缺失值,只粘贴部分运行结果
agebmihypchl
1FALSETRUETRUETRUE
2FALSEFALSEFALSEFALSE
sum(is.na(nhanes2))#共有几个缺失值
[1]27
#计算每列的缺失百分比
Rate<
-function(x){sum(is.na(x))/length(x)*100}
apply(nhanes2,2,Rate)
agebmihypchl
0363240
complete.cases(nhanes2)#判断每个样本是否完整
[1]FALSETRUEFALSEFALSETRUEFALSETRUE
[8]TRUETRUEFALSEFALSEFALSETRUETRUE
[15]FALSEFALSETRUETRUETRUEFALSEFALSE
[22]TRUETRUEFALSETRUE
sum(!
complete.cases(nhanes2))#不完整样本的个数
[1]12
三、缺失模式及处理办法
1.缺失模式
缺失模式是描述缺失值与观测变量间可能的关系。
从缺失的分布来讲,缺失值可以分为:
完全随机缺失(MCAR):
某变量缺失值发生的可能性与其他变量无关也与该变量自身无关。
换句话说,某变量缺失值的出现完全是个随机事件。
可以将存在MCAR变量的数据看作是假定完整数据的一个随机样本(Rubin1976);
MCAR数据缺失的理想状态,但是可靠的缺失最大阈值是数据集总数的5%
随机缺失(MAR):
某变量出现缺失值的可能性与模型中某些观测变量有关而与该变量自身无关,例如,在一次测试中,如果IQ达不到最低要求的100分,那么将不能参加随后的人格测验。
在人格测验上因为IQ低于100分而产生的缺失值;
非随机缺失(MNAR)
某变量出现缺失值的可能性只与自身相关,例如,公司新录用了20名员工,由于6名员工表现较差在试用期内辞退,试用期结束后的表现评定中,辞退的6名员工的表现分。
2.识别缺失数据的数目、分布和模式的目的
(1)分析生成缺失数据的潜在机制;
(2)评价缺失数据对回答实质性问题的影响:
①缺失数据的比例有多大?
②缺失数据是否集中在少数几个变量上,抑或广泛存在?
③缺失是随机产生的吗?
④缺失数据间的相关性或与可观测数据间的相关性,是否可以表明产生缺失值的机制呢?
3.处理办法
若缺失数据集中在几个相对不太重要的变量上,则可以删除这些变量,然后再进行正常的数据分析;
若有一小部分数据随机分布在整个数据集中(MCAR),则可以分析数据完整的实例,这样仍可得到可靠有效的结果;
若以假定数据是MCAR或MAR,则可以应用多重插补法来获得有效的结论。
若数据是MNAR,则是一个比较严重的问题。
在这种情况下,你可能需要去检查数据的收集过程并且试着理解数据为什么会丢失。
例如,调查问卷中大多数人不回答某个问题,原因何在?
四、判断缺失模式
1.列表形式展示缺失数据
mice包中的md.pattern()函数可以生成一个以矩阵或数据框形式展示缺失值模式。
library(mice)
md.pattern(nhanes2)#25个观测值,4个变量
agehypbmichl
1311110
111011
311101
110012
710003
0891027
说明:
1表示不缺失,0表示缺失;
第1列为该行模式的数目;
最后一行/列为该行/列缺失总数;
结果第一行表明4个变量都不缺失的样本共13个,第二行表明只变量bmi缺失的样本共1个,…最后一行表明变量hyp、bmi、chl同时缺失的样本共7个。
2.图形探索缺失数据
VIM包提供了大量能可视化数据集中缺失值模式的函数:
(1)函数aggr()
可绘制每个变量的缺失值数,以及每个变量组合的缺失值数。
其基本格式为:
aggr(x,col=c("
..."
...),prop=TURE,numbers=TRUE)
其中,x为数据集;
col可选择部分变量;
默认prop=TURE显示缺失比例,若取FALSE则显示缺失数目;
numbers=TRUE设定显示组合缺失的信息。
library(VIM)#用VIM自带数据集sleep,62个观测值,10个变量
aggr(sleep,prop=FALSE,numbers=TRUE)#第1个图,显示数目
aggr(sleep,prop=TRUE,numbers=TRUE)#第2个图,显示比例
说明:
变量NonD缺失的样本有14个,…,变量NonD、Dream同时缺失的样本有9个,没有缺失值的样本共42个。
同上,只是从“缺失数目”变成了“缺失比例”。
(2)函数matrixplot()
可生成展示每个样本数据的图形,数值型数据被重新转换到[0,1]区间,并用灰度来表示大小:
浅色表示值小,深色表示值大。
默认缺失值为红色。
基本格式为:
matrixplot(x,sortby="
)
其中,x为数值矩阵或数据框,sortby指定排序变量,来观察该变量值的大小是否影响各缺失值。
matrixplot(sleep,sortby="
BodyWgt"
缺失值较多地集中在变量NonD、Dream,该图已按变量BodyWgt(体重)排序,可以看出无缺失值的睡眠变量NonD、Dream、Sleep对应着较小的体重。
(3)函数marginplot()
可生成两个变量数据的边缘散点图,不同于一般散点图,它会在图形边缘展示两个变量的缺失值或填补值的信息。
marginplot(x,pch=c(1,16),col=c("
skyblue"
"
red"
...),...)
其中,x为两个变量的数据矩阵或数据框;
pch设置散点符号;
col设置散点图颜色。
marginplot(sleep[c("
Gest"
Dream"
)])
针对变量Gest(妊娠期)、Dream(做梦时长)绘制边缘散点图;
左边边缘的红色箱线图是不包含Gest值的变量Dream的分布,蓝色箱线图是包含Gest值的变量Dream的分布;
四个红色的点代表着缺失了Gest值的样本的Dream值;
底部边缘是两个变量反过来的信息。
可以看到,妊娠期和做梦时长呈负相关,缺失妊娠期数据的动物的做梦时长一般更长。
两个变量均有缺失值的样本个数在左下角输出。
3.用相关性探索缺失数据
用指示变量代替数据集中的数据(1表示缺失,0表示不缺失),这样生成的矩阵称为影子矩阵。
求这些指示变量间和它们与初始(可观测)变量间的相关性,有助于观察哪些变量常一起缺失,以及分析变量“缺失”与其他变量间的关系。
-as.data.frame(abs(is.na(sleep)))
head(sleep,n=5)
BodyWgtBrainWgtNonDDreamSleepSpanGestPredExpDanger
16654.0005712.0NANA3.338.6645353
21.0006.66.32.08.34.542313
33.38544.5NANA12.514.060111
40.9205.7NANA16.5NA25523
52547.0004603.02.11.83.969.0624354
head(x,n=5)
10011000000
20000000000
30011000000
40011010000
50000000000
library(stats)#使用函数sd()
y<
-x[which(apply(x,MARGIN=2,sd)>
0)]
cor(y)
NonDDreamSleepSpanGest
NonD1.000000000.907114740.486264540.01519577-0.14182716
Dream0.907114741.000000000.203701380.03752394-0.12865350
Sleep0.486264540.203701381.00000000-0.06896552-0.06896552
Span0.015195770.03752394-0.068965521.000000000.19827586
Gest-0.14182716-0.12865350-0.068965520.198275861.00000000
cor(sleep,y,use="
plete.obs"
BodyWgt0.226826140.222591080.001684992-0.05831706-0.05396818
BrainWgt0.179459230.163211050.007859438-0.07921370-0.07332961
NonDNANANA-0.04314514-0.04553485
Dream-0.18895206NA-0.1889520590.116992470.22774685
Sleep-0.08023157-0.08023157NA0.096380440.03976464
Span0.083363610.059813770.005238852NA-0.06527277
Gest0.202392010.051402320.159701523-0.17495305NA
Pred0.04758438-0.068343780.2024627110.02313860-0.20101655
Exp0.245468360.127407680.260772984-0.19291879-0.19291879
Danger0.06528387-0.067247550.208883617-0.06666498-0.20443928
Warningmessage:
Incor(sleep,y,use="
):
标准差为零
主要参考文献:
[1]《R语言:
缺失值处理》,银河统计学,csdn博客:
[2]《缺失值的处理》,铁汉1990的博客,新浪博客:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 系列 14 缺失 模式