Je suis actuellement en train d'étudier les possibilités de R sur les imputations de données manquantes et j'ai découvert la fonction rfImpute dans le package randomForest qui permet d'effectuer des imputations basées sur la construction de forêt aléatoire de Breiman (2001). Du coup, j'ai écrit un petit code pour tester et j'obtiens un truc étrange :
Code : Tout sélectionner
set.seed(100);
library(mlbench)
library(randomForest)
data(BreastCancer)
summary(BreastCancer)
data=BreastCancer[,-1]
data=data[!is.na(data[,"Bare.nuclei"]),]
summary(data)
is.factor(data$Cl.thickness)# OK
##########selection of missing values######
x=1:nrow(data)
sample1=sample(x,70)
sample3=sample(x,70)
sample5=sample(x,70)
##########replace by missing values#########
data_missing=data
data_missing[sample1,1]=NA
data_missing[sample3,3]=NA
data_missing[sample5,5]=NA
summary(data_missing)
is.factor(data_missing$Cl.thickness)# OK
########imputation by random forest########
data_imputed <- rfImpute(Class ~ .,data_missing,iter=5,ntree=1000)
is.factor(data_imputed$Cl.thickness)# Not OK
La variable Cl.thickness qui était initialement un facteur est devenue quantitative. Est ce que quelqu'un a déjà eu ce problème avec cette fonction ?
Merci d'avance pour votre aide.
Lionel