g01 Chapter Contents
g01 Chapter Introduction
NAG C Library Manual

NAG Library Function Documentnag_deviates_f_vector (g01tdc)

1  Purpose

nag_deviates_f_vector (g01tdc) returns a number of deviates associated with given probabilities of the $F$ or variance-ratio distribution with real degrees of freedom.

2  Specification

 #include #include
 void nag_deviates_f_vector (Integer ltail, const Nag_TailProbability tail[], Integer lp, const double p[], Integer ldf1, const double df1[], Integer ldf2, const double df2[], double f[], Integer ivalid[], NagError *fail)

3  Description

The deviate, ${f}_{{p}_{i}}$, associated with the lower tail probability, ${p}_{i}$, of the $F$-distribution with degrees of freedom ${u}_{i}$ and ${v}_{i}$ is defined as the solution to
 $P Fi ≤ fpi :ui,vi = pi = u i 12 ui v i 12 vi Γ ui + vi 2 Γ ui 2 Γ vi 2 ∫ 0 fpi Fi 12 ui-2 vi + ui Fi -12 ui + vi dFi ,$
where ${u}_{i},{v}_{i}>0$; $0\le {f}_{{p}_{i}}<\infty$.
The value of ${f}_{{p}_{i}}$ is computed by means of a transformation to a beta distribution, ${P}_{i{\beta }_{i}}\left({B}_{i}\le {\beta }_{i}:{a}_{i},{b}_{i}\right)$:
 $P Fi ≤ fpi :ui,vi = P iβi Bi ≤ ui fpi ui fpi + vi : ui / 2 , vi / 2$
and using a call to nag_deviates_beta_vector (g01tec).
For very large values of both ${u}_{i}$ and ${v}_{i}$, greater than ${10}^{5}$, a Normal approximation is used. If only one of ${u}_{i}$ or ${v}_{i}$ is greater than ${10}^{5}$ then a ${\chi }^{2}$ approximation is used; see Abramowitz and Stegun (1972).
The input arrays to this function 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:     ltailIntegerInput
On entry: the length of the array tail.
Constraint: ${\mathbf{ltail}}>0$.
2:     tail[${\mathbf{ltail}}$]const Nag_TailProbabilityInput
On entry: indicates which tail the supplied probabilities represent. For , for $\mathit{i}=1,2,\dots ,\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf1}},{\mathbf{ldf2}}\right)$:
${\mathbf{tail}}\left[j\right]=\mathrm{Nag_LowerTail}$
The lower tail probability, i.e., ${p}_{i}=P\left({F}_{i}\le {f}_{{p}_{i}}:{u}_{i},{v}_{i}\right)$.
${\mathbf{tail}}\left[j\right]=\mathrm{Nag_UpperTail}$
The upper tail probability, i.e., ${p}_{i}=P\left({F}_{i}\ge {f}_{{p}_{i}}:{u}_{i},{v}_{i}\right)$.
Constraint: ${\mathbf{tail}}\left[\mathit{j}-1\right]=\mathrm{Nag_LowerTail}$ or $\mathrm{Nag_UpperTail}$, for $\mathit{j}=1,2,\dots ,{\mathbf{ltail}}$.
3:     lpIntegerInput
On entry: the length of the array p.
Constraint: ${\mathbf{lp}}>0$.
4:     p[lp]const doubleInput
On entry: ${p}_{i}$, the probability of the required $F$-distribution as defined by tail with ${p}_{i}={\mathbf{p}}\left[j\right]$, .
Constraints:
• if ${\mathbf{tail}}\left[k\right]=\mathrm{Nag_LowerTail}$, $0.0\le {\mathbf{p}}\left[\mathit{j}\right]<1.0$;
• otherwise $0.0<{\mathbf{p}}\left[\mathit{j}\right]\le 1.0$.
Where  and .
5:     ldf1IntegerInput
On entry: the length of the array df1.
Constraint: ${\mathbf{ldf1}}>0$.
6:     df1[ldf1]const doubleInput
On entry: ${u}_{i}$, the degrees of freedom of the numerator variance with ${u}_{i}={\mathbf{df1}}\left[j\right]$, .
Constraint: ${\mathbf{df1}}\left[\mathit{j}-1\right]>0.0$, for $\mathit{j}=1,2,\dots ,{\mathbf{ldf1}}$.
7:     ldf2IntegerInput
On entry: the length of the array df2.
Constraint: ${\mathbf{ldf2}}>0$.
8:     df2[ldf2]const doubleInput
On entry: ${v}_{i}$, the degrees of freedom of the denominator variance with ${v}_{i}={\mathbf{df2}}\left[j\right]$, .
Constraint: ${\mathbf{df2}}\left[\mathit{j}-1\right]>0.0$, for $\mathit{j}=1,2,\dots ,{\mathbf{ldf2}}$.
9:     f[$\mathit{dim}$]doubleOutput
Note: the dimension, dim, of the array f must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf1}},{\mathbf{ldf2}}\right)$.
On exit: ${f}_{{p}_{i}}$, the deviates for the $F$-distribution.
10:   ivalid[$\mathit{dim}$]IntegerOutput
Note: the dimension, dim, of the array ivalid must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf1}},{\mathbf{ldf2}}\right)$.
On exit: ${\mathbf{ivalid}}\left[i-1\right]$ indicates any errors with the input arguments, with
${\mathbf{ivalid}}\left[i-1\right]=0$
No error.
${\mathbf{ivalid}}\left[i-1\right]=1$
 On entry, invalid value supplied in tail when calculating ${f}_{{p}_{i}}$.
${\mathbf{ivalid}}\left[i-1\right]=2$
 On entry, invalid value for ${p}_{i}$.
${\mathbf{ivalid}}\left[i-1\right]=3$
 On entry, ${u}_{i}\le 0.0$, or ${v}_{i}\le 0.0$.
${\mathbf{ivalid}}\left[i-1\right]=4$
The solution has not converged. The result should still be a reasonable approximation to the solution.
${\mathbf{ivalid}}\left[i-1\right]=5$
The value of ${p}_{i}$ is too close to $0.0$ or $1.0$ for the result to be computed. This will only occur when the large sample approximations are used.
11:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
NE_ARRAY_SIZE
On entry, $\text{array size}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldf1}}>0$.
On entry, $\text{array size}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldf2}}>0$.
On entry, $\text{array size}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{lp}}>0$.
On entry, $\text{array size}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ltail}}>0$.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NW_IVALID
On entry, at least one value of tail, p, df1, df2 was invalid, or the solution failed to converge.

7  Accuracy

The result should be accurate to five significant digits.

For higher accuracy nag_deviates_beta_vector (g01tec) can be used along with the transformations given in Section 3.

9  Example

This example reads the lower tail probabilities for several $F$-distributions, and calculates and prints the corresponding deviates.

9.1  Program Text

Program Text (g01tdce.c)

9.2  Program Data

Program Data (g01tdce.d)

9.3  Program Results

Program Results (g01tdce.r)