mvnorm.etest {energy} | R Documentation |
Performs the E-statistic (energy) test of multivariate or univariate normality.
mvnorm.etest(x, R = 999) mvnorm.e(x) normal.e(x)
x |
data matrix of multivariate sample, or univariate data vector |
R |
number of bootstrap replicates |
If x
is a matrix, each row is a multivariate observation. The
data will be standardized to zero mean and identity covariance matrix
using the sample mean vector and sample covariance matrix. If x
is a vector, the univariate statistic normal.e(x)
is returned.
If the data contains missing values or the sample covariance matrix is
singular, NA is returned.
The E-test of multivariate normality was proposed and implemented by Szekely and Rizzo (2005). The test statistic for d-variate normality is given by
E = n((2/n) sum[1:n] E||y_i-Z|| - E||Z-Z'|| - (1/n^2) sum[1:n,1:n] ||y_i-y_j||),
where y_1,...,y_n is the standardized sample, Z, Z' are iid standard d-variate normal, and || || denotes Euclidean norm.
The E-test of multivariate (univariate) normality
is implemented by parametric bootstrap with R
replicates.
The value of the E-statistic for univariate
normality is returned by normal.e
.
The value of the E-statistic for multivariate
normality is returned by mvnorm.e
.
mvnorm.etest
returns a list with class htest
containing
method |
description of test |
statistic |
observed value of the test statistic |
p.value |
approximate p-value of the test |
data.name |
description of data |
Maria L. Rizzo mrizzo @ bgnet.bgsu.edu and Gabor J. Szekely gabors @ bgnet.bgsu.edu
Szekely, G. J. and Rizzo, M. L. (2005) A New Test for Multivariate Normality, Journal of Multivariate Analysis, 93/1, 58-80, http://dx.doi.org/10.1016/j.jmva.2003.12.002.
Rizzo, M. L. (2002). A New Rotation Invariant Goodness-of-Fit Test, Ph.D. dissertation, Bowling Green State University.
Szekely, G. J. (1989) Potential and Kinetic Energy in Statistics, Lecture Notes, Budapest Institute of Technology (Technical University).
## compute normality test statistics for iris Setosa data data(iris) mvnorm.e(iris[1:50, 1:4]) normal.e(iris[1:50, 1]) ## test if the iris Setosa data has multivariate normal distribution mvnorm.etest(iris[1:50,1:4], R = 199) ## test a univariate sample for normality x <- runif(50, 0, 10) mvnorm.etest(x, R = 199)