Learn R Programming

VGAM (version 0.8-1)

hyperg: Hypergeometric Family Function

Description

Family function for a hypergeometric distribution where either the number of white balls or the total number of white and black balls are unknown.

Usage

hyperg(N=NULL, D=NULL, lprob="logit", earg=list(), iprob=NULL)

Arguments

N
Total number of white and black balls in the urn. Must be a vector with positive values, and is recycled, if necessary, to the same length as the response. One of N and D must be specified.
D
Number of white balls in the urn. Must be a vector with positive values, and is recycled, if necessary, to the same length as the response. One of N and D must be specified.
lprob
Link function for the probabilities. See Links for more choices.
earg
List. Extra argument for the link. See earg in Links for general information.
iprob
Optional initial value for the probabilities. The default is to choose initial values internally.

Value

Warning

No checking is done to ensure that certain values are within range, e.g., $k \leq N$.

Details

Consider the scenario from Hypergeometric where there are $N=m+n$ balls in an urn, where $m$ are white and $n$ are black. A simple random sample (i.e., without replacement) of $k$ balls is taken. The response here is the sample proportion of white balls. In this document, N is $N=m+n$, D is $m$ (for the number of ``defectives'', in quality control terminology, or equivalently, the number of marked individuals). The parameter to be estimated is the population proportion of white balls, viz. $prob = m/(m+n)$.

Depending on which one of N and D is inputted, the estimate of the other parameter can be obtained from the equation $prob = m/(m+n)$, or equivalently, prob = D/N. However, the log-factorials are computed using lgamma and both $m$ and $n$ are not restricted to being integer. Thus if an integer $N$ is to be estimated, it will be necessary to evaluate the likelihood function at integer values about the estimate, i.e., at trunc(Nhat) and ceiling(Nhat) where Nhat is the (real) estimate of $N$.

References

Evans, M., Hastings, N. and Peacock, B. (2000) Statistical Distributions, New York: Wiley-Interscience, Third edition.

See Also

Hypergeometric, binomialff.

Examples

Run this code
nn = 100
m = 5   # number of white balls in the population
k = rep(4, len=nn)   # sample sizes
n = 4   # number of black balls in the population
y  = rhyper(nn=nn, m=m, n=n, k=k)
yprop = y / k  # sample proportions

# N is unknown, D is known. Both models are equivalent:
fit = vglm(cbind(y,k-y) ~ 1, hyperg(D=m), trace=TRUE, crit="c")
fit = vglm(yprop ~ 1, hyperg(D=m), weight=k, trace=TRUE, crit="c")

# N is known, D is unknown. Both models are equivalent:
fit = vglm(cbind(y,k-y) ~ 1, hyperg(N=m+n), trace=TRUE, crit="l")
fit = vglm(yprop ~ 1, hyperg(N=m+n), weight=k, trace=TRUE, crit="l")

coef(fit, matrix=TRUE)
Coef(fit)  # Should be equal to the true population proportion
unique(m / (m+n))  # The true population proportion
fit@extra
head(fitted(fit))
summary(fit)

Run the code above in your browser using DataLab