Package 'symmetry'

Title: Testing for Symmetry of Data and Model Residuals
Description: Implementations of a large number of tests for symmetry and their bootstrap variants, which can be used for testing the symmetry of random samples around a known or unknown mean. Functions are also there for testing the symmetry of model residuals around zero. Currently, the supported models are linear models and generalized autoregressive conditional heteroskedasticity (GARCH) models (fitted with the 'fGarch' package). All tests are implemented using the 'Rcpp' package which ensures great performance of the code.
Authors: Blagoje Ivanović [aut, cre] Bojana Milošević [aut] Marko Obradović [aut]
Maintainer: Blagoje Ivanović <[email protected]>
License: MIT + file LICENSE
Version: 0.2.3
Built: 2024-10-29 06:42:07 UTC
Source: CRAN

Help Index


Mixture of 2 normal distributions

Description

Generates random numbers from a mixture of 2 normal distributions

Usage

rmixnorm(n, mean1 = 0, sd1 = 1, mean2 = 0, sd2 = 1, p = 0.5)

Arguments

n

number of observations

mean1

mean of the first normal

sd1

standard deviation of the first normal

mean2

mean of the second normal

sd2

standard deviation of the second normal

p

probability of the first normal

Value

Vector of random numbers from the specified mixture of normals.


Azzalini skew logistic distribution

Description

Generates random numbers from the skew logistic distribution

Usage

rsl(n = 1, xi = 0, omega = 1, alpha = 0, dp = NULL)

Arguments

n

sample size.

xi

vector of location parameters.

omega

vector of (positive) scale parameters.

alpha

vector of slant parameters.

dp

a vector of length 3 whose elements represent the parameters described above. If dp is specified, the individual parameters cannot be set.

Value

Vector of random numbers from Azzalini skew logistic distribution.


symmetry: A package which implements tests for symmetry of random samples, linear models and generalized autoregressive conditional heteroskedasticity (GARCH) models

Description

The package contains a large number of tests for symmetry (and their bootstrap variants), which can be used to test the symmetry of random samples or of model residuals. Currently, the supported models are linear models and generalized autoregressive conditional heteroskedasticity (GARCH) models (fitted with the 'fGarch' package). The tests are implemented using the 'Rcpp' package which ensures great performance.

Details

To see the available tests, see TestStatistics

For documentation on how to perform the tests, see symmetry_test


Perform symmetry tests

Description

This is a generic function used to perform symmetry tests on numeric vectors or objects of class lm (linear models) and objects of class fGARCH (GARCH mdels fitted with the fGarch package).

Usage

symmetry_test(x, ...)

## Default S3 method:
symmetry_test(
  x,
  stat,
  mu = NULL,
  bootstrap = TRUE,
  B = 1000,
  boot_method = c("sign", "reflect"),
  trim = 0,
  k = 0,
  ...
)

## S3 method for class 'lm'
symmetry_test(
  x,
  stat,
  B = 1000,
  boot_method = c("sign", "reflect"),
  k = 0,
  ...
)

## S3 method for class 'fGARCH'
symmetry_test(
  x,
  stat,
  B = 1000,
  burn = 0,
  boot_method = c("sign", "reflect"),
  k = 0,
  approximate = FALSE,
  ...
)

Arguments

x

an object of class numeric, lm or fGARCH

...

not used

stat

a character vector indicating the test statistic to be used (see Available Test Statistics)

mu

the centre parameter around which to test symmetry

bootstrap

a logical indicating whether to use bootstrap

B

the number of bootstrap replications

boot_method

the method of bootstrap sample generation (see Details)

trim

the trim value used for estimating the centre (as used in "mean")

k

the k parameter of the statistic, ignored if the test statistic doesn't depend on a parameter (see Test Statistics)

burn

the number of elements to remove from the beginning of the time series for testing

approximate

a logical indicating whether to use the faster approximate bootstrap method (see Details)

Details

The tests are performed using bootstrap procedures or using asymptotic results, where applicable. Currently, two methods of generating a bootstrap sample from the null distribution are available. The "sign" method generates the bootstrap sample by multiplying the existing sample by -1 or 1 at random (with equal probabilities), essentially randomizing the sign of the data, giving a symmetric distribution. The "reflect" method reflects the sample around zero and samples length(x) elements with replacement. In practice, it has been shown that the "sign" method is almost always better, thus is the default.

