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, Bandwidth Inputs And Formula Interface
These arguments identify the data, statistic variant, and any supplied bandwidth.
- bw
a numeric (scalar) bandwidth. Defaults to plug-in (see details below).
- 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.method
a character string used to specify the bootstrap method. Can be set as
iidorgeom(see below for details). Defaults toiid.- boot.num
an integer value specifying the number of bootstrap replications to use. Defaults to
399.- random.seed
an integer used to seed R's random number generator. This is to ensure replicability. Defaults to 42.
Additional Arguments
Further arguments are passed to the bandwidth-selection routines used by the test.
- ...
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.
Book And Method Pointers
npsymtest tests symmetry by comparing the density or
probability function of the observed data with that of the data
reflected around the relevant center. The same entropy-distance logic
used by the univariate density tests underlies the statistic.
For book-length background, see Racine (2019), Chapter 2 Continuous Density and Cumulative Distribution Functions and Li and Racine (2007), Chapter 13 Nonsmoothing Tests and Chapter 12 Model Specification Tests where related density-feature tests are treated.
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
Documentation guide: see np.kernels for kernels, np.options for global options, and plot for plotting options.
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)
if (interactive()) Sys.sleep(5)
## Symmetric discrete probability distribution function
x <- factor(rbinom(n,2,.5))
npsymtest(x,boot.num=99)
if (interactive()) Sys.sleep(5)
## Asymmetric continuous distribution function
y <- rchisq(n,df=2)
npsymtest(y,boot.num=99)
if (interactive()) 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")
} # }