前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤧 ggmice | 用这只可爱的小老鼠来填补你的缺失值吧!~

🤧 ggmice | 用这只可爱的小老鼠来填补你的缺失值吧!~

作者头像
生信漫卷
发布2023-02-24 14:07:47
3820
发布2023-02-24 14:07:47
举报
文章被收录于专栏:R语言及实用科研软件

1写在前面

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

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

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(tidyverse)
library(mice) 
library(ggmice)

3示例数据

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

代码语言:javascript
复制
dat <- airquality
dat[4:9,3] <- rep(NA,6)
dat[1:4,4] <- NA

4数据概览

4.1 缺失值查看

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

代码语言:javascript
复制
summary(dat)

4.2 缺失值可视化

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

代码语言:javascript
复制
plot_pattern(dat,
             square = F,
             rotate = F)

4.3 influx-outflux plot

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

代码语言:javascript
复制
plot_flux(dat,
          label = F,
          caption = F)

5可视化一下吧

5.1 连续变量

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

代码语言:javascript
复制
ggmice(dat, aes(Ozone, Solar.R))+
  geom_point()

5.2 分类变量

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

代码语言:javascript
复制
ggmice(dat, aes(Month, Solar.R)) +
  geom_point()

5.3 分面展示

代码语言:javascript
复制
ggmice(dat, aes(Month, Solar.R)) +
  geom_point() +
  facet_wrap(~ Month == 5,
             # labeller = label_both
             )

6mice包填补缺失值

6.1 填补缺失值

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

pmm, ✅ logreg, ✅ polyreg, ✅ polr

代码语言:javascript
复制
imp <- mice(dat, m = 3, method = "pmm")

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

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

代码语言:javascript
复制
ggmice(imp, aes(Ozone, Solar.R))+
  geom_point()

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

代码语言:javascript
复制
ggmice(imp, aes(Month, Solar.R)) +
  geom_point()

6.4 分面展示

代码语言:javascript
复制
ggmice(dat, aes(Month, Solar.R)) +
  geom_point() +
  facet_wrap(~ Month == 5,
             # labeller = label_both
             )

7填补数据集的可视化

7.1 dotplot

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

代码语言:javascript
复制
ggmice(imp, aes(x = .imp, y = Temp)) +
  geom_jitter(height = 0, width = 0.25) +
  labs(x = "Imputation number")

7.2 boxplot

代码语言:javascript
复制
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")

8算法收敛

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

代码语言:javascript
复制
plot_trace(imp,
#           "Temp"
           )

最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4数据概览
    • 4.1 缺失值查看
      • 4.2 缺失值可视化
        • 4.3 influx-outflux plot
        • 5可视化一下吧
          • 5.1 连续变量
            • 5.2 分类变量
              • 5.3 分面展示
              • 6mice包填补缺失值
                • 6.1 填补缺失值
                  • 6.2 连续变量缺失值填补后可视化
                    • 6.3 分类变量缺失值填补后可视化
                      • 6.4 分面展示
                      • 7填补数据集的可视化
                        • 7.1 dotplot
                          • 7.2 boxplot
                          • 8算法收敛
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档