Given two multivariate data \(X\) and \(Y\) of same dimension, it tests $$H_0 : \mu_x = \mu_y\quad vs\quad H_1 : \mu_x \neq \mu_y$$ using the procedure by Lopes, Jacob, and Wainwright (2011) using random projection. Due to solving system of linear equations, we suggest you to opt for asymptotic-based \(p\)-value computation unless truly necessary for random permutation tests.

mean2.2011LJW(X, Y, method = c("asymptotic", "MC"), nreps = 1000)

Arguments

X

an \((n_x \times p)\) data matrix of 1st sample.

Y

an \((n_y \times p)\) data matrix of 2nd sample.

method

method to compute \(p\)-value. "asymptotic" for using approximating null distribution, and "MC" for random permutation tests. Using initials is possible, "a" for asymptotic for example.

nreps

the number of permutation iterations to be run when method="MC".

Value

a (list) object of S3 class htest containing:

statistic

a test statistic.

p.value

\(p\)-value under \(H_0\).

alternative

alternative hypothesis.

method

name of the test.

data.name

name(s) of provided sample data.

References

Lopes ME, Jacob L, Wainwright MJ (2011). “A More Powerful Two-sample Test in High Dimensions Using Random Projection.” In Proceedings of the 24th International Conference on Neural Information Processing Systems, NIPS'11, 1206--1214. ISBN 978-1-61839-599-3.

Examples

## CRAN-purpose small example
smallX = matrix(rnorm(10*3),ncol=10)
smallY = matrix(rnorm(10*3),ncol=10)
mean2.2011LJW(smallX, smallY) # run the test
#> 
#> 	Two-sample Test for Multivariate Means by Lopes, Jacob, and Wainwright
#> 	(2011)
#> 
#> data:  smallX and smallY
#> T2 = 2.1292, p-value = 0.5272
#> alternative hypothesis: true means are different.
#> 

# \donttest{
## empirical Type 1 error 
niter   = 1000
counter = rep(0,niter)  # record p-values
for (i in 1:niter){
  X = matrix(rnorm(10*20), ncol=20)
  Y = matrix(rnorm(10*20), ncol=20)
  
  counter[i] = ifelse(mean2.2011LJW(X,Y)$p.value < 0.05, 1, 0)
}

## print the result
cat(paste("\n* Example for 'mean2.2011LJW'\n","*\n",
"* number of rejections   : ", sum(counter),"\n",
"* total number of trials : ", niter,"\n",
"* empirical Type 1 error : ",round(sum(counter/niter),5),"\n",sep=""))
#> 
#> * Example for 'mean2.2011LJW'
#> *
#> * number of rejections   : 46
#> * total number of trials : 1000
#> * empirical Type 1 error : 0.046
# }