For numeric data, the tests can be performed around a known (parameter "mu") or unknown centre. When the centre is known, the bootstrap method gives the same results as a Monte Carlo simulation of the p value, for tests which are distribution free. For unknown centre (when mu = NULL), bootstrap must be used and the estimate of the centre used is the trimmed mean, with trim parameter "trim". By default, the mean is taken (trim = 0).

For linear models, the tests are based on a bootstrap procedure as in (Allison and Pretorius 2017) and are used to test the symmetry of the residuals around zero.

For GARCH models (must be fitted with the 'fGarch' package), the tests are also based on bootstrap and test for symmetry of the residuals around zero. An approximation of the bootstrap procedure is available where the residuals are treated as iid data, which is much faster and has been shown to give similar results to the default bootstrap procedure (described in (Klar et al. 2012)).

For a comparison of the performance of various tests of symmetry around an unknown centre, see (Milošević and Obradović 2019)).

Value

An object of class "htest" containing the results of the testing.

References

Allison JS, Pretorius C (2017). “A Monte Carlo evaluation of the performance of two new tests for symmetry.” Computational Statistics, 32(4), 1323–1338. doi:10.1007/s00180-016-0680-4.

Klar B, Lindner FL, Meintanis SG (2012). “Specification tests for the error distribution in GARCH models.” Computational Statistics & Data Analysis, 56(11), 3587–3598. doi:10.1016/j.csda.2010.05.029.

Milošević B, Obradović M (2019). “Comparison of efficiencies of some symmetry tests around an unknown centre.” Statistics, 53(1), 43–57.

Examples

set.seed(1)

# IID samples
x <- rnorm(50)
symmetry_test(x, "MOI", bootstrap = FALSE, k = 3, mu = 0)
symmetry_test(x, "MOI", bootstrap = TRUE, k = 3, mu = 0)
symmetry_test(x, "MOI", bootstrap = TRUE, k = 3)
x <- rsl(50, alpha = 1.5)
symmetry_test(x, "MOI", bootstrap = FALSE, k = 3, mu = 0)
symmetry_test(x, "MOI", bootstrap = TRUE, k = 3, mu = 0)
symmetry_test(x, "MOI", bootstrap = TRUE, k = 3)

# Linear models
lin_model <- lm(dist ~ speed, cars)
symmetry_test(lin_model, "B1")

# Garch models
library(fGarch)
specskew19 = fGarch::garchSpec(model = list(omega = 0.1,
                                    alpha = 0.3,
                                    beta = 0.3,
                                    skew = 1.9),
                                    cond.dist = "snorm")

x <- fGarch::garchSim(specskew19, n = 500)
g <- fGarch::garchFit(~garch(1,1), x, cond.dist = "QMLE",
              include.mean = FALSE, trace = FALSE)
symmetry_test(g, "FM", B=400, burn = 100) # slower
symmetry_test(g, "FM", B=400, burn = 100, approximate = TRUE)

Available test statistics for symmetry tests

Description

The list of implemented test statistics and their functions

Usage

B1(X)

BH2(X)

BHC1(X, k)

BHC2(X, k)

BHI(X)

BHK(X)

CM(X)

FM(X)

HM(X, k)

K2U(X)

K2(X)

KS(X)

SGN(X)

WCX(X)

MGG(X)

MI(X)

MOI(X, k)

MOK(X, k)

NAC1(X, k)

NAC2(X, k)

NAI(X, k)

NAK(X, k)

RW(X)

Arguments

X

the numeric vector for which to calculate the test statistic

k

the 'k' parameter in the formula (if applicable)

Details

Below is a list of the implemented test statistics in the package. Each statistic is listed by it's name, a code string (e.g. 'B1', CM','MOI') and the formula of the statistic which is evaluated. The code string is used as an argument to the symmetry_test function. Some statistics depend on a parameter 'k' which can be seen from the formulas and is also passed as an argument.

