# NAG FL Interfaceg01ewf (prob_​dickey_​fuller_​unit)

## ▸▿ Contents

Settings help

FL Name Style:

FL Specification Language:

## 1Purpose

g01ewf returns the probability associated with the lower tail of the distribution for the Dickey–Fuller unit root test statistic.

## 2Specification

Fortran Interface
 Function g01ewf ( type, n, ts,
 Real (Kind=nag_wp) :: g01ewf Integer, Intent (In) :: method, type, n, nsamp Integer, Intent (Inout) :: state(*), ifail Real (Kind=nag_wp), Intent (In) :: ts
#include <nag.h>
 double g01ewf_ (const Integer *method, const Integer *typ, const Integer *n, const double *ts, const Integer *nsamp, Integer state[], Integer *ifail)
The routine may be called by the names g01ewf or nagf_stat_prob_dickey_fuller_unit.

## 3Description

If the root of the characteristic equation for a time series is one then that series is said to have a unit root. Such series are nonstationary. g01ewf is designed to be called after g13awf and returns the probability associated with one of three types of (augmented) Dickey–Fuller test statistic: $\tau$, ${\tau }_{\mu }$ or ${\tau }_{\tau }$, used to test for a unit root, a unit root with drift or a unit root with drift and a deterministic time trend, respectively. The three types of test statistic are constructed as follows:
1. 1.To test whether a time series, ${y}_{t}$, for $\mathit{t}=1,2,\dots ,n$, has a unit root the regression model
 $∇yt = β1 yt-1 + ∑ i=1 p-1 δi ∇ yt-i +εt$
is fit and the test statistic $\tau$ constructed as
 $τ = β^1 σ11$
where $\nabla$ is the difference operator, with $\nabla {y}_{t}={y}_{t}-{y}_{t-1}$, and where ${\stackrel{^}{\beta }}_{1}$ and ${\sigma }_{11}$ are the least squares estimate and associated standard error for ${\beta }_{1}$ respectively.
2. 2.To test for a unit root with drift the regression model
 $∇yt = β1 yt-1 + ∑ i=1 p-1 δi ∇ yt-i +α +εt$
is fit and the test statistic ${\tau }_{\mu }$ constructed as
 $τμ = β^1 σ11 .$
3. 3.To test for a unit root with drift and deterministic time trend the regression model
 $∇yt = β1 yt-1 + ∑ i=1 p-1 δi ∇ yt-i +α +β2t +εt$
is fit and the test statistic ${\tau }_{\tau }$ constructed as
 $ττ = β^1 σ11 .$
All three test statistics: $\tau$, ${\tau }_{\mu }$ and ${\tau }_{\tau }$ can be calculated using g13awf.
The probability distributions of these statistics are nonstandard and are a function of the length of the series of interest, $n$. The probability associated with a given test statistic, for a given $n$, can, therefore, only be calculated by simulation as described in Dickey and Fuller (1979). However, such simulations require a significant number of iterations and are, therefore, prohibitively expensive in terms of the time taken. As such g01ewf also allows the probability to be interpolated from a look-up table. Two such tables are provided, one from Dickey (1976) and one constructed as described in Section 9. The three different methods of obtaining an estimate of the probability can be chosen via the method argument. Unless there is a specific reason for choosing otherwise, ${\mathbf{method}}=1$ should be used.

## 4References

Dickey A D (1976) Estimation and hypothesis testing in nonstationary time series PhD Thesis Iowa State University, Ames, Iowa
Dickey A D and Fuller W A (1979) Distribution of the estimators for autoregressive time series with a unit root J. Am. Stat. Assoc. 74 366 427–431

## 5Arguments

1: $\mathbf{method}$Integer Input
On entry: the method used to calculate the probability.
${\mathbf{method}}=1$
The probability is interpolated from a look-up table, whose values were obtained via simulation.
${\mathbf{method}}=2$
The probability is interpolated from a look-up table, whose values were obtained from Dickey (1976).
${\mathbf{method}}=3$
The probability is obtained via simulation.
The probability calculated from the look-up table should give sufficient accuracy for most applications.
Suggested value: ${\mathbf{method}}=1$.
Constraint: ${\mathbf{method}}=1$, $2$ or $3$.
2: $\mathbf{type}$Integer Input
On entry: the type of test statistic, supplied in ts.
Constraint: ${\mathbf{type}}=1$, $2$ or $3$.
3: $\mathbf{n}$Integer Input
On entry: $n$, the length of the time series used to calculate the test statistic.
Constraints:
• if ${\mathbf{method}}\ne 3$, ${\mathbf{n}}>0$;
• if ${\mathbf{method}}=3$ and ${\mathbf{type}}=1$, ${\mathbf{n}}>2$;
• if ${\mathbf{method}}=3$ and ${\mathbf{type}}=2$, ${\mathbf{n}}>3$;
• if ${\mathbf{method}}=3$ and ${\mathbf{type}}=3$, ${\mathbf{n}}>4$.
4: $\mathbf{ts}$Real (Kind=nag_wp) Input
On entry: the Dickey–Fuller test statistic for which the probability is required. If
${\mathbf{type}}=1$
ts must contain $\tau$.
${\mathbf{type}}=2$
ts must contain ${\tau }_{\mu }$.
${\mathbf{type}}=3$
ts must contain ${\tau }_{\tau }$.
If the test statistic was calculated using g13awf the value of type and n must not change between calls to g01ewf and g13awf.
5: $\mathbf{nsamp}$Integer Input
On entry: if ${\mathbf{method}}=3$, the number of samples used in the simulation; otherwise nsamp is not referenced and need not be set.
Constraint: if ${\mathbf{method}}=3$, ${\mathbf{nsamp}}>0$.
6: $\mathbf{state}\left(*\right)$Integer array Communication Array
Note: the actual argument supplied must be the array state supplied to the initialization routines g05kff or g05kgf.
On entry: if ${\mathbf{method}}=3$, state must contain information on the selected base generator and its current state; otherwise state is not referenced and need not be set.
On exit: if ${\mathbf{method}}=3$, state contains updated information on the state of the generator otherwise a zero length vector is returned.
7: $\mathbf{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 $-\mathbf{1}$ or $\mathbf{1}$ is used it is essential to test the value of ifail on exit.
On exit: ${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see Section 6).

## 6Error Indicators and Warnings

If on entry ${\mathbf{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:
${\mathbf{ifail}}=11$
On entry, ${\mathbf{method}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{method}}=1$, $2$ or $3$.
${\mathbf{ifail}}=21$
On entry, ${\mathbf{type}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{type}}=1$, $2$ or $3$.
${\mathbf{ifail}}=31$
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: if ${\mathbf{method}}\ne 3$, ${\mathbf{n}}>0$.
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: if ${\mathbf{method}}=3$ and ${\mathbf{type}}=1$, ${\mathbf{n}}>2$.
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: if ${\mathbf{method}}=3$ and ${\mathbf{type}}=2$, ${\mathbf{n}}>3$.
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: if ${\mathbf{method}}=3$ and ${\mathbf{type}}=3$, ${\mathbf{n}}>4$.
${\mathbf{ifail}}=51$
On entry, ${\mathbf{nsamp}}=⟨\mathit{\text{value}}⟩$.
Constraint: if ${\mathbf{method}}=3$, ${\mathbf{nsamp}}>0$.
${\mathbf{ifail}}=61$
On entry, ${\mathbf{method}}=3$ and the state vector has been corrupted or not initialized.
${\mathbf{ifail}}=201$
The supplied input values were outside the range of at least one look-up table, therefore, extrapolation was used.
${\mathbf{ifail}}=-99$
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{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.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

## 7Accuracy

When ${\mathbf{method}}=1$, the probability returned by this routine is unlikely to be accurate to more than $4$ or $5$ decimal places, for ${\mathbf{method}}=2$ this accuracy is likely to drop to $2$ or $3$ decimal places (see Section 9 for details on how these probabilities are constructed). In both cases the accuracy of the probability is likely to be lower when extrapolation is used, particularly for small values of n (less than around $15$). When ${\mathbf{method}}=3$ the accuracy of the returned probability is controlled by the number of simulations performed (i.e., the value of nsamp used).

## 8Parallelism and Performance

g01ewf is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
g01ewf makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

When ${\mathbf{method}}=1$ or $2$ the probability returned is constructed by interpolating from a series of look-up tables. In the case of ${\mathbf{method}}=2$ the look-up tables are taken directly from Dickey (1976) and the interpolation is carried out using e01saf and e01sbf . For ${\mathbf{method}}=1$ the look-up tables were constructed as follows:
1. (i)A sample size, $n$ was chosen.
2. (ii)${2}^{28}$ simulations were run.
3. (iii)At each simulation, a time series was constructed as described in chapter five of Dickey (1976). The relevant test statistic was then calculated for each of these time series.
4. (iv)A series of quantiles were calculated from the sample of ${2}^{28}$ test statistics. The quantiles were calculated at intervals of $0.0005$ between $0.0005$ and $0.9995$.
5. (v)A spline was fit to the quantiles using e02bef.
This process was repeated for $n=25,50,75,100,150,200,250,300,350,400,450,500,600,700,800,900,1000,1500,2000,2500,5000,10000$, resulting in $22$ splines.
Given the $22$ splines, and a user-supplied sample size, $n$ and test statistic, $\tau$, an estimated $p$-value is calculated as follows:
1. (i)Evaluate each of the $22$ splines, at $\tau$, using e02bef. If, for a particular spline, the supplied value of $\tau$ lies outside of the range of the simulated data, then a third-order Taylor expansion is used to extrapolate, with the derivatives being calculated using e02bcf.
2. (ii)Fit a spline through these $22$ points using e01bef.
3. (iii)Estimate the $p$-value using e01bff.

See g13awf.