NAG FL Interface
g01blf (prob_​hypergeom)

1 Purpose

g01blf returns the lower tail, upper tail and point probabilities associated with a hypergeometric distribution.

2 Specification

Fortran Interface
Subroutine g01blf ( n, l, m, k, plek, pgtk, peqk, ifail)
Integer, Intent (In) :: n, l, m, k
Integer, Intent (Inout) :: ifail
Real (Kind=nag_wp), Intent (Out) :: plek, pgtk, peqk
C Header Interface
#include <nag.h>
void  g01blf_ (const Integer *n, const Integer *l, const Integer *m, const Integer *k, double *plek, double *pgtk, double *peqk, Integer *ifail)
The routine may be called by the names g01blf or nagf_stat_prob_hypergeom.

3 Description

Let X denote a random variable having a hypergeometric distribution with parameters n, l and m (nl0, nm0). Then
ProbX=k= m k n-m l-k n l ,  
where max0,l-n-m k minl,m , 0ln and 0mn.
The hypergeometric distribution may arise if in a population of size n a number m are marked. From this population a sample of size l is drawn and of these k are observed to be marked.
The mean of the distribution = lm n , and the variance = lmn-ln-m n2n-1 .
g01blf computes for given n, l, m and k the probabilities:
plek=ProbXk pgtk=ProbX>k peqk=ProbX=k .  
The method is similar to the method for the Poisson distribution described in Knüsel (1986).

4 References

Knüsel L (1986) Computation of the chi-square and Poisson distribution SIAM J. Sci. Statist. Comput. 7 1022–1036

5 Arguments

1: n Integer Input
On entry: the parameter n of the hypergeometric distribution.
Constraint: n0.
2: l Integer Input
On entry: the parameter l of the hypergeometric distribution.
Constraint: 0ln.
3: m Integer Input
On entry: the parameter m of the hypergeometric distribution.
Constraint: 0mn.
4: k Integer Input
On entry: the integer k which defines the required probabilities.
Constraint: max0,l-n-mkminl,m.
5: plek Real (Kind=nag_wp) Output
On exit: the lower tail probability, ProbXk.
6: pgtk Real (Kind=nag_wp) Output
On exit: the upper tail probability, ProbX>k.
7: peqk Real (Kind=nag_wp) Output
On exit: the point probability, ProbX=k.
8: ifail Integer Input/Output
On entry: ifail must be set to 0, -1 or 1 to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of 0 causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of -1 means that an error message is printed while a value of 1 means that it is not.
If halting is not appropriate, the value -1 or 1 is recommended. If message printing is undesirable, then the value 1 is recommended. Otherwise, the value 0 is recommended. When the value -1 or 1 is used it is essential to test the value of ifail on exit.
On exit: ifail=0 unless the routine detects an error or a warning has been flagged (see Section 6).

6 Error Indicators and Warnings

If on entry ifail=0 or -1, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
ifail=1
On entry, n=value.
Constraint: n0.
ifail=2
On entry, l=value.
Constraint: l0.
On entry, l=value and n=value.
Constraint: ln.
ifail=3
On entry, m=value.
Constraint: m0.
On entry, m=value and n=value.
Constraint: mn.
ifail=4
On entry, k=value, l=value, m=value and l+m-n=value.
Constraint: kl+m-n.
On entry, k=value.
Constraint: k0.
On entry, k=value and l=value.
Constraint: kl.
On entry, k=value and m=value.
Constraint: km.
ifail=5
On entry, n is too large to be represented exactly as a double precision number.
ifail=6
On entry, the variance = l m n-l n-m n2 n-1 exceeds 106.
ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
ifail=-399
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
ifail=-999
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

7 Accuracy

Results are correct to a relative accuracy of at least 10-6 on machines with a precision of 9 or more decimal digits, and to a relative accuracy of at least 10-3 on machines of lower precision (provided that the results do not underflow to zero).

8 Parallelism and Performance

g01blf is not threaded in any implementation.

9 Further Comments

The time taken by g01blf depends on the variance (see Section 3) and on k. For given variance, the time is greatest when klm/n (= the mean), and is then approximately proportional to the square-root of the variance.

10 Example

This example reads values of n, l, m and k from a data file until end-of-file is reached, and prints the corresponding probabilities.

10.1 Program Text

Program Text (g01blfe.f90)

10.2 Program Data

Program Data (g01blfe.d)

10.3 Program Results

Program Results (g01blfe.r)