NAG FL Interface
g01sdf (prob_​f_​vector)

Settings help

FL Name Style:


FL Specification Language:


1 Purpose

g01sdf returns a number of lower or upper tail probabilities for the F or variance-ratio distribution with real degrees of freedom.

2 Specification

Fortran Interface
Subroutine g01sdf ( ltail, tail, lf, f, ldf1, df1, ldf2, df2, p, ivalid, ifail)
Integer, Intent (In) :: ltail, lf, ldf1, ldf2
Integer, Intent (Inout) :: ifail
Integer, Intent (Out) :: ivalid(*)
Real (Kind=nag_wp), Intent (In) :: f(lf), df1(ldf1), df2(ldf2)
Real (Kind=nag_wp), Intent (Out) :: p(*)
Character (1), Intent (In) :: tail(ltail)
C Header Interface
#include <nag.h>
void  g01sdf_ (const Integer *ltail, const char tail[], const Integer *lf, const double f[], const Integer *ldf1, const double df1[], const Integer *ldf2, const double df2[], double p[], Integer ivalid[], Integer *ifail, const Charlen length_tail)
The routine may be called by the names g01sdf or nagf_stat_prob_f_vector.

3 Description

The lower tail probability for the F, or variance-ratio, distribution with ui and vi degrees of freedom, P( Fi fi :ui,vi) , is defined by:
P( Fi fi :ui,vi) = ui ui/2 vi vi/2 Γ ((ui+vi)/2) Γ (ui/2) Γ (vi/2) 0 fi Fi (ui-2) / 2 (uiFi+vi) - (ui+vi) / 2 d Fi ,  
for ui, vi>0, fi0.
The probability is computed by means of a transformation to a beta distribution, Pβi( Bi βi :ai,bi) :
P( Fi fi :ui,vi) = Pβi( Bi ui fi ui fi + vi : ui / 2 , vi / 2 )  
and using a call to g01eef.
For very large values of both ui and vi, greater than 105, a normal approximation is used. If only one of ui or vi is greater than 105 then a χ2 approximation is used, see Abramowitz and Stegun (1972).
The input arrays to this routine are designed to allow maximum flexibility in the supply of vector arguments by re-using elements of any arrays that are shorter than the total number of evaluations required. See Section 2.6 in the G01 Chapter Introduction for further information.

4 References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth

5 Arguments

1: ltail Integer Input
On entry: the length of the array tail.
Constraint: ltail>0.
2: tail(ltail) Character(1) array Input
On entry: indicates whether the lower or upper tail probabilities are required. For j= ((i-1) mod ltail) +1 , for i=1,2,,max(ltail,lf,ldf1,ldf2):
tail(j)='L'
The lower tail probability is returned, i.e., pi = P( Fi fi :ui,vi) .
tail(j)='U'
The upper tail probability is returned, i.e., pi = P( Fi fi :ui,vi) .
Constraint: tail(j)='L' or 'U', for j=1,2,,ltail.
3: lf Integer Input
On entry: the length of the array f.
Constraint: lf>0.
4: f(lf) Real (Kind=nag_wp) array Input
On entry: fi, the value of the F variate with fi=f(j), j=((i-1) mod lf)+1.
Constraint: f(j)0.0, for j=1,2,,lf.
5: ldf1 Integer Input
On entry: the length of the array df1.
Constraint: ldf1>0.
6: df1(ldf1) Real (Kind=nag_wp) array Input
On entry: ui, the degrees of freedom of the numerator variance with ui=df1(j), j=((i-1) mod ldf1)+1.
Constraint: df1(j)>0.0, for j=1,2,,ldf1.
7: ldf2 Integer Input
On entry: the length of the array df2.
Constraint: ldf2>0.
8: df2(ldf2) Real (Kind=nag_wp) array Input
On entry: vi, the degrees of freedom of the denominator variance with vi=df2(j), j=((i-1) mod ldf2)+1.
Constraint: df2(j)>0.0, for j=1,2,,ldf2.
9: p(*) Real (Kind=nag_wp) array Output
Note: the dimension of the array p must be at least max(ltail,lf,ldf1,ldf2).
On exit: pi, the probabilities for the F-distribution.
10: ivalid(*) Integer array Output
Note: the dimension of the array ivalid must be at least max(ltail,lf,ldf1,ldf2).
On exit: ivalid(i) indicates any errors with the input arguments, with
ivalid(i)=0
No error.
ivalid(i)=1
On entry, invalid value supplied in tail when calculating pi.
ivalid(i)=2
On entry, fi<0.0.
ivalid(i)=3
On entry, ui0.0, or, vi0.0.
ivalid(i)=4
The solution has failed to converge. The result returned should represent an approximation to the solution.
11: 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 −1 is recommended since useful values can be provided in some output arguments even when ifail0 on exit. 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:
Note: in some cases g01sdf may return useful information.
ifail=1
On entry, at least one value of f, df1, df2 or tail was invalid, or the solution failed to converge.
Check ivalid for more information.
ifail=2
On entry, array size=value.
Constraint: ltail>0.
ifail=3
On entry, array size=value.
Constraint: lf>0.
ifail=4
On entry, array size=value.
Constraint: ldf1>0.
ifail=5
On entry, array size=value.
Constraint: ldf2>0.
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

The result should be accurate to five significant digits.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
g01sdf is not threaded in any implementation.

9 Further Comments

For higher accuracy g01sef can be used along with the transformations given in Section 3.

10 Example

This example reads values from, and degrees of freedom for, a number of F-distributions and computes the associated lower tail probabilities.

10.1 Program Text

Program Text (g01sdfe.f90)

10.2 Program Data

Program Data (g01sdfe.d)

10.3 Program Results

Program Results (g01sdfe.r)