Skip to contents

Given the data on Stiefel manifold \(St(k,p)\), it tests whether the data is distributed uniformly.

Usage

stiefel.utest(stobj, method = c("Rayleigh", "RayleighM"))

Arguments

stobj

a S3 "riemdata" class for \(N\) Stiefel-valued data.

method

(case-insensitive) name of the test method containing

"Rayleigh"

original Rayleigh statistic.

"RayleighM"

modified Rayleigh statistic with better order of error.

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

Chikuse Y (2003). Statistics on Special Manifolds, volume 174 of Lecture Notes in Statistics. Springer New York, New York, NY. ISBN 978-0-387-00160-9 978-0-387-21540-2.

Mardia KV, Jupp PE (eds.) (1999). Directional Statistics, Wiley Series in Probability and Statistics. John Wiley \& Sons, Inc., Hoboken, NJ, USA. ISBN 978-0-470-31697-9 978-0-471-95333-3.

See also

Examples

#-------------------------------------------------------------------
#   Compare Rayleigh's original and modified versions of the test
# 
# Test 1. sample uniformly from St(2,4)
# Test 2. use perturbed principal components from 'iris' data in R^4
#         which is concentrated around a point to reject H0.
#-------------------------------------------------------------------
## DATA GENERATION
#  1. uniform data
myobj1 = stiefel.runif(n=100, k=2, p=4)

#  2. perturbed principal components
data(iris)
irdat = list()
for (n in 1:100){
   tmpdata    = iris[1:50,1:4] + matrix(rnorm(50*4,sd=0.5),ncol=4)
   irdat[[n]] = eigen(cov(tmpdata))$vectors[,1:2]
}
myobj2 = wrap.stiefel(irdat)

## TEST
#  1. uniform data
stiefel.utest(myobj1, method="Rayleigh")
#> 
#> 	Rayleigh Test of Uniformity on Stiefel Manifold
#> 
#> data:  myobj1
#> statistic = 9.5223, p-value = 0.3002
#> alternative hypothesis: data is not uniformly distributed on St(2,4).
#> 
stiefel.utest(myobj1, method="RayleighM")
#> 
#> 	Modified Rayleigh Test of Uniformity on Stiefel Manifold
#> 
#> data:  myobj1
#> statistic = 9.5201, p-value = 0.3003
#> alternative hypothesis: data is not uniformly distributed on St(2,4).
#> 

#  2. concentrated data
stiefel.utest(myobj2, method="rayleIgh")   # method names are 
#> 
#> 	Rayleigh Test of Uniformity on Stiefel Manifold
#> 
#> data:  myobj2
#> statistic = 67.364, p-value = 1.642e-11
#> alternative hypothesis: data is not uniformly distributed on St(2,4).
#> 
stiefel.utest(myobj2, method="raYleiGhM")  # CASE - INSENSITIVE !
#> 
#> 	Modified Rayleigh Test of Uniformity on Stiefel Manifold
#> 
#> data:  myobj2
#> statistic = 69.296, p-value = 6.786e-12
#> alternative hypothesis: data is not uniformly distributed on St(2,4).
#>