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)), dig=3)

[Package

*stats* version 2.5.0

Index]