R: The Hypergeometric Distribution

Hypergeometric {stats} | R Documentation

## The Hypergeometric Distribution

### Description

Density, distribution function, quantile function and random generation for the hypergeometric distribution.

### Usage

    dhyper(x, m, n, k, log = FALSE)
    phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE)
    qhyper(p, m, n, k, lower.tail = TRUE, log.p = FALSE)
    rhyper(nn, m, n, k)

### Arguments

`x, q` | vector of quantiles representing the number of white balls drawn without replacement from an urn which contains both black and white balls.
`m` | the number of white balls in the urn.
`n` | the number of black balls in the urn.
`k` | the number of balls drawn from the urn.
`p` | probability, it must be between 0 and 1.
`nn` | number of observations. If `length(nn) > 1`, the length is taken to be the number required.
`log, log.p` | logical; if TRUE, probabilities p are given as log(p).
`lower.tail` | logical; if TRUE (default), probabilities are P[X <= x], otherwise, P[X > x].

### Details

The hypergeometric distribution is used for sampling without replacement. The density of this distribution with parameters `m`, `n` and `k` (named Np, N-Np, and n, respectively in the reference below) is given by

p(x) = choose(m, x) choose(n, k-x) / choose(m+n, k)

for x = 0, ..., k.

### Value

`dhyper` gives the density, `phyper` gives the distribution function, `qhyper` gives the quantile function, and `rhyper` generates random deviates.
Invalid arguments will result in return value `NaN`, with a warning.

### Source

`dhyper` computes via binomial probabilities, using code contributed by Catherine Loader (see `dbinom`).

`phyper` is based on calculating `dhyper` and `phyper(...)/dhyper(...)` (as a summation), based on ideas of Ian Smith and Morten Welinder.

`qhyper` is based on inversion.

`rhyper` is based on a corrected version of

Kachitvichyanukul, V. and Schmeiser, B. (1985). Computer generation of hypergeometric random variates. Journal of Statistical Computation and Simulation, 22, 127–145.

### References

Johnson, N. L., Kotz, S., and Kemp, A. W. (1992) Univariate Discrete Distributions, Second Edition. New York: Wiley.

### Examples

    m <- 10; n <- 7; k <- 8
    x <- 0:(k+1)
    rbind(phyper(x, m, n, k), dhyper(x, m, n, k))
    all(phyper(x, m, n, k) == cumsum(dhyper(x, m, n, k)))# FALSE
    ## but error is very small:
    signif(phyper(x, m, n, k) - cumsum(dhyper(x, m, n, k)), digits=3)

[Package stats version 2.6.2 Index]