Learn R Programming

lmomco (version 1.7.3)

tau34sq.normtest: The Tau34-squared Test: A Normality Test based on L-skew and L-kurtosis and an Elliptical Rejection Region on an L-moment Ratio Diagram

Description

This function performs highly intriguing test for normality using L-skew ($\tau_3$) and L-kurtosis ($\tau_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 $\tau_3\tau_4$ test. Those authors however conclude that a second test dubbed the $\tau^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\tau_3$) is

$$Z(\tau_3) = \hat\tau_3 \times \frac{1}{\sqrt{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\tau_4$) is

$$Z(\tau_4)' = \hat\tau_4 \times \frac{1}{\sqrt{0.0883/n}}\mathrm{,}$$

which also has an approximate standard normal distribution. A superior approximation to the standard normal distribution however is

$$Z(\tau_4) = \hat\tau_4 \times \frac{1}{\sqrt{0.0883/n + 0.68/n^2 + 4.9/n^3}}\mathrm{,}$$

and this expression is highly preferred for the algorithms in the tau34sq.normtest() function.

The $\tau_3\tau_4$ (not implemented in tau34sq.normtest()) test by Harri and Coble (2011) can be constructed from the $Z(\tau_3)$ and $Z(\tau_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 $\tau^2_{3,4}$ that can be developed by expressing an ellipse on the L-moment ratio diagram of L-skew versus L-kurtosis. The $\tau^2_{3,4}$ test statistic is defined as

$$\tau^2_{3,4} = Z(\tau_3)^2 + Z(\tau_4)^2\mathrm{,}$$

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

Usage

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 alpha-level of significance.
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(\tau_4)$ in personal correspondance to Harri and Coble (2011) than the one $Z(\tau_4)'$ they first presented in their paper. A logical on whether this approximation should be used. It is highly recommended
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
  • SampleTau3The sample L-skew.
  • SampleTau4The sample L-kurtosis.
  • Ztau3The Z-value of $\tau_3$.
  • Ztau4The Z-value of $\tau_4$.
  • Tau34sqThe $\tau^2_{3,4}$ value.
  • ChiSq.2dfThe Chi-squared distribution nonexceedance probability.
  • pvalueThe p-value of the test.
  • isSigA logical on whether the p-value is statistically significant based on the $\alpha$ value.
  • sourceThe source of the parameters: tau34sq.normtest.

References

Harri, A. and Coble, K.H., 2011, Normality testing---Two new tests using L-moments: Journal of Applied Statistics, 38(7), 1369--1379.

See Also

lmoms, pdfnor, plotlmrdia

Examples

Run this code
HarriCoble <- tau34sq.normtest(rnorm(20), verbose=TRUE)

# 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))

Run the code above in your browser using DataLab