R: Kruskal-Wallis Rank Sum Test

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 `"x"`. Ignored with a warning if `"x"` is a list.
`dist` | the test distribution. Defaults's to `"Chisquare"`.
`formula` | a formula of the form `response ~ group` where `response` gives the data values and `group` a vector or factor of the corresponding groups.
`data` | an optional matrix or data frame (or similar: see `model.frame`) containing the variables in the formula `formula`. By default the variables are taken from `environment(formula)`.
`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 `NA`s. Defaults to `getOption("na.action")`.

### 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) = … = 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, …, R_{(n)(n)} = N, ~~ N = ∑_{i=1}^k n_i, The test statistic is calculated as

SEE PDF

with the mean rank of the i-th group

SEE PDF

the expected value

SEE PDF

and the expected variance as

SEE PDF

In case of ties the statistic H is divided by ≤ft(1 - ∑_{i=1}^r t_i^3 - t_i \right) / ≤ft(N^3 - N\right)

According to Conover and Imam (1981), the statistic H is related to the F-quantile as

SEE PDF

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 the `Chisquare` distribution with v = k - 1 degree of freedom.

KruskalWallis

  p-values are computed from the `pKruskalWallis` of the package SuppDists.

FDist

  p-values are computed from the `FDist` distribution with v_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)

[Package PMCMRplus version 1.9.0 Index]