【统计模型】缺失数据处理方法

目录

一、缺失数据定义

二、缺失数据原因

三、缺失数据处理步骤

四、数据缺失机制

1.完全随机缺失(MCAR)

2.随机缺失(MAR)

 3.非随机、不可忽略缺失(NMAR)

五、缺失数据处理方法

1.直接删除

2.缺失值插补

3.单一插补

(1)介绍

(2)均值插补

(3)随机插补法

(4)回归插补法

(5)随机回归插补

4.多重插补方法(R语言mice包可做)

(1)介绍

​(2)优点

六、缺失数据处理实例——R语言VIM包中的sleep数据集


一、缺失数据定义

        在实际工作中,常会因为某些原因导致数据缺失,只能观测到一部分数据,统计学中一般称为缺失数据。

二、缺失数据原因

  • 调查对象忘记回答问题
  • 调查对象拒绝回答敏感问题
  • 调查对象错过约定时间或过早退出调查
  • 获取这些信息的代价太大
  • 记录设备出现问题或数据误记

三、缺失数据处理步骤

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

四、数据缺失机制

1.完全随机缺失(MCAR)

        数据的缺失完全是随机的,数据缺失与否与其它任何完全观测或含缺失数据变量都无关,此时可以将数据完整的样本看作是所有数据集的一个简单随机样本。

P(Y Missing|X,Y)=P(Y Missing)

2.随机缺失(MAR)

        数据的缺失不是完全随机的,某变量数据缺失与否与其他完全观测变量相关,但与它自己的未观测值无关。

P(Y Missing|X,Y)=P(Y Missing|X)

 3.非随机、不可忽略缺失(NMAR)

        数据不完全变量中数据缺失的概率依赖于数据不全变量的数值本身,这种缺失机制是不可忽略缺失。

【注】第三种缺失机制不易处理和建模,因而通常假设缺失数据前两种缺失机制。

五、缺失数据处理方法

1.直接删除

        也就是将存在缺失数据的对象(元组、记录)删除,从而得到一个完整的数据信息表。

        数据缺失机制为完全随机缺失时可用此方法。

2.缺失值插补

        将缺失值作为一种特殊的属性值来处理,利用已有的数据对缺失值进行插补,以得到完整数据集加以分析。

        数据缺失机制为完全随机缺失或随机缺失时可用此方法。

        缺失值插补方法:可以用回归插补、均值插补、多重插补等方法得到缺失值的预测值,本质上是用现有数据的信息来推测缺失值。

3.单一插补

(1)介绍

        单一插补是以估算为基础的方法,利用已有数据对缺失数据进行推算,在缺失数据被替代后,对新生成的数据集进行相应的统计分析。

  • 优点:单一插补法改变了传统方法将缺失值忽略不考虑的习惯,使得各种统计分析均可以在插补后的完整数据集上展开
  • 缺点:无论采用何种方法,都存在没有考虑缺失数据的不确定性,从而导致参数估计量方差被低估的问题。尽管由于随机回归插补引入了随机误差项,能够缓解这一问题,但是随机误差项分布的确定是比较困难的

(2)均值插补

        将数据表中的变量分为连续型和非连续型来分别进行处理。

  • 连续型:根据该变量在其他所有对象取值的平均值来插补该缺失的变量值
  • 非连续型:根据统计学中的众数原理,用该变量在其他所有对象的取值次数最多的值(即出现频率最高的值)来插补该缺失的变量值

(3)随机插补法

        从有回答单位中随机抽取插补值,对缺失数据进行插补的方法。

(4)回归插补法

        该方法主要是通过建立含缺失值目标变量与数据完全的辅助变量之间的回归模型来实现缺失数据的插补。

(5)随机回归插补

        该方法就是在回归插补值的基础上再加上残差项,以反映缺失数据的不确定性。

        残差项的分布可以包括正态分布,也可以是其它的非正态分布。

4.多重插补方法(R语言mice包可做)

