使用missForest填充缺失的值

时间:2018-04-06 08:46:00

标签: r random-forest missing-data

我想使用missForest

来估算值

我在变量中缺少值但不是全部。

当我这样做时,它真的很慢(从未发生过)

mf_1 <- missForest(dtrain)

但是当我执行以下操作时,它没问题

mf_1 <- missForest(dtrain[c(10,11,9,3)])

您是否认为在第二种情况下missForest是使用所有变量还是10, 11, 3, 9来预测?

1 个答案:

答案 0 :(得分:0)

子集数据框只会将这些列传递给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参数来限制生成的树的数量。但这两种选择都可能对结果的质量产生不利影响。