咱们在数据分析的时候,经常要面对数据中存在缺失值的情况,咱们通常会使用mice包进行多重插补,但是mice包插补通常是建立在线性或者回归模型上的,这个就要求你的数据正态分布或者近似正态分布,如果你的数据偏态分布太厉害,有可能会插补不成功。
最近有粉丝提问说数据插补不成功,如上图所示,主要是数据偏态分布太严重了,我来演示一下
先导入数据和R包
library(survival)library(scitable)library(mice)setwd("E:/公众号文章2026年/多重插补插补不了怎么办")data<-read.csv("data.csv",sep=',',header=TRUE)
咱们可以看到,数据有很多缺失值的,先整理数据,主要是把分类变量转成因子,这步没什么特别
out<-organizedata2(data=data,username=username,token=token,explore=T)data<-out[["data"]]咱们常规使用mice包差补一下看看
impdata<-mice::mice(data,m=5,maxit=5,seed=123)
这种报错就本上就是数据分布问题,导致建模不成功了,这个时候咱们可以使用scitable包的sciimp函数进行随机森林插补
使用起来非常简单,把数据放进去,在methods这里改成methods = “randomForest”,因为它默认的是多重插补
out<-sciimp(data,username=username,token=token,methods="randomForest")这样随机森林插补就完成,咱们把数据提取出来
dataimp<-out[["impdata"]][["ximp"]]
咱们可以看到,缺失值已经全部被插补成功了,咱们还可以绘制插补前和插补后的数据分布,应对审稿人提问
本期结束