ggmice
equivalent of mice
plotsHow to re-create the output of the plotting functions from mice
with ggmice
. In alphabetical order of the mice
functions.
knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7.2, fig.height = 4, warning = FALSE, message = FALSE ) options(rmarkdown.html_vignette.check_title = FALSE)
First load the ggmice
, mice
, and ggplot2
packages, some incomplete data and a mids
object into your workspace.
# load packages library(ggmice) library(mice) library(ggplot2) # load incomplete dataset from mice dat <- boys # generate imputations imp <- mice(dat, method = "pmm", printFlag = FALSE)
bwplot
Box-and-whisker plot of observed and imputed data.
# original plot mice::bwplot(imp, hgt ~ .imp) # ggmice equivalent ggmice(imp, aes(x = .imp, y = hgt)) + geom_boxplot() + labs(x = "Imputation number") # extended reproduction with ggmice ggmice(imp, aes(x = .imp, y = hgt)) + stat_boxplot(geom = "errorbar", linetype = "dashed") + geom_boxplot(outlier.colour = "grey", outlier.shape = 1) + labs(x = "Imputation number") + theme(legend.position = "none")
densityplot
Density plot of observed and imputed data.
# original plot mice::densityplot(imp, ~hgt) # ggmice equivalent ggmice(imp, aes(x = hgt, group = .imp)) + geom_density() # extended reproduction with ggmice ggmice(imp, aes(x = hgt, group = .imp, size = .where)) + geom_density() + scale_size_manual( values = c("observed" = 1, "imputed" = 0.5), guide = "none" ) + theme(legend.position = "none")
fluxplot
Influx and outflux plot of multivariate missing data patterns.
# original plot fluxplot(dat) # ggmice equivalent plot_flux(dat)
md.pattern
Missing data pattern plot.
# original plot md <- md.pattern(dat) # ggmice equivalent plot_pattern(dat) # extended reproduction with ggmice plot_pattern(dat, square = TRUE) + theme( legend.position = "none", axis.title = element_blank(), axis.title.x.top = element_blank(), axis.title.y.right = element_blank() )
plot.mids
Plot the trace lines of the MICE algorithm.
# original plot plot(imp, hgt ~ .it | .ms) # ggmice equivalent plot_trace(imp, "hgt")
stripplot
Stripplot of observed and imputed data.
# original plot mice::stripplot(imp, hgt ~ .imp) # ggmice equivalent ggmice(imp, aes(x = .imp, y = hgt)) + geom_jitter(width = 0.25) + labs(x = "Imputation number") # extended reproduction with ggmice (not recommended) ggmice(imp, aes(x = .imp, y = hgt)) + geom_jitter( shape = 1, width = 0.1, na.rm = TRUE, data = data.frame( hgt = dat$hgt, .imp = factor(rep(1:imp$m, each = nrow(dat))), .where = "observed" ) ) + geom_jitter(shape = 1, width = 0.1) + labs(x = "Imputation number") + theme(legend.position = "none")
xyplot
Scatterplot of observed and imputed data.
# original plot mice::xyplot(imp, hgt ~ age) # ggmice equivalent ggmice(imp, aes(age, hgt)) + geom_point() # extended reproduction with ggmice ggmice(imp, aes(age, hgt)) + geom_point(size = 2, shape = 1) + theme(legend.position = "none")
To make ggmice
visualizations interactive, the plotly
package can be used. For example, an interactive influx and outflux plot may be more legible than a static one.
# load packages library(plotly) # influx and outflux plot p <- plot_flux(dat) ggplotly(p)
You may want to create a plot visualizing the imputations of multiple variables as one object. To visualize multiple variables at once, the variable names are saved in a vector. This vector is used together with the functional programming package purrr
and visualization package patchwork
to map()
over the variables and subsequently wrap_plots
to create a single figure.
# load packages library(purrr) library(patchwork) # create vector with variable names vrb <- names(dat)
Display box-and-whisker plots for all variables.
# original plot mice::bwplot(imp) # ggmice equivalent p <- map(vrb, ~ { ggmice(imp, aes(x = .imp, y = .data[[.x]])) + geom_boxplot() + scale_x_discrete(drop = FALSE) + labs(x = "Imputation number") }) wrap_plots(p, guides = "collect") & theme(legend.position = "bottom")
Display density plots for all variables.
# original plot mice::densityplot(imp) # ggmice equivalent p <- map(vrb, ~ { ggmice(imp, aes(x = .data[[.x]], group = .imp)) + geom_density() }) wrap_plots(p, guides = "collect") & theme(legend.position = "bottom")
Display strip plots for all variables.
# original plot mice::stripplot(imp) # ggmice equivalent p <- map(vrb, ~ { ggmice(imp, aes(x = .imp, y = .data[[.x]])) + geom_jitter() + labs(x = "Imputation number") }) wrap_plots(p, guides = "collect") & theme(legend.position = "bottom")
This is the end of the vignette. This document was generated using:
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.