## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height=4, fig.align = "center" ) ## ----message=FALSE------------------------------------------------------------ library(VIM) dataset <- sleep[, c("Dream", "NonD", "BodyWgt", "Span")] # dataset with missings dataset$BodyWgt <- log(dataset$BodyWgt) dataset$Span <- log(dataset$Span) aggr(dataset) str(dataset) ## ----message=FALSE------------------------------------------------------------ imp_xgboost <- xgboostImpute(formula=Dream~BodyWgt,data = dataset) aggr(imp_xgboost, delimiter = "_imp") ## ----fig.height=5------------------------------------------------------------- imp_xgboost[, c("Dream", "BodyWgt", "Dream_imp")] |> marginplot(delimiter = "_imp") ## ----message=FALSE------------------------------------------------------------ imp_xgboost <- xgboostImpute(Dream+NonD+Span~BodyWgt,data=dataset) aggr(imp_xgboost, delimiter = "_imp") ## ----------------------------------------------------------------------------- library(reactable) data(iris) df <- iris colnames(df) <- c("S.Length","S.Width","P.Length","P.Width","Species") # randomly produce some missing values in the data set.seed(1) nbr_missing <- 48 y <- data.frame(row=sample(nrow(iris),size = nbr_missing,replace = FALSE), col=sample(rep(1:4,12))) df[as.matrix(y)]<-NA aggr(df) sapply(df, function(x)sum(is.na(x))) ## ----message=FALSE------------------------------------------------------------ imp_xgboost <- xgboostImpute(S.Length + S.Width + P.Length + P.Width ~ Species, df) aggr(imp_xgboost, delimiter = "imp") ## ----echo=F,warning=F--------------------------------------------------------- results <- cbind("TRUE1" = as.numeric(iris[as.matrix(y[which(y$col==1),])]), "IMPUTED1" = round(as.numeric(imp_xgboost[as.matrix(y[which(y$col==1),])]),2), "TRUE2" = as.numeric(iris[as.matrix(y[which(y$col==2),])]), "IMPUTED2" = round(as.numeric(imp_xgboost[as.matrix(y[which(y$col==2),])]),2), "TRUE3" = as.numeric(iris[as.matrix(y[which(y$col==3),])]), "IMPUTED3" = round(as.numeric(imp_xgboost[as.matrix(y[which(y$col==3),])]),2), "TRUE4" = as.numeric(iris[as.matrix(y[which(y$col==4),])]), "IMPUTED4" = round(as.numeric(imp_xgboost[as.matrix(y[which(y$col==4),])]),2))[1:5,] reactable(results, columns = list( TRUE1 = colDef(name = "True"), IMPUTED1 = colDef(name = "Imputed"), TRUE2 = colDef(name = "True"), IMPUTED2 = colDef(name = "Imputed"), TRUE3 = colDef(name = "True"), IMPUTED3 = colDef(name = "Imputed"), TRUE4 = colDef(name = "True"), IMPUTED4 = colDef(name = "Imputed") ), columnGroups = list( colGroup(name = "S.Length", columns = c("TRUE1", "IMPUTED1")), colGroup(name = "S.Width", columns = c("TRUE2", "IMPUTED2")), colGroup(name = "P.Length", columns = c("TRUE3", "IMPUTED3")), colGroup(name = "P.Width", columns = c("TRUE4", "IMPUTED4")) ), striped = TRUE, highlight = TRUE, bordered = TRUE )