Home Â» How to Perform Multivariate Normality Tests in R

# How to Perform Multivariate Normality Tests in R

When weâ€™d like to test whether or not a single variable is normally distributed, we can create a Q-Q plot to visualize the distribution or we can perform a formal statistical test like an Anderson Darling Test or a Jarque-Bera Test.

However, when weâ€™d like to test whether or notÂ severalÂ variables are normally distributed as a group we must perform aÂ multivariate normality test.

This tutorial explains how to perform the following multivariate normality tests for a given dataset in R:

• Mardiaâ€™s Test
• Energy Test
• Multivariate Kurtosis and Skew Tests

Related:Â If weâ€™d like to identify outliers in a multivariate setting, we can use the Mahalanobis distance.

### Example: Mardiaâ€™s Test in R

Mardiaâ€™s Test determines whether or not a group of variables follows a multivariate normal distribution. The null and alternative hypotheses for the test are as follows:

H0 (null): The variables follow a multivariate normal distribution.

Ha (alternative): The variables do not follow a multivariate normal distribution.

The following code shows how to perform this test in R using theÂ QuantPsyc package:

library(QuantPsyc)

#create dataset
set.seed(0)

data

#perform Multivariate normality test
mult.norm(data)\$mult.test

Beta-hat      kappa     p-val
Skewness  1.630474 13.5872843 0.1926626
Kurtosis 13.895364 -0.7130395 0.4758213

TheÂ mult.norm()Â function tests for multivariate normality in both the skewness and kurtosis of the dataset. Since both p-values are not less than .05, we fail to reject the null hypothesis of the test. We donâ€™t have evidence to say that the three variables in our dataset do not follow a multivariate distribution.

### Example: Energy Test in R

An EnergyÂ Test is another statistical test that determines whether or not a group of variables follows a multivariate normal distribution. The null and alternative hypotheses for the test are as follows:

H0 (null): The variables follow a multivariate normal distribution.

Ha (alternative): The variables do not follow a multivariate normal distribution.

The following code shows how to perform this test in R using the energy package:

library(energy)

#create dataset
set.seed(0)

data

#perform Multivariate normality test
mvnorm.etest(data, R=100)

Energy test of multivariate normality: estimated parameters

data:  x, sample size 50, dimension 3, replicates 100
E-statistic = 0.90923, p-value = 0.31

The p-value of the test isÂ 0.31. Since this is not less than .05, we fail to reject the null hypothesis of the test. We donâ€™t have evidence to say that the three variables in our dataset do not follow a multivariate distribution.

Note:Â The argument R=100 specifies 100 boostrapped replicates to be used when performing the test. For datasets with smaller sample sizes, you may increase this number to produce a more reliable estimate of the test statistic.