Given a multivariate sample \(X\) and hypothesized covariance matrix \(\Sigma_0\), it tests $$H_0 : \Sigma_x = \Sigma_0\quad vs\quad H_1 : \Sigma_x \neq \Sigma_0$$ using the procedure by Fisher (2012). This method utilizes the generalized form of the inequality $$\frac{1}{p} \sum_{i=1}^p (\lambda_i^r - 1)^{2s} \ge 0$$ and offers two types of test statistics \(T_1\) and \(T_2\) corresponding to the case \((r,s)=(1,2)\) and \((2,1)\) respectively.

cov1.2012Fisher(X, Sigma0 = diag(ncol(X)), type)

Arguments

X

an \((n\times p)\) data matrix where each row is an observation.

Sigma0

a \((p\times p)\) given covariance matrix.

type

1 or 2 for corresponding statistic from the paper.

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

Fisher TJ (2012). “On testing for an identity covariance matrix when the dimensionality equals or exceeds the sample size.” Journal of Statistical Planning and Inference, 142(1), 312--326. ISSN 03783758.

Examples

## CRAN-purpose small example
smallX = matrix(rnorm(10*3),ncol=3)
cov1.2012Fisher(smallX) # run the test
#> 
#> 	One-sample Test for Covariance Matrix by Fisher (2012).
#> 
#> data:  smallX
#> T = -3.0802, p-value = 0.999
#> alternative hypothesis: true covariance is different from Sigma0.
#> 

# \donttest{
## empirical Type 1 error 
niter   = 1000
counter1 = rep(0,niter)  # p-values of the type 1
counter2 = rep(0,niter)  # p-values of the type 2
for (i in 1:niter){
  X = matrix(rnorm(50*5), ncol=50) # (n,p) = (5,50)
  counter1[i] = ifelse(cov1.2012Fisher(X, type=1)$p.value < 0.05, 1, 0)
  counter2[i] = ifelse(cov1.2012Fisher(X, type=2)$p.value < 0.05, 1, 0)
}

## print the result
cat(paste("\n* Example for 'cov1.2012Fisher' \n","*\n",
"* empirical error with statistic 1 : ", round(sum(counter1/niter),5),"\n",
"* empirical error with statistic 2 : ", round(sum(counter2/niter),5),"\n",sep=""))
#> 
#> * Example for 'cov1.2012Fisher' 
#> *
#> * empirical error with statistic 1 : 0.057
#> * empirical error with statistic 2 : 0.041
# }