g01 Chapter Contents
g01 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_deviates_chi_sq_vector (g01tcc)

## 1  Purpose

nag_deviates_chi_sq_vector (g01tcc) returns a number of deviates associated with the given probabilities of the ${\chi }^{2}$-distribution with real degrees of freedom.

## 2  Specification

 #include #include
 void nag_deviates_chi_sq_vector (Integer ltail, const Nag_TailProbability tail[], Integer lp, const double p[], Integer ldf, const double df[], double x[], Integer ivalid[], NagError *fail)

## 3  Description

The deviate, ${x}_{{p}_{i}}$, associated with the lower tail probability ${p}_{i}$ of the ${\chi }^{2}$-distribution with ${\nu }_{i}$ degrees of freedom is defined as the solution to
 $P Xi ≤ xpi :νi = pi = 1 2 νi/2 Γ νi/2 ∫ 0 xpi e -Xi/2 Xi vi / 2 - 1 dXi , 0 ≤ xpi < ∞ ; ​ νi > 0 .$
The required ${x}_{{p}_{i}}$ is found by using the relationship between a ${\chi }^{2}$-distribution and a gamma distribution, i.e., a ${\chi }^{2}$-distribution with ${\nu }_{i}$ degrees of freedom is equal to a gamma distribution with scale parameter $2$ and shape parameter ${\nu }_{i}/2$.
For very large values of ${\nu }_{i}$, greater than ${10}^{5}$, Wilson and Hilferty's Normal approximation to the ${\chi }^{2}$ is used; see Kendall and Stuart (1969).
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

Best D J and Roberts D E (1975) Algorithm AS 91. The percentage points of the ${\chi }^{2}$ distribution Appl. Statist. 24 385–388
Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth
Kendall M G and Stuart A (1969) The Advanced Theory of Statistics (Volume 1) (3rd Edition) Griffin

## 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{ldf}}\right)$:
${\mathbf{tail}}\left[j\right]=\mathrm{Nag_LowerTail}$
The lower tail probability, i.e., ${p}_{i}=P\left({X}_{i}\le {x}_{{p}_{i}}:{\nu }_{i}\right)$.
${\mathbf{tail}}\left[j\right]=\mathrm{Nag_UpperTail}$
The upper tail probability, i.e., ${p}_{i}=P\left({X}_{i}\ge {x}_{{p}_{i}}:{\nu }_{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 ${\chi }^{2}$-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:     ldfIntegerInput
On entry: the length of the array df.
Constraint: ${\mathbf{ldf}}>0$.
6:     df[ldf]const doubleInput
On entry: ${\nu }_{i}$, the degrees of freedom of the ${\chi }^{2}$-distribution with ${\nu }_{i}={\mathbf{df}}\left[j\right]$, .
Constraint: ${\mathbf{df}}\left[\mathit{j}-1\right]>0.0$, for $\mathit{j}=1,2,\dots ,{\mathbf{ldf}}$.
7:     x[$\mathit{dim}$]doubleOutput
Note: the dimension, dim, of the array x must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ltail}},{\mathbf{lp}},{\mathbf{ldf}}\right)$.
On exit: ${x}_{{p}_{i}}$, the deviates for the ${\chi }^{2}$-distribution.
8:     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{ldf}}\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 ${x}_{{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, ${\nu }_{i}\le 0.0$.
${\mathbf{ivalid}}\left[i-1\right]=4$
${p}_{i}$ is too close to $0.0$ or $1.0$ for the result to be calculated.
${\mathbf{ivalid}}\left[i-1\right]=5$
The solution has failed to converge. The result should be a reasonable approximation.
9:     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{ldf}}>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 or df was invalid, or the solution failed to converge.

## 7  Accuracy

The results should be accurate to five significant digits for most argument values. Some accuracy is lost for ${p}_{i}$ close to $0.0$ or $1.0$.

For higher accuracy the relationship described in Section 3 may be used and a direct call to nag_deviates_gamma_vector (g01tfc) made.

## 9  Example

This example reads lower tail probabilities for several ${\chi }^{2}$-distributions, and calculates and prints the corresponding deviates.

### 9.1  Program Text

Program Text (g01tcce.c)

### 9.2  Program Data

Program Data (g01tcce.d)

### 9.3  Program Results

Program Results (g01tcce.r)