用mice进行多重填补

准备了一个数据集,并导入数据集。

用mice进行多重填补
#纳入数据,并查看
finaldata <- read.csv('test.csv')
summary(finaldata)
用mice进行多重填补

使用shipunov::Missing.map来比较直观的展示缺失值的占比以及在整理样本中缺失值的位置。

shipunov::Missing.map(finaldata)
用mice进行多重填补

此外就是mice 的可视化方法了:

md.pattern(finaldata)
用mice进行多重填补

这张图除了提供了每列数据的缺失值汇总情况,还对不同位置发生的缺失情况以方块图进行展示,比如横向来看,第一排就是在所有列都没有缺失值情况,一共有10个样本符合。

还有一个包VIM 也提供了函数:

aggr_plot <- aggr(finaldata,
                  numbers=TRUE, 
                  sortVars=TRUE,
                  labels=names(my_data),
                  cex.axis=.7,gap=3,
                  ylab=c('Missing data','Pattern'))
用mice进行多重填补

多重填补法

多重填补法(Multiple Imputation Missing Data),其核心思想有点类似于回归填补,是基于各种模型(如回归、决策树、贝叶斯估计等方法)。简单而言:该方法认为缺失值是随机的,它的值可以通过已观测到的值进行预测与插值。

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

  • 1、通过已知数值建立插值函数,估计出待插补的值,然后在数值上再加上不同的偏差,形成多组可选插补值,形成多套待评估的完整的数据集;
  • 2、对所产生的数据集进行统计分析;
  • 3、评价每个数据集的结果,根据模型的评分选择最佳的补插值。由于在分析中引入多个模拟的数据集,因此被称为“多重补插”。因此,多重补插威力巨大,可以满足常见的缺失值处理的需要。下面就跟着我们一步一步实现这个技术。
用mice进行多重填补
mice_finaldata <- mice(finaldata,
                 meth='pmm', seed=500)
#看每一例插补的方法
mice_finaldata$meth
  • 1、我们设置方法为 “pmm”;
  • 2、m 参数设定多重插入的数值,默认值为5;
  • 3、matrix 最大迭代次数,默认值为5;
  • 4、seed 设置种子数;

我们可以查看数据框每列采用的插补方法,如果不存在NA 值,则不会进行任何的插补

用mice进行多重填补

查看插补的可视化方法

xyplot(mice_finaldata,sex + age ~ hospital_los+icu_los+cap,
       pch=18,cex=1)
用mice进行多重填补

图中:洋红色为插补的数据,蓝色为原始数据。或者使用密度图:

用mice进行多重填补

或者使用带状图:

用mice进行多重填补

汇总(pooling)

with()函数对5个插补数据及分别进行线性模型拟合,t检验,判断数据集中每个变量的有效性。

fit <- with(mice_finaldata,lm(hospital_los~icu_los + sex + cap + age))

summary(fit)
用mice进行多重填补

term,变量; estimate,参数估计值; std.error,残差的标准误; statistic,t 统计量; p.value,P值

获取完整的数据集

CompleteData<-complete(tempData,1)

CompleteData

根据检验统计量,选择第一次pmm的结果作为插补数据。

1表示缺失值被插补数据集中的第一个数据集替换。

如果想使用其他的插补数据,只需要在更改complete()函数中的第二个参数。

用mice进行多重填补

python也可实现MICE插补

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.imputation import mice

data_loss = pd.read_csv('test.csv')
# 查看缺失情况
data_loss.describe()


# 将缺失数据集data_loss给到MICEData
imp = mice.MICEData(data_loss)
# 查看imp对象中的data
imp.data

    特别申明:本文为转载文章,转载自医学方,不代表贪吃的夜猫子立场,如若转载,请注明出处:https://mp.weixin.qq.com/s/Cmju6IP3My52AJmQwhcBcg

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    xujunzju管理者
    上一篇 2023年5月14日 14:10
    下一篇 2023年5月23日 08:40

    相关推荐

    发表回复

    登录后才能评论
    联系我们
    邮箱:
    xujunzju@gmail.com
    公众号:
    xujunzju6174
    捐赠本站
    捐赠本站
    分享本页
    返回顶部