ggmice | 用这只可爱的小老鼠来填补你的缺失值吧!~
创始人
2024-04-06 14:59:47
0

1写在前面

我们在处理数据的时候常常会遇到存在缺失值(NA)的情况,如何处理就仁者见仁智者见智了。🤒
简单粗暴的方法可能就是行删除法(listwise)或者个案删除法(case-wise)了,这种方法在缺失值比较少的情况下比较适用,但在NA较多的情况下可能就会丢失过多信息导致无法继续分析。😘
本期我们介绍一下mice包ggmice包这两只可爱的小老鼠,全名Multivariate Imputation by Chained Equations, mice,即链式方程多重填补。📍

一张图总结基本原理,嘿嘿。👇

alt

2用到的包

rm(list = ls())
library(tidyverse)
library(mice)
library(ggmice)

3示例数据

这里我们使用一下示例数据airquality,再在其中添加一些缺失值

dat <- airquality
dat[4:9,3] <- rep(NA,6)
dat[1:4,4] <- NA
alt

4数据概览

4.1 缺失值查看

这里面我们一共有6个变量,其中4个存在缺失值。🫠

summary(dat)
alt

4.2 缺失值可视化

Note! ggmice提供了一种NA值的可视化方法,一目了然,nice! 🤒

plot_pattern(dat,
square = F,
rotate = F)
alt

4.3 influx-outflux plot

这里和大家简单介绍一下这个influx-outflux plot,总的来说评估了缺失数据其他变量联系程度。😂
一般来说,在建模时,influx以及outflux越大越好。😗

plot_flux(dat,
label = F,
caption = F)
alt

5可视化一下吧

5.1 连续变量

这里我们对连续变量缺失值进行一下可视化,可以看到红色的为缺失值。😘

ggmice(dat, aes(Ozone, Solar.R))+
geom_point()
alt

5.2 分类变量

接着我们对分类变量缺失值进行一下可视化,红色的为缺失值。😃

ggmice(dat, aes(Month, Solar.R)) +
geom_point()
alt

5.3 分面展示

ggmice(dat, aes(Month, Solar.R)) +
geom_point() +
facet_wrap(~ Month == 5,
# labeller = label_both
)
alt

6mice包填补缺失值

6.1 填补缺失值

在这里我们生成几个填补缺失值后的数据,m默认是5,为了减小计算量,这里我设置成3。🤗
Note! 可选method包括:👇

pmm,
logreg,
polyreg,
polr

imp <- mice(dat, m = 3, method = "pmm")
alt

6.2 连续变量缺失值填补后可视化

我们再看一下填补缺失值后的散点图吧,红色的为缺失值填补后。😚

ggmice(imp, aes(Ozone, Solar.R))+
geom_point()
alt

6.3 分类变量缺失值填补后可视化

ggmice(imp, aes(Month, Solar.R)) +
geom_point()
alt

6.4 分面展示

ggmice(dat, aes(Month, Solar.R)) +
geom_point() +
facet_wrap(~ Month == 5,
# labeller = label_both
)
alt

7填补数据集的可视化

7.1 dotplot

我们之前设置了m = 3,这里我们看一下3个数据集的NA填补情况。🥰

ggmice(imp, aes(x = .imp, y = Temp)) +
geom_jitter(height = 0, width = 0.25) +
labs(x = "Imputation number")
alt

7.2 boxplot

ggmice(imp, aes(x = .imp, y = Temp)) + 
geom_jitter(height = 0, width = 0.25) +
geom_boxplot(width = 0.5, size = 1, alpha = 0.75, outlier.shape = NA) +
labs(x = "Imputation number")
alt

8算法收敛

看来default = 5是有原因的,哈哈哈哈哈哈!🤣

plot_trace(imp,
# "Temp"
)
alt

甜筒
最后祝大家早日不卷!~

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

📍 往期精彩

📍 🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!
📍 🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?
📍 🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)
📍 🤩 scRNA-seq | 吐血整理的单细胞入门教程
📍 🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~
📍 🤩 RColorBrewer | 再多的配色也能轻松搞定!~
📍 🧐 rms | 批量完成你的线性回归
📍 🤩 CMplot | 完美复刻Nature上的曼哈顿图
📍 🤠 Network | 高颜值动态网络可视化工具
📍 🤗 boxjitter | 完美复刻Nature上的高颜值统计图
📍 🤫 linkET | 完美解决ggcor安装失败方案(附教程)
📍 ......

本文由 mdnice 多平台发布

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...