cramer-packge {cramer} | R Documentation |
Perform Cram\mbox{\'e}
r-test for two-sample-problem. Both univariate and
multivariate data is possible. For calculation of the critical value
Monte-Carlo-bootstrap-methods and eigenvalue-methods are available. For the bootstrap
access ordinary and permutation methods can be chosen as well as the number
of bootstrap-replicates taken.
cramer.test(x,y,conf.level=0.95,replicates=1000,
sim="ordinary",just.statistic=FALSE,
kernel="phiCramer", maxM=2^14, K=160)
x |
First set of observations. Either in vector form (univariate) or in a matrix with one observation per row (multivariate). |
y |
Second set of observations. Same dimension as |
conf.level |
Confidence level of test. The default is |
sim |
Type of Monte-Carlo-bootstrap method or eigenvalue method. Possible values are
|
replicates |
Number of bootstrap-replicates taken to obtain critical value. The default is |
maxM |
Gives the maximum number of points used for the fast fourier transform. When using Monte-Carlo-bootstrap methods, this variable is unused. |
K |
Gives the upper value up to which the integral for the calculation of the
distribution function out of the characteristic function (Gurlands formula) is
evaluated. The default ist 160. Careful: When increasing
Thus, if just |
just.statistic |
Boolean variable. If |
kernel |
Character-string giving the name of the kernel function. The default is |
The Cram\mbox{\'e}
r-statistic is given by
T_{m,n} = \frac{mn}{m+n}\biggl(\frac{2}{mn}\sum_{i,j}^{m,n}\phi(\|\vec{X}_i-\vec{Y}_j\|^2)-\frac{1}{m^2}\sum_{i,j=1}^m\phi(\|\vec{X}_{i}-\vec{X}_{j}\|^2)
-\frac{1}{n^2}\sum_{i,j=1}^n\phi(\|\vec{Y}_{i}-\vec{Y}_{j}\|^2)\biggr),
The function \phi
is the kernel function mentioned in the Parameters
section.
The proof that the Monte-Carlo-Bootstrap and eigenvalue methods work is given in the reference
listed below. Other build-in kernel functions are
\phi_{Cramer}(z)=\sqrt{z}/2
(recommended for location alternatives),
\phi_{Bahr}(z)=1-\exp(-z/2)
(recommended for dispersion as well as location alternatives),
\phi_{log}(z)=\log(1+z)
(preferrably for location alternatives),
\phi_{FracA}(z)=1-\frac{1}{1+z}
(preferrably for dispersion alternatives) and
\phi_{FracB}(z)=1-\frac{1}{(1+z)^2}.
(also for dispersion alternatives). A further analysis of the test performance for these kernels will be included in a further publication. The idea of using this statistic is due to L. Baringhaus, University of Hanover.
The returned value is an object of class "cramertest"
, containing the following
components:
method |
Describing the test in words. |
d |
Dimension of the observations. |
m |
Number of |
n |
Number of |
statistic |
Value of the Cram |
conf.level |
Confidence level for the test. |
crit.value |
Critical value calculated by bootstrap method, eigenvalue method, respectively. When using the eigenvalue method, the distribution under the hypothesis will be interpolated linearly. |
p.value |
Estimated p-value of the test. |
result |
Contains |
sim |
Method used for obtaining the critical value. |
replicates |
Number of bootstrap-replicates taken. |
ev |
Contains eigenvalues and eigenfunctions when using the eigenvalue-method to obtain the critical value |
hypdist |
Contains the via fft reconstructed distribution function under the hypothesis. |
The test and its properties is described in:
Baringhaus, L. and Franz, C. (2004) On a new multivariate two-sample test, Journal of Multivariate Analysis, 88, p. 190-206
Franz, C. (2000) Ein statistischer Test fuer das mehrdimensionale Zweistichproben-Problem, German, Diploma thesis, University of Hanover.
The test of Bahr so far is only mentioned in:
Bahr, R. (1996) Ein neuer Test fuer das mehrdimensionale Zwei-Stichproben-Problem bei allgemeiner Alternative, German, Ph.D. thesis, University of Hanover.
The eigenvalue method will be described in a forthcoming article.
# comparison of two univariate normal distributions
x<-rnorm(20,mean=0,sd=1)
y<-rnorm(50,mean=0.5,sd=1)
cramer.test(x,y)
# comparison of two multivariate normal distributions with permutation test:
# library "MASS" for multivariate routines (included in package "VR")
# library(MASS)
# x<-mvrnorm(n=20,mu=c(0,0),Sigma=diag(c(1,1)))
# y<-mvrnorm(n=50,mu=c(0.3,0),Sigma=diag(c(1,1)))
# cramer.test(x,y,sim="permutation")
# comparison of two univariate normal distributions with Bahrs Kernel
phiBahr<-function(x) return(1-exp(-x/2))
x<-rnorm(20,mean=0,sd=1)
y<-rnorm(50,mean=0,sd=2)
cramer.test(x,y,sim="eigenvalue",kernel="phiBahr")