Perform a Schweizer--Wolff Sigma test for \(\sigma_\mathbf{C}\) stemming from \(\mathrm{NULL} : \mathbf{C} = \mathbf{\Pi}\) (Independence copula, P), where \(\sigma_\mathbf{C}\) is defined under wolfCOP. There are no other known hypothesis tests for \(\sigma_\mathbf{C}\) in the literature.
This Schweizer--Wolff Sigma hypothesis test has been empirically tuned from small to large samples by extensive simulation, and, as implemented, the test is closely tied to the version of sample computation by wolfCOP using a particular form of the empirical copula (refer to that function for details). The wolfCOPtest function internally loads the wolfCOPtest_data_smlsam tables, and most users generally will not need to access that dataset themselves unless perhaps for checking veracity of the simulations.
wolfCOPtest(x, y, asuv=FALSE, aslist=TRUE, na.rm=TRUE, digits=6,
probs=c(0.90, 0.95, 0.98, 0.99, 0.995),
zmat=NULL, statf=mean, rndphi=20, usepade=FALSE,
ties.method=c("average", "first", "last", "random", "max", "min"), ...)Extensive list or named vector output the test is returned. For the list, the estimate contains duplicate information as statistic[1]; this is so that there is an estimate entry to parallel the return of cor.test(...) to help users write nomenclature similar calls between the functions.
Nonexceedance probabilities \(u\) in the \(X\) direction if asuv=TRUE, else data in the \(X\) direction for which nonexceedance probabilities will be computed by plotting-position formula. If x is a single value, it is assumed to be a previously computed \(\sigma_\mathbf{C}\) and y will be considered as the sample size. Note, statistical estimation is based on samples of \(n \ge 3\), if the sample size is less than this, then internally \(n = 3\) is set for the computations. The x can also be a two column data structure and the y will be taken from the second column;
Nonexceedance probabilities \(v\) in the \(Y\) direction if asuv=TRUE, else data in the \(Y\) direction for which nonexceedance probabilities will be computed by plotting-position formula (refer to lmomco::pp() function, but simply therank(...) function is used);
Logical identifying whether the x and y are already in nonexceedance probabilities or rather such need to be computed internally by plotting-position formula (refer to lmomco::pp() function, but simply the rank(...) function is used);
Logical to return a list of the test results rather than a vector;
A logical to trigger a complete.cases operation on internal matrix of the data as probabilities;
Digits for rounding before return;
Quantiles by nonexceedance probability to extract from the fitted distribution---these are common upper-tail critical values. If probs is empty, then 0.95 nonexceedance probability is silently used;
An optional matrix of four columns and rows equally those of the data values with columns 1 and 2 containing, respectively, the lower and upper limits of the \(u\) and columns 3 and 4 containing, respectively, the lower and upper limits of \(v\). This zmat feature provides for support if data censoring is involved and simulation between the limits made (refer to Examples). Note, if zmat is given, then ties.method is set "random" and asuv is set false;
Statistical function for reducing simulated \(\sigma\) values (mean or median suggested), but a user could plot(density(result$rand_sigma)) and reach their own decisions on centrality measure;
A multiplier on the number of ties or censored values to drive simulation of samples as part of populating the rand_sigma element, when applicable, on the function return;
A logical to switch, on estimation of the empirical L-moments of the logit transformed simulations, between (1) power-exponent optimized regression equations, or (2) optimized Padé Approximant forms;
Argument of the same name for rank, but if there are ties, asuv is set false, and ties.method is set to random, then simulation is made internally on the ranking and statf used to compute the \(\sigma\) estimate;
Additional arguments to pass to the lmomco::pp() function.
W.H. Asquith
The implementation here is based on Monte Carlo simulations of \(\mathbf{\Pi}\) and computation of the L-moments of a logit transform of the computed \(\sigma_\mathbf{\Pi}\) for which nonlinear regression of the L-moments to the sample size have been created. Development scripts for the simulations are located in the directory inst/make_wolfCOPtest/ of copBasic sources.
The logit transformation is defined as
$$\mathrm{logit}\bigl(\sigma_\mathbf{C}\bigr) = \mathrm{log}\frac{\sigma_\mathbf{C}}{1-\sigma_\mathbf{C}} = \eta\mbox{,} $$ and its inverse is defined as $$ \sigma_\mathbf{C} = \mathrm{logit}^{(-1)}(\eta) = \frac{1}{1 + \mathrm{exp}(-\eta)}\mbox{.} $$
Sample-sample empirical distributions (\(n \in 3, \cdots, 40\)) will have p-values reported on output and missing for \(n \ge 41\) (refer to wolfCOPtest_data_smlsam for more details).
The predicted L-moments are used to drive from the lmomco package the Pearson type III (PE3) (parpe3, cdfpe3, quape3) of the logit transform of \(\sigma_\mathbf{\Pi}\) to compute the p-value and supporting information.
Evaluation of an L-moment ratio diagram (refer to lmomco functions plotlmrdia() and lmrdia()) shows a change from a generalized normal distribution (GNO) to PE3 at about \(n = 40\), but inspection of upper-tail empirical distributions (and hence p-values in the practical range for \(\mathrm{NULL}\) rejection) suggest the PE3 tail is better choice for overall application. The wolfCOPtest function, therefore, exclusively uses the PE3.
To conclude, the figure below shows the L-moment ratio diagram of the L-skew and L-kurtosis diagram for the logit transform of the L-moments of the \(\hat\sigma_\mathbf{C}\) based on EMPIRgrid_fast in the aforementioned build directory of the copBasic package. The figure is based on nearly \(900\) million simulations summed across a representative range of sample sizes \(n \in 8, \cdots 15001\), and provides support for the decision by the author to use the PE3 as the distribution model for the hypothesis test.

wolfCOP, wolfCOPsamc, wolfCOPtest_data_smlsam