Finding Optimal Normalizing Transformations via bestNormalize

The bestNormalize R package was designed to help users find a transformation that can effectively normalize a vector regardless of its actual distribution. Each of the many normalization techniques that have been developed has its own strengths and weaknesses, and deciding which to use until data are fully observed is difficult or impossible. This package facilitates choosing between a range of possible transformations and will automatically return the best one, i.e., the one that makes data look the most normal. To evaluate and compare the normalization efficacy across a suite of possible transformations, we developed a statistic based on a goodness of fit test divided by its degrees of freedom. Transformations can be seamlessly trained and applied to newly observed data and can be implemented in conjunction with caret and recipes for data preprocessing in machine learning workflows. Custom transformations and normalization statistics are supported.

Ryan A. Peterson (Department of Biostatistics and Informatics)

Supplementary materials

Supplementary materials are available in addition to this article. It can be downloaded at



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 ...".


For attribution, please cite this work as

Peterson, "Finding Optimal Normalizing Transformations via bestNormalize", The R Journal, 2021

BibTeX citation

  author = {Peterson, Ryan A.},
  title = {Finding Optimal Normalizing Transformations via bestNormalize},
  journal = {The R Journal},
  year = {2021},
  note = {},
  doi = {10.32614/RJ-2021-041},
  volume = {13},
  issue = {1},
  issn = {2073-4859},
  pages = {294-313}