Each statistic is implemented as a function with the same name as the code string, so the name of the function is passed as the argument "stat" to the symmetry_test function

Value

The value of the test statistic.

Test statistics

The list of available statitics in the format "code(s) : name (reference)"

  • MI : The Mira test statistic (see (Mira 1999))

  • CM : The Cabilio–Masaro test statistic (see (Cabilio and Masaro 1996))

  • MGG : The Miao, Gel and Gastwirth test statistic (see (Miao et al. 2006))

  • B1 : The b1\sqrt{b_1} test statistic (see (Milošević and Obradović 2019))

  • KS : The Kolmogorov–Smirnov test statistic (see (Milošević and Obradović 2019))

  • SGN : The Sign test statistic (see (Milošević and Obradović 2019))

  • KS : The Wilcoxon test statistic (see (Milošević and Obradović 2019))

  • FM : The characterization based test statistic (see (Feuerverger et al. 1977))

  • RW : The Rothman-Woodroofe test statistic (see (Gaigall 2019))

  • BHI : The Litvinova test statistic (see (Litvinova 2001))

  • BHK : The Baringhaus and Henze supremum-type test statistic (see (Baringhaus and Henze 1992))

  • BH2 : The Baringhaus-Henze test statistic (see (Baringhaus and Henze 1992))

  • MOI and MOK : The Milošević and Obradović test statistics (see (Milošević and Obradović 2016))

  • NAI and NAK : The Nikitin and Ahsanullah test statistics (see (Nikitin and Ahsanullah 2015))

  • K2 and K2U : The Božin, Milošević, Nikitin and Obradović Kolmogorov type statistics based on V- and U- statistics respectively (see (Božin et al. 2018))

  • NAC1, NAC2, BHC1 and BHC2 : The Allison and Pretorius test statistics (see (Allison and Pretorius 2017))

References

Allison JS, Pretorius C (2017). “A Monte Carlo evaluation of the performance of two new tests for symmetry.” Computational Statistics, 32(4), 1323–1338. doi:10.1007/s00180-016-0680-4.

Baringhaus L, Henze N (1992). “A characterization of and new consistent tests for symmetry.” Communications in statistics-theory and methods, 21(6), 1555–1566. doi:10.1080/03610929208830863.

Božin V, Milošević B, Nikitin Y, Obradović M (2018). “New Characterization-Based Symmetry Tests.” Bulletin of the Malaysian Mathematical Sciences Society, 10–1007. doi:10.1007/s40840-018-0680-3.

Cabilio P, Masaro J (1996). “A simple test of symmetry about an unknown median.” Canadian Journal of Statistics, 24(3), 349–361. doi:10.2307/3315744.

Feuerverger A, Mureika RA, others (1977). “The empirical characteristic function and its applications.” The Annals of Statistics, 5(1), 88–97. doi:10.1214/aos/1176343742.

Gaigall D (2019). “Rothman-Woodroofe symmetry test statistic revisited.” Computational Statistics & Data Analysis, 106837.

Litvinova VV (2001). “New nonparametric test for symmetry and its asymptotic efficiency.” Vestnik St. Petersburg University Mathematics, 34(4), 12–14.

Miao W, Gel YR, Gastwirth JL (2006). “A new test of symmetry about an unknown median.” In Random Walk, Sequential Analysis And Related Topics: A Festschrift in Honor of Yuan-Shih Chow, 199–214. World Scientific.

Milošević B, Obradović M (2016). “Characterization based symmetry tests and their asymptotic efficiencies.” Statistics & Probability Letters, 119, 155–162.

Milošević B, Obradović M (2019). “Comparison of efficiencies of some symmetry tests around an unknown centre.” Statistics, 53(1), 43–57.

Mira A (1999). “Distribution-free test for symmetry based on Bonferroni's measure.” Journal of Applied Statistics, 26(8), 959–972. doi:10.1080/02664769921963.

Nikitin Y, Ahsanullah M (2015). “New U-empirical Tests of Symmetry Based on Extremal Order Statistics, and their Efficiencies.” In Mathematical Statistics and Limit Theorems, 231–248. Springer. doi:10.1007/978-3-319-12442-1_13.