R: Conover's Test of Multiple Comparisons

ConoverTest {DescTools} | R Documentation

## Conover's Test of Multiple Comparisons

### Description

Perform Conover's test of multiple comparisons using rank sums as post hoc test following a significant `kruskal.test`.

### Usage

    ConoverTest(x, ...)

    ## Default S3 method:
    ConoverTest(x, g,
                method = c("holm", "hochberg", "hommel", "bonferroni", "BH",
                           "BY", "fdr", "none"),
                alternative = c("two.sided", "less", "greater"),
                out.list = TRUE, ...)

    ## S3 method for class 'formula'
    ConoverTest(formula, data, subset, na.action, ...)

### Arguments

`x` | a numeric vector of data values, or a list of numeric data vectors.
`g` | a vector or factor object giving the group for the corresponding elements of `x`. Ignored if `x` is a list.
`method` | the method for adjusting p-values for multiple comparisons. The function is calling `p.adjust` and this parameter is directly passed through.
`alternative` | a character string specifying the alternative hypothesis, must be one of `"two.sided"` (default), `"greater"` or `"less"`. You can specify just the initial letter.
`out.list` | logical, indicating if the results should be printed in list mode or as a square matrix. Default is list (TRUE).
`formula` | a formula of the form `lhs ~ rhs` where `lhs` gives the data values and `rhs` 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")`.
`...` | further arguments to be passed to or from methods.

### Details

`ConoverTest` performs the post hoc pairwise multiple comparisons procedure appropriate to follow the rejection of a Kruskal-Wallis test. Conover's test is more powerful than Dunn's post hoc multiple comparisons test (`DunnTest`). The interpretation of stochastic dominance requires an assumption that the CDF of one group does not cross the CDF of the other.
ConoverTest makes m = k(k-1)/2 multiple pairwise comparisons based on the Conover-Iman t-test-statistic for the rank-sum differences:

≤ft | \bar{R}_{i}-\bar{R}_{j} \right | > t_{1-α/2, n-k} \cdot √{ s^2 \cdot ≤ft [ \frac{n-1-\hat{H}^*}{n-k} \right ] \cdot ≤ft [ \frac{1}{n_i} + \frac{1}{n_j} \right ] }

with the (tie corrected) statistic of the Kruskal Wallis test

\hat{H}^* = \frac{\frac{12}{n \cdot (n+1)} \cdot ∑_{i=1}^{k}\frac{R_{i}^2}{n_i} - 3\cdot(n+1) } {1-\frac{∑_{i=1}^{r} ≤ft ( t_i^3-t_i \right )}{n^3-n}}

and the s^2 being

s^2 = \frac{1}{n-1} \cdot ≤ft [ ∑{R_i^2} - n \cdot \frac{(n+1)^2}{4} \right ]

If `x` is a list, its elements are taken as the samples to be compared, and hence have to be numeric data vectors. In this case, `g` is ignored, and one can simply use `ConoverTest(x)` to perform the test. If the samples are not yet contained in a list, use `ConoverTest(list(x, ...))`.

Otherwise, `x` must be a numeric data vector, and `g` must be a vector or factor object of the same length as `x` giving the group for the corresponding elements of `x`.

### Value

A list with class `"DunnTest"` containing the following components:

`res` | an array containing the mean rank differencens and the according p-values

### Author(s)

Andri Signorell <andri@signorell.net>, the interface is based on R-Core code

### References

Conover W. J., Iman R. L. (1979) On multiple-comparisons procedures, Tech. Rep. LA-7677-MS, Los Alamos Scientific Laboratory.

Conover, W. J. (1999) Practical Nonparametric Statistics Wiley, Hoboken, NJ. 3rd edition.

### See Also

`DunnTest`, `NemenyiTest`, `kruskal.test`, `wilcox.test`, `p.adjust`

### 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
    ConoverTest(list(x, y, z))

    ## Equivalently,
    x <- c(x, y, z)
    g <- factor(rep(1:3, c(5, 4, 5)),
                labels = c("Normal subjects",
                           "Subjects with obstructive airway disease",
                           "Subjects with asbestosis"))

    # do the kruskal.test first
    kruskal.test(x, g)

    # ...and the pairwise test afterwards
    ConoverTest(x, g)

    ## Formula interface.
    boxplot(Ozone ~ Month, data = airquality)
    ConoverTest(Ozone ~ Month, data = airquality)

[Package DescTools version 0.99.26 Index]