A Generalization of Fisher's exact test

A generalization of Fisher's exact test; much of the documentation and R code is inspired by fisher.test()

aylmer.test(x, alternative = "two.sided", simulate.p.value = FALSE, n = 1e5, B = 2000, burnin = 100, use.brob = FALSE) aylmer.function(x, func, simulate.p.value = FALSE, n = 1e5, B = 2000, burnin=100, use.brob=FALSE, DNAME=NULL) prob(x, give.log=TRUE, use.brob = FALSE)
A matrix, possibly with some NA entries, coerced to integer (an object of class board)
Indicates the alternative hypothesis. If not a function, it must be one of “two.sided”, “greater” or “less”. You may specify just the initial letter. Only used in cases with one degree of freedom. If a function, then control is passed to aylmer.function(), for which aylmer.test() is a wrapper
Boolean, with default FALSE meaning to return the results of an exact (combinatorial) test, and TRUE meaning to compute p-values by Monte Carlo simulation
Integer specifying the maximum number of boards to list if simulate.p.value is FALSE; passed to allprobs() and thence no.of.boards(). This argument has a finite default value to prevent infinite looping
Integer specifying the number of replicates used in the Monte Carlo version of the test
Integer specifying the length of burn in. See details section
Boolean, with default FALSE meaning to use IEEE arithmetic and TRUE meaning to use Brobdingnagian arithmetic
In function prob(), Boolean with default TRUE meaning to return the logarithm of the answer and FALSE meaning to return the value
In function aylmer.function(), the test function used. The p-value returned is the probability that a random permissible board has a test function less than that of argument x
In function aylmer.function(), the name of the dataset to be specified; default value of NULL means to use standard construction

If simulate.p.value is TRUE, a vector of random probabilities is used instead of the full enumeration. A total of B+burnin boards are generated of which the first burnin are discarded.


An object of class “htest


Function prob() gives a number that is proportional to the probability of observing a board.

The probability of observing a board $B$ with no NAs, conditional on its being permissible is, obvious notation,

$$ p(B)= \sum_{\begin{array}{c}\mbox{permissable}\\\ \mbox{boards}\end{array}} \frac{\left. \prod_{i=1}^{r}n_{i \cdot}!\cdot \prod_{j=1}^{c}n_{\cdot j}!\right/ N! }{ \prod_{i=1}^{r}\prod_{j=1}^{c}\left(n_{ij}\right)! }$$

The numerator is the same for any permissable board so is not calculated.

If simulate.p.value is TRUE, the default value for B of 2000 is likely to be low, especially for large tables, or tables with large entries. Bear in mind that the Markov chain has high sequential correlation.

If simulate.p.value is FALSE, enumerative techniques are used. In this case, the default value for n ($10^5$) is also likely to be low: a p-value of 1 is returned because the first few boards all have a probability much much smaller than that of the data.


  • Ronald Aylmer Fisher 1955. Statistical methods for research workers, Oliver and Boyd
  • G. H. Freeman and J. H. Halton 1951. Note on an Exact Treatment of Contingency, Goodness of Fit and Other Problems of Significance. Biometrika, 38(1-2):141-149
  • A. W. Ghent 1972. A Method for Exact Testing of 2x2, 2x3, 3x3, and Other Contingency Tables, Employing Binomial Coefficients. American Midland Naturalist, 88(1):15-27
  • R. K. S. Hankin 2007. Very Large Numbers in R: Introducing Package Brobdingnag, R news 3(3):15-16
  • M. J. Silvapulle and P. K. Sen 2005. Constrained statistical inference. Wiley (page 326 for a special case of the tests performed by aylmer.function())

See Also

fisher.test, randomprobs

  • aylmer.test
  • aylmer.function
  • pval.1dof
  • prob


## Not run: aylmer.test(iqd,simulate.p.value=TRUE)


Documentation reproduced from package aylmer, version 1.0-11, License: GPL-2

Community examples

Looks like there are no examples yet.