Multivariate Normality Tests

A comprehensive suite for assessing multivariate normality using six statistical tests (Mardia, Henze–Zirkler, Henze–Wagner, Royston, Doornik–Hansen, Energy). Also includes univariate diagnostics, bivariate density visualization, robust outlier detection, power transformations (e.g., Box–Cox, Yeo–Johnson), and imputation strategies ("mean", "median", "mice") for handling missing data. Bootstrap resampling is supported for selected tests to improve p-value accuracy in small samples. Diagnostic plots are available via both 'ggplot2' and interactive 'plotly' visualizations. See Korkmaz et al. (2014) < https://journal.r-project.org/articles/RJ-2014-031/RJ-2014-031.pdf>.


MVN: An R Package for Assessing Multivariate Normality

CRAN Status CRAN Downloads (last day) CRAN Downloads (last month) CRAN Downloads (total)


Overview

MVN is an R package that provides a comprehensive and user-friendly framework for assessing multivariate normality—a key assumption in many multivariate statistical methods such as:

  • MANOVA
  • Linear Discriminant Analysis
  • Principal Component Analysis
  • Canonical Correlation Analysis

Multivariate normality is often overlooked or improperly tested. The MVN package addresses this by integrating robust numerical tests, graphical diagnostics, and transformation tools, offering clear insights into the distributional characteristics of your multivariate data.


Features

  • Multivariate Normality Tests:

    • Mardia's Test
    • Henze-Zirkler’s Test
    • Henze-Wagner’s Test
    • Royston’s Test
    • Doornik-Hansen's Test
    • Energy Test
  • Graphical Diagnostics:

    • Chi-square Q-Q Plots
    • 3D Perspective Plots
    • Contour Plots
  • Multivariate Outlier Detection:

    • Robust Mahalanobis distance-based methods
  • Univariate Normality Checks:

    • Multiple tests and visualizations for marginal distributions
  • Transformations & Imputation

    • Log, square root, and square transformations
    • Optimal Box–Cox and Yeo–Johnson power transformations
    • Missing data handling via mean, median, or MICE imputation
  • Bootstrap Support

    • Optional bootstrap p-values for Mardia, Henze–Zirkler, and Royston tests for improved small-sample inference
  • Descriptive Statistics and Group-Wise Analysis

    • Grouped summaries using the subset argument
    • Integration with tidy data pipelines

Installation

To install the latest version from CRAN:

install.packages("MVN")

To install the development version from GitHub:

devtools::install_github("selcukorkmaz/MVN")

Basic Usage

library(MVN)

# Run MVN tests and diagnostics on iris data
result <- mvn(
  data = iris[1:50, 1:3],
  mvn_test = "hz"
  )

# View results
summary(result, "mvn")

For grouped analysis:

mvn(data = iris, subset = "Species", mvn_test = "hz")

Shiny Web App

Explore MVN’s features via a user-friendly web interface: http://biosoft.erciyes.edu.tr/app/MVN

To launch the Shiny app locally from the MVN package, run:

MVN::run_mvn_app()

Documentation and Tutorial

Full documentation and an interactive tutorial site are available at: https://selcukorkmaz.github.io/mvn-tutorial/

Citation

Please cite MVN in your publications using:

Korkmaz S, Goksuluk D, Zararsiz G. MVN: An R Package for Assessing Multivariate Normality. The R Journal. 2014; 6(2):151-162. https://journal.r-project.org/archive/2014-2/korkmaz-goksuluk-zararsiz.pdf

License

MVN is released under the MIT license.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("MVN")

6.3 by Selcuk Korkmaz, 9 months ago


https://biosoft.shinyapps.io/mvn-shiny-app/, https://selcukorkmaz.github.io/mvn-tutorial/, https://github.com/selcukorkmaz/MVN


Report a bug at https://github.com/selcukorkmaz/MVN/issues


Browse source code at https://github.com/cran/MVN


Authors: Selcuk Korkmaz [aut, cre] (ORCID: , Dincer Goksuluk [aut] , Gokmen Zararsiz [aut]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports methods, nortest, moments, MASS, boot, car, dplyr, tidyr, purrr, stringr, tibble, ggplot2, viridis, cli, energy, plotly, mice

Suggests DT, bslib, future, haven, jsonlite, readxl, shiny, yaml, promises, testthat, zip


Imported by AssumpSure, DFA.CANCOR, KarsTS, RSP, stats4teaching.

Suggested by ModStatR, PsychoMatic, micompr.


See at CRAN