Kernel Consistent Density Asymmetry Test with Mixed Data Types
np.symtest.Rdnpsymtest implements the consistent metric entropy test of
asymmetry as described in Maasoumi and Racine (2009).
Arguments
- data
a vector containing the variable.
- method
a character string used to specify whether to compute the integral version or the summation version of the statistic. Can be set as
integrationorsummation(see below for details). Defaults tointegration.- boot.num
an integer value specifying the number of bootstrap replications to use. Defaults to
399.- bw
a numeric (scalar) bandwidth. Defaults to plug-in (see details below).
- boot.method
a character string used to specify the bootstrap method. Can be set as
iidorgeom(see below for details). Defaults toiid.- random.seed
an integer used to seed R's random number generator. This is to ensure replicability. Defaults to 42.
- ...
additional arguments supplied to specify the bandwidth type, kernel types, and so on. This is used since we specify bw as a numeric scalar and not a
bandwidthobject, and is of interest if you do not desire the default behaviours. To change the defaults, you may specify any ofbwscaling,bwtype,ckertype,ckerorder,ukertype,okertype.
Value
npsymtest returns an object of type symtest with the
following components
- Srho
the statistic
Srho- Srho.bootstrap
contains the bootstrap replications of
Srho- P
the P-value of the statistic
- boot.num
number of bootstrap replications
- data.rotate
the rotated data series
- bw
the numeric (scalar) bandwidth
summary supports object of type symtest.
References
Granger, C.W. and E. Maasoumi and J.S. Racine (2004), “A dependence metric for possibly nonlinear processes”, Journal of Time Series Analysis, 25, 649-669.
Maasoumi, E. and J.S. Racine (2009), “A robust entropy-based test of asymmetry for discrete and continuous processes,” Econometric Reviews, 28, 246-261.
Politis, D.N. and J.P. Romano (1994), “The stationary bootstrap,” Journal of the American Statistical Association, 89, 1303-1313.
Author
Tristen Hayfield tristen.hayfield@gmail.com, Jeffrey S. Racine racinej@mcmaster.ca
Details
npsymtest computes the nonparametric metric entropy (normalized
Hellinger of Granger, Maasoumi and Racine (2004)) for testing
symmetry using the densities/probabilities of the data and the
rotated data, \(D[f(y), f(\tilde y)]\). See
Maasoumi and Racine (2009) for details. Default bandwidths are of the
plug-in variety (bw.SJ for continuous variables and
direct plug-in for discrete variables).
For bootstrapping the null distribution of the statistic, iid
conducts simple random resampling, while geom conducts Politis
and Romano's (1994) stationary bootstrap using automatic block length
selection via the b.star function in the
np package. See the boot package for
details.
The summation version of this statistic may be numerically unstable
when y is sparse (the summation version involves division of
densities while the integration version involves differences). Warning
messages are produced should this occur (‘integration recommended’)
and should be heeded.
Usage Issues
When using data of type factor it is crucial that the
variable not be an alphabetic character string (i.e. the factor must
be integer-valued). The rotation is conducted about the median after
conversion to type numeric which is then converted back
to type factor. Failure to do so will have unpredictable
results. See the example below for proper usage.
Examples
if (FALSE) { # \dontrun{
set.seed(1234)
n <- 100
## Asymmetric discrete probability distribution function
x <- factor(rbinom(n,2,.8))
npsymtest(x,boot.num=99)
Sys.sleep(5)
## Symmetric discrete probability distribution function
x <- factor(rbinom(n,2,.5))
npsymtest(x,boot.num=99)
Sys.sleep(5)
## Asymmetric continuous distribution function
y <- rchisq(n,df=2)
npsymtest(y,boot.num=99)
Sys.sleep(5)
## Symmetric continuous distribution function
y <- rnorm(n)
npsymtest(y,boot.num=99)
## Time-series bootstrap
ar.series <- function(phi,epsilon) {
n <- length(epsilon)
series <- numeric(n)
series[1] <- epsilon[1]/(1-phi)
for(i in 2:n) {
series[i] <- phi*series[i-1] + epsilon[i]
}
return(series)
}
## Asymmetric time-series
yt <- ar.series(0.5,rchisq(n,df=3))
npsymtest(yt,boot.num=99,boot.method="geom")
## Symmetric time-series
yt <- ar.series(0.5,rnorm(n))
npsymtest(yt,boot.num=99,boot.method="geom")
} # }