R语言使用插补法,补齐缺失值

插补法
7.2.1均值插补

cancer.new <- cancer
cancer.new[!complete.cases(cancer.new),] 
cancer.new$wt.loss[is.na(cancer.new$wt.loss)] <- mean(cancer.new$wt.loss, na.rm=TRUE)
7.2.2众数插补 

sleep.new <- sleep
library(DescTools)  
Mode(sleep.new$Span,na.rm=TRUE) # M大写,众数可能不止一个,自行选择
sleep.new$Span[is.na(sleep.new$Span)] <- Mode(sleep.new$Span)[1] # [1]选择第一个众数
7.3.3数值型全用均值/中位数插补的批量操作

library(dplyr);library(naniar)
sleep2.2 <- sleep %>% impute_mean_if(is.numeric)
sleep3.3 <- sleep %>% impute_median_if(is.numeric)
7.3.4多重插补法(mice包)

library(mice)  # 多重插补安装包
imtp <- mice(data, m)  # imp是包含m个插补数据集的列表,包括插补过程的信息。默认m为5。
fit <- with(imtp, analysis)  # fit是包含m个单独统计分析结果的列表。
# analysis是一个表达式,设定应用于m个插补数据集的统计分析方法。
# 线性回归模型:lm()、广义线性模型:glm()、广义可加模型:gam(),负二项模型:nbrm()
pooled <- pool(fit) # pooled是个包含这m个统计分析平均结果的列表。
summary(pooled)
 
#MICE IMPUTATION
my_imtp <- mice(sleep8, m=5, maxit=20) # 5重插补,即生成5个无缺失数据集
my_imtp$imp$NonD # 每个插补数据集缺失值位置的数据补齐具体数值
my_imtp$imp$Sleep
sleep9 <- complete(my_imtp, 4) # 选择第4个插补数据集作为结果
 
#MULTIPLE IMPUTATION
fit = with(my_imtp, lm(Sleep ~ NonD+Dream+Span+Gest+Pred+Exp+Danger))
summary(pool(fit))

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值