dwilcox(x, m, n) pwilcox(q, m, n) qwilcox(p, m, n) rwilcox(nn, m, n)
x,q
| vector of quantiles. |
p
| vector of probabilities. |
nn
| number of observations to generate. |
m,n
| numbers of observations in the first and second sample, respectively. Must be positive integers less than 50. |
m
and n
, respectively. dwilcox
gives the density,
pwilcox
gives the distribution function, qwilcox
gives
the quantile function, and rwilcox
generates random deviates.
This distribution is obtained as follows. Let x
and y
be two random, independent samples of size m
and n
.
Then the Wilcoxon rank sum statistic is the number of all pairs
(x[i], y[j])
for which y[j]
is not greater than
x[i]
. This statistic takes values between 0
and
m * n
, and its mean and variance are m * n / 2
and
m * n * (m + n + 1) / 12
, respectively.
dsignrank
etc, for the one-sample Wilcoxon
rank statistic.x <- -1:(4*6 + 1) fx <- dwilcox(x, 4, 6) all(fx == dwilcox(x, 6, 4)) Fx <- pwilcox(x, 4, 6) all(abs(Fx - cumsum(fx)) < 10 * .Machine$double.eps) layout(rbind(1,2),width=1,heights=c(3,2)) plot(x, fx,type='h', col="violet", main= "Probabilities (density) of Wilcoxon-Statist.(n=6,m=4)") plot(x, Fx,type="s", col="blue", main= "Distribution of Wilcoxon-Statist.(n=6,m=4)") abline(h=0:1, col="gray20",lty=2) layout(1)# set back N <- 200 hist(U <- rwilcox(N, m=4,n=6), breaks=0:25 - 1/2, border="red", col="pink", sub = paste("N =",N)) mtext("N * f(x), f() = true ``density''", side=3, col="blue") lines(x, N*fx, type='h', col='blue', lwd=2) points(x, N*fx, cex=2) ## Better is a Quantile-Quantile Plot qqplot(U, qw <- qwilcox((1:N - 1/2)/N, m=4,n=6), main = paste("Q-Q-Plot of empirical and theoretical quantiles", "Wilcoxon Statistic, (m=4, n=6)",sep="\n")) n <- as.numeric(names(print(tU <- table(U)))) text(n+.2, n+.5, labels=tU, col="red")