# 使用MICE包对数据缺失值进行插补

在分析数据集时，常常会碰到一些缺失值，如果缺失值的数量相对总体来说非常小，那么直接删除缺失值就是一种可行的方法。但某些情况下，直接删除缺失值可能会损失一些有用信息，此时就需要寻找方法来补全缺失值。（庄闪闪）

## 安装包

- conda create -n MICE -c conda-forge r-mice -y
- conda activate MICE
- conda install -c conda-forge r-tidyverse -y
- conda install -c conda-forge r-irkernel -y
- conda install -c conda-forge r-vim -y
- Rscript -e “IRkernel::installspec(name=’MICE’, displayname=’r-MICE’)”

## 导入数据

数据来源

    1
    2
    3
    4
    5

    rppa <- readRDS('PRAD_rppa.rds')
    pMiss <- function(x){round(sum(is.na(x))/length(x),3)}
    rppa <- rppa[apply(rppa, 1, pMiss) < 0.05, ]
    rppa <- rppa[, apply(rppa, 2, pMiss) < 0.05]
    sum(is.na(rppa))

额，好像没有NA了，这一步先不跑，熟悉一下MICE包吧，数据集用airquality

## 查看数据质量

    1
    2
    3
    4
    5

    mice::md.pattern(airquality)
    VIM::aggr(airquality, col=c('navyblue','red'), numbers=TRUE, sortVars=TRUE,
              labels=names(airquality), cex.axis=.7, gap=3,
              ylab=c("Histogram of missing data","Pattern"))
    VIM::marginplot(airquality[c(1,2)])

## 进行迭代插补

    1
    2
    3
    4
    5
    6
    7

    tempData <- mice::mice(airquality,m=5,maxit=50,meth='pmm',seed=1)
    # meth：指定数据中每一列的输入方法。
    # 1）数值型数据适用 pmm；
    # 2）二分类数据适用 logreg；
    # 3）无序多类别数据适用 ployreg；
    # 4）有序多分类变量适用 polr。
    # 默认方法为 pmm

## 选择合适的插补

    1
    2
    3

    mice::densityplot(tempData,~ Ozone + Solar.R  .imp)
    # 蓝色为原始数据的分布，第一幅红色图为一重插补，以此类推，选择最符合的
    mice::densityplot(tempData, ~ Ozone + Solar.R .imp == 4)

## 导出插补后的数据

    1
    2

    Data <- mice::complete(tempData, action = 4)
    # action的参数值表示选择第几重的插补值来填补原始数据集，根据前面的图来选择

数据清洗
使用MICE包对数据缺失值进行插补
https://occdn.limour.top/2326.html
Author
Limour
Posted on
September 10, 2022
Licensed under
TCGAbiolinks下载蛋白质组数据 Previous
TCGAbiolinks下载甲基化数据（续） Next

#### Search

Keyword