Multiple Imputation and Synthetic Data Generation with NPBayesImputeCat

In many contexts, missing data and disclosure control are ubiquitous and challenging issues. In particular, at statistical agencies, the respondent-level data they collect from surveys and censuses can suffer from high rates of missingness. Furthermore, agencies are obliged to protect respondents’ privacy when publishing the collected data for public use. The NPBayesImputeCat R package, introduced in this paper, provides routines to i) create multiple imputations for missing data and ii) create synthetic data for statistical disclosure control, for multivariate categorical data, with or without structural zeros. We describe the Dirichlet process mixture of products of the multinomial distributions model used in the package and illustrate various uses of the package using data samples from the American Community Survey (ACS). We also compare results of the missing data imputation to the mice R package and those of the synthetic data generation to the synthpop R package.

Jingchen Hu , Olanrewaju Akande , Quanli Wang
2021-09-20

CRAN packages used

NPBayesImputeCat, mice, synthpop, bayesplot, tidyverse

CRAN Task Views implied by cited packages

MissingData, OfficialStatistics, Multivariate, SocialSciences

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Hu, et al., "Multiple Imputation and Synthetic Data Generation with NPBayesImputeCat", The R Journal, 2021

BibTeX citation

@article{RJ-2021-080,
  author = {Hu, Jingchen and Akande, Olanrewaju and Wang, Quanli},
  title = {Multiple Imputation and Synthetic Data Generation with NPBayesImputeCat},
  journal = {The R Journal},
  year = {2021},
  note = {https://doi.org/10.32614/RJ-2021-080},
  doi = {10.32614/RJ-2021-080},
  volume = {13},
  issue = {2},
  issn = {2073-4859},
  pages = {90-110}
}