(1)介绍

        多重插补建立在贝叶斯理论基础之上,基于Gibbs算法来实现对缺失数据的处理。

        多重插补法分为三个步骤:

  • 插补步:基于已有数据,为含缺失数据变量建立插补模型,为每个缺失值产生多组插补值,得到多组完整数据集
  • 分析步:基于各组完整数据集进行参数估计
  • 合并步:将多组参数估计结果加以汇总

(2)优点

        多重插补的出现,弥补了单一插补法的缺陷。

  • 第一,多重插补过程产生多个中间插补值,可以利用插补值之间的变异反应无回答的不确定性,包括无回答原因已知情况下抽样的变异性和无回答原因的不确定造成的变异性
  • 第二,多重插补通过模拟缺失数据的分布,较好地保持变量之间地关系
  • 第三,多重插补能给出衡量估计结果不确定性地大量信息,单一插补给出的估计结果则较为简单

六、缺失数据处理实例——R语言VIM包中的sleep数据集

#install.packages("VIM")
#install.packages("mice")
library(VIM)
library(mice)
View(sleep)
sleep[complete.cases(sleep),]#得到无缺失值样本
sum(is.na(sleep$Dream))#Dream变量缺失样本个数
mean(is.na(sleep$Dream))#Dream变量缺失样本概率
fit=lm(Dream~Span+Gest,data=na.omit(sleep))#采用完整样本建立Dream和其他变量的回归模型
summary(fit)

#查看缺失模式,有2^10种可能
md.pattern(sleep)

#多重插补
imp=mice(sleep)#默认生成五组数据集,可以主动调整
fit=with(imp,lm(Dream~Span+Gest))
pooled=pool(fit)#合并数据结果
summary(pooled)#观看最终分析结果
imp
imp$imp$Dream#查看Dream的五次插补结果
dataset2=complete(imp,action=2)#观看第二组得到的完整数据集
dataset2

#模拟,比较多重插补和直接删除的优劣
#人为生成一个完整数据集,得到数据估计结果(真实的),随机生成一些缺失值
#然后用缺失值缺失方法处理,进行估计,和真实值进行比较,得到优劣

个人见解,该请各位读者批评指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28601.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始理解Linux中断架构(2)-朴素的中断管理设计理念

既然是从零开始,我们先从最为简单的中断逻辑处理架构开始,这个逻辑结构跟CPU架构没有关系,纯逻辑上的。纯逻辑是跨越系统和应用的,不管对于应用程序员还是系统程序员,逻辑推导是基本的工具,设计原型是基本的出发点。 中断发起的时候,PC指针被设置为中断向量表中相对应的…

SpringBoot 中使用 JWT 案例分享详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)

前言 若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。 这个开源项目资料比较全,笔者仅在此记录下搭建过程 一、准备 1.操…

这些方法可以手写扫描识别

小伙伴们知道有一项技术是可以将我们手写的东西识别出来吗?这一项创新的技术就是手写识别功能,它能够将手写内容快速转换为数字或文本格式,并提高信息处理和管理的效率。而且相比传统的手工记录方式,手写识别功能具有较高的准确性…

多行文本溢出显示省略号

1.css 实现单行省略 .ellipsis{white-space: nowrap;text-overflow: ellipsis; overflow: hidden;}2.在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面,直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit-line-clamp 。 -w…

openEuler 开源汇智赢未来|2023开放原子全球开源峰会OpenAtom openEuler 论坛成功召开

6 月 12 日,2023 开放原子全球开源峰会 OpenAtom openEuler 分论坛在北京成功召开。分论坛以“openEuler 汇众智,奔涌向前赢未来”为主题,展示了 openEuler 社区的最新成果,阐述了 openEuler 开源开放的发展模式,介绍了…

在字节跳动和阿里划水4年,过于真实了...

先简单交代一下吧,涛哥是某不知名211的本硕,18年毕业加入阿里,之后跳槽到了头条,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间他完成了一次晋升,换了一家公司&am…

