random_projection_test {RandomProjectionTest}R Documentation

Two-Sample Test in High Dimensions using Random Projection

Description

This function performs the random projection test (Lopes et al., (2011) <arXiv:1108.2401>) for the one-sample and two-sample hypothesis testing problem for equality of means in the high dimensional setting. We are interested in detecting the mean vector in the one-sample problem or the difference between mean vectors in the two-sample problem.

Usage

random_projection_test(X, Y = NULL, mu0 = NULL, proj_dimension = NULL)

Arguments

X

The n1-by-p observation matrix with numeric column variables.

Y

An optional n2-by-p observation matrix with numeric column variables. If NULL, one-sample test is conducted on X; otherwise, a two-sample test is conducted on X and Y.

mu0

The null hypothesis vector to be tested. If NULL, the default value is the 0 vector of lenght p.

proj_dimension

Dimension where to project the given samples. If NULL, the default value is floor(n/2), where n=n1 if Y=NULL or n=n1+n2-2 if not, as in Lopes et al.

Details

Since the matrix used to project the data into a lower-dimension subset is a random matrix, obtaining the exactly same p-values in two repetitions is not likely. However, power function has been proved to perform adequately in the vast majority of settings.

Value

statistic

Value of the test's statistic T_k^2.

p_value

The p-value of the test.

degrees_freedom

The degrees of freedom used for the F distribution, returns list(k, n-k+1).

null_value

Returns mu0.

method

Brief description of the test that has been carried out.

Author(s)

Juan Ortiz, <juan.ortiz1alonso@gmail.com>

References

Lopes, M. E., Jacob, L. J. & Wainwright, M. J. (2011). A More Powerful Two-Sample Test in High Dimensions using Random Projection. <arXiv:1108.2401>.

Examples

set.seed(10086)
# One-sample test
n1=30; p=120
X = matrix(rnorm(n1*p), nrow = n1, ncol = p)
res1 = random_projection_test(X)

# Two-sample test
n2=65
Y = matrix(rnorm(n2*p), nrow = n2, ncol = p)
res2 = random_projection_test(X, Y)

# Specify a null hypothesis vector
res3 = random_projection_test(X, Y, mu0 = rep(0.1, p))

# Choose a projection dimension manually, will work worse than previous example
res4 = random_projection_test(X, Y, mu0 = rep(0.1, p), proj_dimension = 4)

[Package RandomProjectionTest version 0.1.4 Index]