我想使用missForest
,
我在变量中缺少值但不是全部。
当我这样做时,它真的很慢(从未发生过)
mf_1 <- missForest(dtrain)
但是当我执行以下操作时,它没问题
mf_1 <- missForest(dtrain[c(10,11,9,3)])
您是否认为在第二种情况下missForest
是使用所有变量还是10, 11, 3, 9
来预测?
答案 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
参数来限制生成的树的数量。但这两种选择都可能对结果的质量产生不利影响。