移动设备管理:自带设备办公(BYOD)管理

什么是自带设备办公(BYOD) 自带设备办公(BYOD)指一些企业允许员工携带自己的笔记本电脑、平板电脑、智能手机等移动终端设备到办公场所,并可以用这些设备获取公司内部信息、使用企业特许应用的一种政策,企…

【备战秋招】每日一题:4月29日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

继承—JavaSE

文章目录 1.基础知识1.1继承的概念1.2语法 2子类对从父类继承下来的成员的访问2.1对成员变量的访问2.2对成员方法的访问 3.super关键字3.1访问父类的成员变量(super.变量)3.2访问父类的成员方法(super.方法)3.3调用父类的构造方法…

估计一个点云的表面法线

包含相关头文件 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/features/normal_3d.h> #include <pcl/visualization/pcl_visualizer.h> 定义了两个类型别名 PointT 和 PointNT&#xff0c;用于表示输入点云和输出点云中各…

第14届蓝桥杯国赛真题剖析-2023年5月28日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第149讲。 第14届蓝桥杯Scratch国赛真题&#xff0c;这是2023年5月28日上午举办的全国总决赛&#xff0c;比赛仍然采取…

进程管道:popen函数实例

基础知识 可能最简单的在两个程序之间传递数据的方法就是使用popen和pclose函数了。它们的原型如下所示&#xff1a; #include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream); 1&#xff0e;popen函数 popen函数允许一个程…

FTL没有映射,跟发工资没有钱有什么区别

大家好&#xff0c;我是五月。 前言 FTL&#xff08;Flash Translation Layer&#xff09;&#xff0c;即闪存转换层&#xff0c;是各种存储设备的核心算法&#xff0c;作用是将Host传下来的逻辑地址转换成物理地址&#xff0c;也就是映射。 地址映射是FTL最原始最基本的功能…

苹果手机之间如何互传照片?批量传输操作指南

很多时候&#xff0c;我们用手机拍摄了好看的照片或者收藏了一些有趣的图片&#xff0c;想要分享给朋友&#xff0c;却不知道苹果手机之间如何互传照片&#xff1f;在分享大量照片的时候不清楚如何批量操作&#xff1f;别担心&#xff0c;下面小编就来分享一下苹果手机照片传输…

海思3559万能平台搭建:SPI输出h264码流

前言 面对各种各样的客户需求&#xff0c;spi接口也是一种传码流的形式&#xff0c;spi同步422可以保证抗干扰能力强的同时传输距离也很长&#xff0c;本文会介绍海思平台spi作为主机的发送功能以及发送码流的处理方式 1. 管脚复用&#xff1a; 首先需要配置的肯定是管脚复用&…

Linux进程间通信【共享内存】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是共享内存&#xff1f;2、共享内存的相关知识2.1、共享内存的数据结构…

load_dataset加载huggingface数据集失败

1. 一般的加载方式 from datasets import load_dataset dataset_dict load_dataset(cmrc2018)这种加载方式可能会显示因为连接问题导致失败&#xff0c;此时可以在hugging face里面找到对应的页面下载下来 然后改一下代码&#xff1a; from datasets import load_dataset d…

springmvc整合thymeleaf

概述 Thymeleaf提供了一组Spring集成&#xff0c;使您可以将其用作Spring MVC应用程序中JSP的全功能替代品。 这些集成将使您能够&#xff1a; Controller像使用JSP一样&#xff0c;将Spring MVC 对象中的映射方法转发到Thymeleaf管理的模板。在模板中使用Spring表达式语言&…

罗马不是一天建成的,那为什么建了那么多罗马?

这一个罗马&#xff0c;那一个罗马&#xff0c;东一个罗马&#xff0c;西一个罗马&#xff0c;世界历史的大半部分都在跟罗马打交道。更要命的是四大文明古国还没有古代罗马。 存在感这么强&#xff0c;还不是四大文明古国&#xff0c;名字还难记&#xff0c;公元前居然就有共…