# page.test: Page test for monotonicity of ranks. In kevinstadler/cultevo: Tools, Measures and Statistical Tests for Cultural Evolution

## Description

Given `N` replications of `k` different treatments/conditions, tests whether the median ordinal ranks m_i of the treatments are identical

m_1 = m_2 = … = m_k

against the alternative hypothesis

m_1 ≤q m_2 ≤q … ≤q m_k

where at least one of the inequalities is a strict inequality (Siegel and Castellan 1988, p.184). Given that even a single point change in the distribution of ranks across conditions represents evidence against the null hypothesis, the Page test is simply a test for some ordered differences in ranks, but not a 'trend test' in any meaningful way (see also the Page test tutorial).

## Usage

 ```1 2 3 4 5``` ```page.test(data, verbose = TRUE) page.L(data, verbose = TRUE, ties.method = "average") page.compute.exact(k, N, L = NULL) ```

## Arguments

 `data` a matrix with the different conditions along its `k` columns and the `N` replications along rows. Conversion of the data to ordinal ranks is taken care of internally. `verbose` whether to print the final rankings based on which the L statistic is computed `ties.method` how to resolve tied ranks. Passed on to `rank`, should be left on "average" (the default). `k` number of conditions/generations `N` number of replications/chains `L` value of the Page L statistic

## Details

Tests the given matrix for monotonically increasing ranks across `k` linearly ordered conditions (along columns) based on `N` replications (along rows). To test for monotonically decreasing ranks, either reverse the order of columns, or simply invert the rank ordering by calling `-` on the entire dataset.

Exact p-values are computed for `k` up to 22, using the pre-computed null distributions from the pspearman package. For larger `k`, p-values are computed based on a Normal distribution approximation (Siegel and Castellan, 1988).

## Value

`page.test` returns a list of class `pagetest` (and `htest`) containing the following elements:

`statistic`

value of the L statistic for the data set

`parameter`

a named vector specifying the number of conditions (k) and replications (N) of the data (which is the number of columns and rows of the data set, respectively)

`p.value`

significance level

`p.type`

whether the computed p-value is `"exact"` or `"approximate"`

## Functions

• `page.test`: See above.

• `page.L`: Calculate Page's L statistic for the given dataset.

• `page.compute.exact`: Calculate exact significance levels of the Page L statistic. Returns a single numeric indicating the null probability of the Page statistic with the given `k`, `N` being greater or equal than the given `L`.

## References

Siegel, S., and N. J. Castellan, Jr. (1988). Nonparametric Statistics for the Behavioral Sciences. McGraw-Hill.

`rank`, Page test tutorial
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ```# exact p value computation for N=4, k=4 page.test(t(replicate(4, sample(4)))) # exact p value computation for N=4, k=10 page.test(t(replicate(4, sample(10)))) # approximate p value computation for N=4, k=23 result <- page.test(t(replicate(4, sample(23))), verbose = FALSE) print(result) # raw calculation of the significance levels page.compute.exact(6, 4, 322) ```