【问题标题】:Why don't impute function in R is not able to impute all NA values为什么不估算 R 中的函数不能估算所有 NA 值
【发布时间】:2017-09-15 09:51:27
【问题描述】:

在我的数据集中,我有大约 40% 的缺失值。所以我使用了e1071 包中的impute()。我使用下面的代码通过它们的中位数来估算整数变量的缺失值,并通过它们的模式来估算字符变量的缺失值。

library(mlr)
imp1 <- impute(obj = as.data.frame(train_prop), target=character(0), 
               classes = list(integer=imputeMedian(), factor=imputeMode())) 

执行代码后,我使用以下代码检查缺失值

table(is.na(imp1$data))
# FALSE    TRUE     
# 5493033   13742

显示大约 0.25% 的缺失值

在运行 impute 函数之前,我做了同样的检查,发现了以下结果

# FALSE    TRUE 
# 3267515 2239260 

最初我的数据有 40% 的缺失值,但在运行 impute() 之后,我得到了 0.2% 的缺失值。

为什么我没有 0% 的缺失值?

【问题讨论】:

  • impute() 来自哪个包。没有名为ml的包
  • @KenS。包“e1071”包含 impute() 函数。
  • 会不会是你的一些变量既不是整数变量也不是字符变量?如果是这样,它们将不会被估算并且它们的缺失值将保留。
  • 您说“字符变量的缺失值是该变量的模式”,但在您的论点中您提到 factor 而不是 character
  • e1071 具有不同的 implementationimpute。 @PythonLearner 你能确认你使用的是哪个包吗?

标签: r missing-data


【解决方案1】:

假设impute 属于mlr 包,只需更改classes 参数即可解决问题。

注意:

class(1)
[1] "numeric"

所以,在classes 参数中,只需将integer 更改为numeric

imp1 <- impute(obj = as.data.frame(train_prop), target =character(0),classes = list(numeric = imputeMedian(), factor = imputeMode())) 

希望这会有所帮助。

【讨论】:

  • 谢谢@parth。我会检查的
  • 不,它不起作用。现在我的 NA 比例接近 30%
猜你喜欢
  • 1970-01-01
  • 2020-06-10
  • 2020-09-08
  • 2021-05-20
  • 2022-11-04
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 2011-10-11
相关资源
最近更新 更多