• 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,这个是做箱型图,按照上下边界之外为异常值进行判定的

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

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

       测试高等数学

     

      成功画出箱线图!!

       测试 高级语言程序设计 

       成功画出箱线图!!

    (如需转载学习,请标明出处)
  • 相关阅读:
    jenkins:通过execute shell启动的进程会被杀死的问题
    Cacti:添加监控磁盘IO
    Linux:添加永久路由
    Linux:下载方式安装lrzsz
    Linux:Vmware安装linux虚拟机,桥接方式配置静态IP后重启网卡,提示:Error,some other host already uses address 10.252.252.21...
    Linux:安装rstatd,报错
    Linux:安装图形界面
    leetcode Median of Two Sorted Arrays
    算法导论 寻找第i小元素 9.2
    算法导论9.1-1
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9649250.html
Copyright © 2020-2023  润新知