27 November 2017

Multivariate normality Tests with R - Mardia's Test, Henze-Zirkler, Royston

Most multivariate techniques, such as Linear Discriminant Analysis (LDA), Factor Analysis, MANOVA and Multivariate Regression are based on an assumption of multivariate normality. So, In this post, I am going to show you how you can assess the multivariate normality for the variables in your sample. The above test multivariate techniques can be used in a sample only when the variables follow a Multivariate normal distribution.




For this, you need to install a package called MVN

Type install.packages("MVN")and then load the package by library(“MVN”)


There are 3 multivariate normality tests available in this package
  1. Mardia's Multivariate Normality Test
  2. Henze-Zirkler's Multivariate Normality Test
  3. Royston's Multivariate Normality Test

Let's discuss one by one,

I am using inbuilt trees data here data(“trees”). This data consists of 3 variables i.e Girth, Height and volumeFirst, we use Mardia's test to verify the normality for the above data

Type mardiaTest(trees)

This will return the results of normality test with 3 variables in it. Data is not multivariate normal when the p-value is less than 0.05


If you want to check Multivariate normality of selected variables. Create a subset. Here I am creating a subset under name trees1 that includes 1st and 3rd variables

Trees1<-trees[c(1,3)]


Now let's check normality of trees1 using Henze-Zirkler's Test

Type hzTest(trees1)To use Royston's Multivariate Normality Test

Type roystonTest(trees1)

So, That is how you can test the multivariate normality of  variables using R. Give your queries and suggestions in comment section below. Subscribe my blog and YouTube channel for more posts and videos.