bws_cdf {BWStest} | R Documentation |
Computes the CDF of the Baumgartner-Weiss-Schindler test statistic under the null hypothesis of equal distributions.
bws_cdf(b, maxj = 5L, lower_tail = TRUE)
b |
a vector of BWS test statistics. |
maxj |
the maximum value of j to take in the approximate computation of the CDF via equation (2.5). Baumgartner et. al. claim that a value of 3 is sufficient. |
lower_tail |
boolean, when |
Given value b, computes the CDF of the BWS statistic under the null, denoted as Psi(b) by Baumgartner et al. The CDF is computed from equation (2.5) via numerical quadrature.
The expression for the CDF contains the integral
\int_0^1 \frac{1}{√{r^3 (1-r)}} \mathrm{exp}≤ft(\frac{rb}{8} - \frac{π^2 (4j+1)^2}{8rb}\right) \mathrm{dr}
By making the change of variables x = 2r - 1, this can be re-expressed as an integral of the form
\int_{-1}^1 \frac{1}{√{1-x^2}} f(x) \mathrm{dx},
for some function f(x) involving b and j. This integral can be approximated via Gaussian quadrature using Chebyshev nodes (of the first kind), which is the approach we take here.
A vector of the CDF of b, Psi(b).
Steven E. Pav shabbychef@gmail.com
W. Baumgartner, P. Weiss, H. Schindler, 'A nonparametric test for the general two-sample problem', Biometrics 54, no. 3 (Sep., 1998): pp. 1129-1135. http://doai.io/10.2307/2533862
# do it 500 times set.seed(123) bvals <- replicate(500, bws_stat(rnorm(50),rnorm(50))) pvals <- bws_cdf(bvals) # these should be uniform! ## Not run: plot(ecdf(pvals)) ## End(Not run) # compare to Table 1 of Baumgartner et al. bvals <- c(1.933,2.493,3.076,3.880,4.500,5.990) tab1v <- c(0.9,0.95,0.975,0.990,0.995,0.999) pvals <- bws_cdf(bvals,lower_tail=TRUE) show(data.frame(B=bvals,BWS_psi=tab1v,our_psi=pvals))