R/unif.2017YMi.R
unif.2017YMi.Rd
Given a multivariate sample \(X\), it tests $$H_0 : \Sigma_x = \textrm{ uniform on } \otimes_{i=1}^p [a_i,b_i] \quad vs\quad H_1 : \textrm{ not } H_0$$ using the procedure by Yang and Modarres (2017). Originally, it tests the goodness of fit on the unit hypercube \([0,1]^p\) and modified for arbitrary rectangular domain.
an \((n\times p)\) data matrix where each row is an observation.
type of statistic to be used, one of "Q1"
,"Q2"
, and "Q3"
.
length-\(p\) vector of lower bounds of the test domain.
length-\(p\) vector of upper bounds of the test domain.
a (list) object of S3
class htest
containing:
a test statistic.
\(p\)-value under \(H_0\).
alternative hypothesis.
name of the test.
name(s) of provided sample data.
Yang M, Modarres R (2017). “Multivariate tests of uniformity.” Statistical Papers, 58(3), 627--639. ISSN 0932-5026, 1613-9798.
## CRAN-purpose small example
smallX = matrix(rnorm(10*3),ncol=3)
unif.2017YMi(smallX) # run the test
#>
#> Multivariate Test of Uniformity based on Interpoint Distances by Yang
#> and Modarres (2017)
#>
#> data: smallX
#> Q1 = 1126.7, p-value < 2.2e-16
#> alternative hypothesis: Sample smallX does not follow uniform distribution.
#>
# \donttest{
## empirical Type 1 error
## compare performances of three methods
niter = 1234
rec1 = rep(0,niter) # for Q1
rec2 = rep(0,niter) # Q2
rec3 = rep(0,niter) # Q3
for (i in 1:niter){
X = matrix(runif(50*10), ncol=50) # (n,p) = (10,50)
rec1[i] = ifelse(unif.2017YMi(X, type="Q1")$p.value < 0.05, 1, 0)
rec2[i] = ifelse(unif.2017YMi(X, type="Q2")$p.value < 0.05, 1, 0)
rec3[i] = ifelse(unif.2017YMi(X, type="Q3")$p.value < 0.05, 1, 0)
}
## print the result
cat(paste("\n* Example for 'unif.2017YMi'\n","*\n",
"* Type 1 error with Q1 : ", round(sum(rec1/niter),5),"\n",
"* Q2 : ", round(sum(rec2/niter),5),"\n",
"* Q3 : ", round(sum(rec3/niter),5),"\n",sep=""))
#>
#> * Example for 'unif.2017YMi'
#> *
#> * Type 1 error with Q1 : 0.05024
#> * Q2 : 0.04862
#> * Q3 : 0.05754
# }