cramer.test | R Documentation |
Perform Cramé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 |
replicates |
Number of bootstrap-replicates taken to obtain critical value. The default
is |
sim |
Type of Monte-Carlo-bootstrap method or eigenvalue method. Possible values are
|
just.statistic |
Boolean variable. If |
kernel |
Character-string giving the name of the kernel function. 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 |
The Cramé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 given 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). Test performance was investigated in the below referenced 2010 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
Baringhaus, L. and Franz, C. (2010) Rigid motion invariant two-sample tests, Statistica Sinica 20, 1333-1361
The test of Bahr is also discussed in:
Bahr, R. (1996) Ein neuer Test fuer das mehrdimensionale Zwei-Stichproben-Problem bei allgemeiner Alternative, German, Ph.D. thesis, University of Hanover
# 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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.