【发布时间】:2016-02-03 15:50:48
【问题描述】:
我正在构建一个预测模型,并使用 mice 包在我的训练集中估算 NA。由于我需要为我的测试集重复使用相同的插补方案,我该如何将它重新应用到我的测试数据中?
# generate example data
set.seed(333)
mydata <- data.frame(a = as.logical(rbinom(100, 1, 0.5)),
b = as.logical(rbinom(100, 1, 0.2)),
c = as.logical(rbinom(100, 1, 0.8)),
y = as.logical(rbinom(100, 1, 0.6)))
na_a <- as.logical(rbinom(100, 1, 0.3))
na_b <- as.logical(rbinom(100, 1, 0.3))
na_c <- as.logical(rbinom(100, 1, 0.3))
mydata$a[na_a] <- NA
mydata$b[na_b] <- NA
mydata$c[na_c] <- NA
# create train/test sets
library(caret)
inTrain <- createDataPartition(mydata$y, p = .8, list = FALSE)
train <- mydata[ inTrain, ]
test <- mydata[-inTrain, ]
# impute NAs in train set
library(mice)
imp <- mice(train, method = "logreg")
train_imp <- complete(imp)
# apply imputation scheme to test set
test_imp <- unknown_function(test, imp$unknown_data)
【问题讨论】:
-
你想完成什么?当您说“重用相同的插补方案”时,似乎暗示您只需使用与您在训练集中使用的相同方法来插补测试集中的缺失数据。在这种情况下,您将使用逻辑回归作为基础插补方法进行多重插补。
-
我实际上也在尝试这样做。 MICE 训练一个线性模型(至少使用“logreg”方法)。您可以按照步骤 7 中的gerkovink.com/miceVignettes/Convergence_pooling/… 中的说明获取模型。编辑:方法和包的作者在此处写了关于此主题的 cmets:github.com/stefvanbuuren/mice/issues/32
标签: r machine-learning r-caret r-mice