tau34sq.normtest: The Tau34-squared Test: A Normality Test based on L-skew and... In lmomco: L-Moments, Censored L-Moments, Trimmed L-Moments, L-Comoments, and Many Distributions

Description

This function performs highly intriguing test for normality using L-skew (τ_3) and L-kurtosis (τ_4) computed from an input vector of data. The test is simultaneously focused on L-skew and L-kurtosis. Harri and Coble (2011) presented two types of normality tests based on these two L-moment ratios. Their first test is dubbed the τ_3τ_4 test. Those authors however conclude that a second test dubbed the τ^2_{3,4} test “in particular shows consistently high power against [sic] symmetric distributions and also against [sic] skewed distributions and is a powerful test that can be applied against a variety of distributions.”

A sample-size transformed quantity of the sample L-skew (\hatτ_3) is

Z(τ_3) = \hatτ_3 \times \frac{1}{√{0.1866/n + 0.8/n^2}}\mathrm{,}

which has an approximate Standard Normal distribution. A sample-sized transformation of the sample L-kurtosis (\hatτ_4) is

Z(τ_4)' = \hatτ_4 \times \frac{1}{√{0.0883/n}}\mathrm{,}

which also has an approximate Standard Normal distribution. A superior approximation for the variate of the Standard Normal distribution however is

Z(τ_4) = \hatτ_4 \times \frac{1}{√{0.0883/n + 0.68/n^2 + 4.9/n^3}}\mathrm{,}

and is highly preferred for the algorithms in tau34sq.normtest.

The τ_3τ_4 test (not implemented in tau34sq.normtest) by Harri and Coble (2011) can be constructed from the Z(τ_3) and Z(τ_4) statistics as shown, and a square rejection region constructed on an L-moment ratio diagram of L-skew versus L-kurtosis. However, the preferred method is the “Tau34-squared” test τ^2_{3,4} that can be developed by expressing an ellipse on the L-moment ratio diagram of L-skew versus L-kurtosis. The τ^2_{3,4} test statistic is defined as

τ^2_{3,4} = Z(τ_3)^2 + Z(τ_4)^2\mathrm{,}

which is approximately distributed as a χ^2 distribution with two degrees of freedom. The τ^2_{3,4} also is the expression of the ellipical region on the L-moment ratio diagram of L-skew versus L-kurtosis.

Usage

 1 2 tau34sq.normtest(x, alpha=0.05, pvalue.only=FALSE, getlist=TRUE, useHoskingZt4=TRUE, verbose=FALSE, digits=4) 

Arguments

 x A vector of values. alpha The α significance level. pvalue.only Only return the p-value of the test and superceeds the getlist argument. getlist Return a list of salient parts of the computations. useHoskingZt4 J.R.M. Hosking provided a better approximation Z(τ_4) in personal correspondance to Harri and Coble (2011) than the one Z(τ_4)' they first presented in their paper. This argument is a logical on whether this approximation should be used. It is highly recommended that useHoskingZt4 be left at the default setting. verbose Print a nice summary of the test. digits How many digits to report in the summary.

Value

An R list is returned if getlist argument is true. The list contents are

 SampleTau3 The sample L-skew. SampleTau4 The sample L-kurtosis. Ztau3 The Z-value of τ_3. Ztau4 The Z-value of τ_4. Tau34sq The τ^2_{3,4} value. ChiSq.2df The Chi-squared distribution nonexceedance probability. pvalue The p-value of the test. isSig A logical on whether the p-value is “statistically significant” based on the α value. source The source of the parameters: “tau34sq.normtest”.

W.H. Asquith

References

Harri, A., and Coble, K.H., 2011, Normality testing—Two new tests using L-moments: Journal of Applied Statistics, v. 38, no. 7, pp. 1369–1379.

pdfnor, plotlmrdia
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 HarriCoble <- tau34sq.normtest(rnorm(20), verbose=TRUE) ## Not run: # If this basic algorithm is run repeatedly with different arguments, # then the first three rows of table 1 in Harri and Coble (2011) can # basically be repeated. Testing by WHA indicates that even better # empirical alphas will be computed compared to those reported in that table 1. # R --vanilla --silent --args n 20 s 100 < t34.R # Below is file t34.R library(batch) # for command line argument parsing a <- 0.05; n <- 50; s <- 5E5 # defaults parseCommandArgs() # it will echo out those arguments on command line sims <- sapply(1:s, function(i) { return(tau34sq.normtest(rnorm(n), pvalue.only=TRUE)) }) p <- length(sims[sims <= a]) print("RESULTS(Alpha, SampleSize, EmpiricalAlpha)") print(c(a, n, p/s)) ## End(Not run)