在R中的插补

  • 本文关键字: r imputation
  • 更新时间 :
  • 英文 :


我是R编程语言的新手。我只是想知道我们数据集中只有任何方法将的null值算为>。因为我看到的所有插图命令和库,所以将整个数据集的null值算为null值。

这是使用Hmisc软件包和impute

的示例
library(Hmisc)
DF <- data.frame(age = c(10, 20, NA, 40), sex = c('male','female'))
# impute with mean value
DF$imputed_age <- with(DF, impute(age, mean))
# impute with random value
DF$imputed_age2 <- with(DF, impute(age, 'random'))
# impute with the media
with(DF, impute(age, median))
# impute with the minimum
with(DF, impute(age, min))
# impute with the maximum
with(DF, impute(age, max))

# and if you are sufficiently foolish
# impute with number 7 
with(DF, impute(age, 7))
 # impute with letter 'a'
with(DF, impute(age, 'a'))

查看?impute,以获取有关如何实施插补的详细信息

为什么不使用更复杂的插入算法,例如小鼠(由链式的多个插补)?以下是R中的代码段,您可以适应您的案件。

library(mice)
#get the nhanes dataset
dat <- mice::nhanes
#impute it with mice
imp <- mice(mice::nhanes, m = 3, print=F)
imputed_dataset_1<-complete(imp,1)
head(imputed_dataset_1)
#     age  bmi hyp chl
# 1   1   22.5   1 118
# 2   2   22.7   1 187
# 3   1   30.1   1 187
# 4   3   24.9   1 186
# 5   1   20.4   1 113
# 6   3   20.4   1 184
#Now, let's see what methods have been used to impute each column
meth<-imp$method
#  age   bmi   hyp   chl
#"" "pmm" "pmm" "pmm"
#The age column is complete, so, it won't be imputed
# Columns bmi, hyp and chl are going to be imputed with pmm (predictive mean matching)
#Let's say that we want to impute only the "hyp" column
#So, we set the methods for the bmi and chl column to ""
meth[c(2,4)]<-""
#age   bmi   hyp   chl 
#""    "" "pmm"    "" 
#Let's run the mice imputation again, this time setting the methods parameter to our modified method
imp <- mice(mice::nhanes, m = 3, print=F, method = meth)
partly_imputed_dataset_1 <- complete(imp, 3)
head(partly_imputed_dataset_1)
#    age  bmi hyp chl
# 1   1   NA   1  NA
# 2   2 22.7   1 187
# 3   1   NA   1 187
# 4   3   NA   2  NA
# 5   1 20.4   1 113
# 6   3   NA   2 184

有很多软件包可以为您做到这一点。(有关数据的更多信息可以帮助您提供最佳选择)

一个示例可以使用 vim 软件包。

它具有称为 knn 的功能此函数具有选项变量您可以在其中指定应估算哪些变量。

这是一个示例:

library("VIM")
kNN(sleep, variable = c("NonD","Gest"))

我在此示例中使用的睡眠数据集与VIM一起。

如果您的列中存在一些时间依赖性,则使用时间序列插补软件包也可能是有意义的。在这种情况下,您可以使用例如螺纹软件包。这是一个示例:

  library(imputeTS)
  na_kalman(tsAirgap)

此处用作示例的Tsairgap数据集也与螺想物一起出现。

相关内容

  • 没有找到相关文章

最新更新