kruskalTest {PMCMRplus} | R Documentation |
Kruskal-Wallis Rank Sum Test
Description
Performs a Kruskal-Wallis rank sum test.
Usage
kruskalTest(x, ...)
## Default S3 method:
kruskalTest(x, g, dist = c("Chisquare", "KruskalWallis", "FDist"), ...)
## S3 method for class 'formula'
kruskalTest(
formula,
data,
subset,
na.action,
dist = c("Chisquare", "KruskalWallis", "FDist"),
...
)
Arguments
x |
a numeric vector of data values, or a list of numeric data vectors. |
... |
further arguments to be passed to or from methods. |
g |
a vector or factor object giving the group for the
corresponding elements of |
dist |
the test distribution. Defaults's to |
formula |
a formula of the form |
data |
an optional matrix or data frame (or similar: see
|
subset |
an optional vector specifying a subset of observations to be used. |
na.action |
a function which indicates what should happen when
the data contain |
Details
For one-factorial designs with non-normally distributed
residuals the Kruskal-Wallis rank sum test can be performed to test
the H_0: F_1(x) = F_2(x) = \ldots = F_k(x)
against
the H_\mathrm{A}: F_i (x) \ne F_j(x)~ (i \ne j)
with at least
one strict inequality.
Let R_{ij}
be the joint rank of X_{ij}
,
with R_{(1)(1)} = 1, \ldots, R_{(n)(n)} = N, ~~ N = \sum_{i=1}^k n_i
,
The test statistic is calculated as
H = \sum_{i=1}^k n_i \left(\bar{R}_i - \bar{R}\right) / \sigma_R,
with the mean rank of the i
-th group
\bar{R}_i = \sum_{j = 1}^{n_{i}} R_{ij} / n_i,
the expected value
\bar{R} = \left(N +1\right) / 2
and the expected variance as
\sigma_R^2 = N \left(N + 1\right) / 12.
In case of ties the statistic H
is divided by
\left(1 - \sum_{i=1}^r t_i^3 - t_i \right) / \left(N^3 - N\right)
According to Conover and Imam (1981), the statistic H
is related
to the F
-quantile as
F = \frac{H / \left(k - 1\right)}
{\left(N - 1 - H\right) / \left(N - k\right)}
which is equivalent to a one-way ANOVA F-test using rank transformed data (see examples).
The function provides three different dist
for p
-value estimation:
- Chisquare
p
-values are computed from theChisquare
distribution withv = k - 1
degree of freedom.- KruskalWallis
p
-values are computed from thepKruskalWallis
of the package SuppDists.- FDist
p
-values are computed from theFDist
distribution withv_1 = k-1, ~ v_2 = N -k
degree of freedom.
Value
A list with class "htest"
containing the following components:
- method
a character string indicating what type of test was performed.
- data.name
a character string giving the name(s) of the data.
- statistic
the estimated quantile of the test statistic.
- p.value
the p-value for the test.
- parameter
the parameters of the test statistic, if any.
- alternative
a character string describing the alternative hypothesis.
- estimates
the estimates, if any.
- null.value
the estimate under the null hypothesis, if any.
References
Conover, W.J., Iman, R.L. (1981) Rank Transformations as a Bridge Between Parametric and Nonparametric Statistics. Am Stat 35, 124–129.
Kruskal, W.H., Wallis, W.A. (1952) Use of Ranks in One-Criterion Variance Analysis. J Am Stat Assoc 47, 583–621.
Sachs, L. (1997) Angewandte Statistik. Berlin: Springer.
See Also
kruskal.test
, pKruskalWallis
,
Chisquare
, FDist
Examples
## Hollander & Wolfe (1973), 116.
## Mucociliary efficiency from the rate of removal of dust in normal
## subjects, subjects with obstructive airway disease, and subjects
## with asbestosis.
x <- c(2.9, 3.0, 2.5, 2.6, 3.2) # normal subjects
y <- c(3.8, 2.7, 4.0, 2.4) # with obstructive airway disease
z <- c(2.8, 3.4, 3.7, 2.2, 2.0) # with asbestosis
g <- factor(x = c(rep(1, length(x)),
rep(2, length(y)),
rep(3, length(z))),
labels = c("ns", "oad", "a"))
dat <- data.frame(
g = g,
x = c(x, y, z))
## AD-Test
adKSampleTest(x ~ g, data = dat)
## BWS-Test
bwsKSampleTest(x ~ g, data = dat)
## Kruskal-Test
## Using incomplete beta approximation
kruskalTest(x ~ g, dat, dist="KruskalWallis")
## Using chisquare distribution
kruskalTest(x ~ g, dat, dist="Chisquare")
## Not run:
## Check with kruskal.test from R stats
kruskal.test(x ~ g, dat)
## End(Not run)
## Using Conover's F
kruskalTest(x ~ g, dat, dist="FDist")
## Not run:
## Check with aov on ranks
anova(aov(rank(x) ~ g, dat))
## Check with oneway.test
oneway.test(rank(x) ~ g, dat, var.equal = TRUE)
## End(Not run)