【问题标题】:Fill missing values with missForest用missForest填充缺失值
【发布时间】:2018-04-06 08:46:00
【问题描述】:
我想使用missForest 估算值,
我在变量中有缺失值,但不是全部。
当我这样做时,它真的很慢(从未发生过)
mf_1 <- missForest(dtrain)
但是当我执行以下操作时,没关系
mf_1 <- missForest(dtrain[c(10,11,9,3)])
您认为在第二种情况下missForest 使用所有变量还是仅使用10, 11, 3, 9 进行预测?
【问题讨论】:
标签:
r
random-forest
missing-data
【解决方案1】:
对数据框进行子集化只会将这些列传递给missForest() 函数,因此它只会使用这些变量来估算数据。这是一个例子:
library(missForest)
data(iris)
## We are going to have missing values in first 3 columns
## Introduce missing values
iris_wih_NA <- missForest::prodNA(iris[c(1,2,3)], 0.3)
## Last two columns are then added
iris_wih_NA$Petal.Width <- iris$Petal.Width
iris_wih_NA$Species <- iris$Species
head(iris_wih_NA)
## Will use all variables to impute missing Values
iris_imputed1 <- missForest::missForest(iris_wih_NA)$ximp
## Will use only variables 1,2 and 3 to impute missing values
iris_imputed2 <- missForest::missForest(iris_wih_NA[c(1,2,3)])$ximp
如您所见,第二个估算数据集总共只有 3 列,因为您只提供了那么多信息。
至于 missForest 插补速度慢,我认为您可以减少数据的维度以获得更快的结果,或者使用ntree 参数来限制生成的树的数量。但这两种选择都可能对您的结果质量产生不利影响。