R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)

 

 

  我们发现这张Gary.csv表格存在学生成绩不完全的(五十三名学生,三名学生存在成绩不完整、共四个不完整成绩)

    79号大学语文、高等数学

    96号中国近代史纲要

    65号大学体育

 

  

 

   

 

(1)NA表示数据集中的该数据遗失、不存在。在针对具有NA的数据集进行函数操作的时候,该NA不会被直接剔除。如x<-c(1,2,3,NA,4),取mean(x),则结果为NA,如果想去除NA的影响,需要显式告知mean方法,如 mean(x,na.rm=T);NA是没有自己的mode的,在vector中,它会“追随”其他数据的类型,比如刚刚的x,mode(x)为numeric,mode(x[4])亦然。

(2) NULL表示未知的状态。它不会在计算之中,如x<-c(1,2,3,NULL,4),取mean(x),结果为2.5。NULL是不算数的,length(c(NULL))为0,而length(c(NA))为1。可见NA“占着”位置,它存在着,而NULL没有“占着”位置,或者说,“不知道”有没有真正的数据。

    在R语言中缺失值通常以NA表示,判断是否缺失值的函数是is.na。
    另一个常用到的函数是complete.cases,它对数据框进行分析,判断某一观测样本是否完整。
NA与NULL的区别

 

setwd('D:\\data')                                #设置工作目录
list.files()                                    #列出工作目录下的文件
dat=read.csv(file="Gary.csv",header=TRUE)        #打开Gary.csv文件


is.na(dat)                                       #对数据进行判空,空值返回TRUE
complete.cases(dat)                              #对数据行进行判空,存在空值的行返回TRUE

sum(complete.cases(dat))                         #统计未缺失数
sum(!complete.cases(dat))                        #统计缺失数
mean(!complete.cases(dat))                       #统计缺失比例
dat[!complete.cases(dat),]                       #返回存在空值行数据

library(mice)                                   
md.pattern(dat)                                  #针对复杂的数据集值进行处理


#异常值检测箱线图
sp<-boxplot(dat$"大学语文",boxwex=0.7,norch=FALSE)
title("大学语文")
xi=1.1
sd.s=sd(dat[complete.cases(dat),]$"大学语文")   #标准差
mn.s=mean(dat[complete.cases(dat),]$"大学语文")  #均值
points(xi,mn.s,col="red",pch=18)
arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1)

text(rep(c(1.05,1.05,0.95,0.95),length=length(sp$out)),labels=sp$out[order(sp$out)],
     sp$out[order(sp$out)]+rep(c(150,-150,150,-150),length=length(sp$out)),col="red")

plot(saledata[,1],saledata[,2])
lines(saledata[,2])
Gary.R

 

 

对成绩数据进行缺失值分析,并表述分析过程

 

 

处理方法

  对数据进行判空,空值返回TRUE

    is.na(dat) 

  对数据行进行判空,存在空值的行返回TRUE
    complete.cases(dat) 

 

  统计未缺失数

    sum(complete.cases(dat)) 

  统计缺失数
    sum(!complete.cases(dat)) 

  统计缺失比例
    mean(!complete.cases(dat)) 

  返回存在空值行数据
    dat[!complete.cases(dat),] 

 

  依赖包mice

  md.pattern(dat) #针对复杂的数据集值进行处理

 

 

 

   md.pattern()

    依赖包mice

       生成一个以矩阵或数据框形式展示缺失值模式的表格

 

 

 

  0表示变量的列中没有缺失,1则表示有缺失值

   第一行第一个数据:完整成绩人数

         第二个数据至倒数第二个数据:列出全部学生考试科目

              最后一个数据:缺少考试科目数量(争对复杂数据,这里象对数据简单)

   第二行至倒数第二行:缺少考试成绩学生信息

      第二行表示存在一个学生缺少 中国近代史纲要成绩 缺少成绩科目数量为1

         第三行表示存在一个学生缺少 大学语文和高等数学 缺少成绩科目数量为2

      第四行表示存在一个学生缺少 大学体育 缺少成绩科目数量为1

  最后一行:给出了每个科目的缺失值数目(中国近代史纲要成绩、大学语文和高等数学、大学体育)

      最后一个数据:缺少科目学生人数(3人)

 

 

对成绩数据进行异常值分析,并表述分析过程

 

  箱线图  传送门

  箱线图(Boxplot)也称箱须图(Box-whisker Plot),是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。  

 

  

 

 

 

 

#异常值检测箱线图
sp<-boxplot(dat$"大学语文",boxwex=0.7,norch=FALSE)
title("大学语文")
xi=1.1
sd.s=sd(dat[complete.cases(dat),]$"大学语文")   #标准差
mn.s=mean(dat[complete.cases(dat),]$"大学语文")  #均值
points(xi,mn.s,col="red",pch=18)
arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1)

text(rep(c(1.05,1.05,0.95,0.95),length=length(sp$out)),labels=sp$out[order(sp$out)],
     sp$out[order(sp$out)]+rep(c(150,-150,150,-150),length=length(sp$out)),col="red")

plot(saledata[,1],saledata[,2])
lines(saledata[,2])

 

 

   提示错误:Error in text.default(rep(c(1.05, 1.05, 0.95, 0.95), length = length(sp$out)),  : 'labels'长度不能设成零

 

  测试科目 大学语文 时尽然无耻的报错了 Σ(= = !)...

 

  sp$out:结果中会自带异常值,就是下面代码中的sp$out,这个是做箱型图,按照上下边界之外为异常值进行判定的

 
  异常值可能对统计结果(均值)参数不对称的影响,因此导致误导性解释

  对数据进行规范化目的:规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入,删除,和跟新

 

   测试高等数学

 

 

  成功画出箱线图!!

 

   测试 高级语言程序设计 

 

   成功画出箱线图!!

 

posted @ 2018-09-14 22:15  Cynical丶Gary  阅读(4317)  评论(0编辑  收藏  举报