# NAG FL Interfaceg13acf (uni_​autocorr_​part)

## ▸▿ Contents

Settings help

FL Name Style:

FL Specification Language:

## 1Purpose

g13acf calculates partial autocorrelation coefficients given a set of autocorrelation coefficients. It also calculates the predictor error variance ratios for increasing order of finite lag autoregressive predictor, and the autoregressive parameters associated with the predictor of maximum order.

## 2Specification

Fortran Interface
 Subroutine g13acf ( r, nk, nl, p, v, ar, nvl,
 Integer, Intent (In) :: nk, nl Integer, Intent (Inout) :: ifail Integer, Intent (Out) :: nvl Real (Kind=nag_wp), Intent (In) :: r(nk) Real (Kind=nag_wp), Intent (Out) :: p(nl), v(nl), ar(nl)
#include <nag.h>
 void g13acf_ (const double r[], const Integer *nk, const Integer *nl, double p[], double v[], double ar[], Integer *nvl, Integer *ifail)
The routine may be called by the names g13acf or nagf_tsa_uni_autocorr_part.

## 3Description

The data consist of values of autocorrelation coefficients ${r}_{1},{r}_{2},\dots ,{r}_{K}$, relating to lags $1,2,\dots ,K$. These will generally (but not necessarily) be sample values such as may be obtained from a time series ${x}_{t}$ using g13abf.
The partial autocorrelation coefficient at lag $l$ may be identified with the parameter ${p}_{l,l}$ in the autoregression
 $xt = cl + pl,1 xt-1 + pl,2 xt-2 +⋯+ pl,l xt-l + el,t$
where ${e}_{l,t}$ is the predictor error.
The first subscript $l$ of ${p}_{l,l}$ and ${e}_{l,t}$ emphasizes the fact that the parameters will in general alter as further terms are introduced into the equation (i.e., as $l$ is increased).
The parameters are determined from the autocorrelation coefficients by the Yule–Walker equations
 $ri = pl,1 ri-1 + pl,2 ri-2 +⋯+ pl,l ri-l , i=1,2,…,l$
taking ${r}_{j}={r}_{|j|}$ when $j<0$, and ${r}_{0}=1$.
The predictor error variance ratio ${v}_{l}=\mathrm{var}\left({e}_{l,t}\right)/\mathrm{var}\left({x}_{t}\right)$ is defined by
 $vl = 1- pl,1 r1 - pl,2 r2 -⋯- pl,l rl .$
The above sets of equations are solved by a recursive method (the Durbin–Levinson algorithm). The recursive cycle applied for $l=1,2,\dots ,\left(L-1\right)$, where $L$ is the number of partial autocorrelation coefficients required, is initialized by setting ${p}_{1,1}={r}_{1}$ and ${v}_{1}=1-{r}_{1}^{2}$.
Then
 $p l + 1 , l + 1 = ( r l + 1 - p l , 1 r l - p l , 2 r l - 1 -⋯- p l , l r 1 ) / v l p l + 1 , j = p l , j - p l + 1 , l + 1 p l , l + 1 - j , j=1,2,…,l v l + 1 = v l ( 1 - p l + 1 , l + 1 ) (1+ p l + 1 , l + 1 ) .$
If the condition $|{p}_{l,l}|\ge 1$ occurs, say when $l={l}_{0}$, it indicates that the supplied autocorrelation coefficients do not form a positive definite sequence (see Hannan (1960)), and the recursion is not continued. The autoregressive parameters are overwritten at each recursive step, so that upon completion the only available values are ${p}_{Lj}$, for $\mathit{j}=1,2,\dots ,L$, or ${p}_{{l}_{0}-1,j}$ if the recursion has been prematurely halted.

## 4References

Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day
Durbin J (1960) The fitting of time series models Rev. Inst. Internat. Stat. 28 233
Hannan E J (1960) Time Series Analysis Methuen

## 5Arguments

1: $\mathbf{r}\left({\mathbf{nk}}\right)$Real (Kind=nag_wp) array Input
On entry: the autocorrelation coefficient relating to lag $\mathit{k}$, for $\mathit{k}=1,2,\dots ,K$.
2: $\mathbf{nk}$Integer Input
On entry: $K$, the number of lags. The lags range from $1$ to $K$ and do not include zero.
Constraint: ${\mathbf{nk}}>0$.
3: $\mathbf{nl}$Integer Input
On entry: $L$, the number of partial autocorrelation coefficients required.
Constraint: $0<{\mathbf{nl}}\le {\mathbf{nk}}$.
4: $\mathbf{p}\left({\mathbf{nl}}\right)$Real (Kind=nag_wp) array Output
On exit: ${\mathbf{p}}\left(\mathit{l}\right)$ contains the partial autocorrelation coefficient at lag $\mathit{l}$, ${p}_{\mathit{l},\mathit{l}}$, for $\mathit{l}=1,2,\dots ,{\mathbf{nvl}}$.
5: $\mathbf{v}\left({\mathbf{nl}}\right)$Real (Kind=nag_wp) array Output
On exit: ${\mathbf{v}}\left(\mathit{l}\right)$ contains the predictor error variance ratio ${v}_{\mathit{l}}$, for $\mathit{l}=1,2,\dots ,{\mathbf{nvl}}$.
6: $\mathbf{ar}\left({\mathbf{nl}}\right)$Real (Kind=nag_wp) array Output
On exit: the autoregressive parameters of maximum order, i.e., ${p}_{L\mathit{j}}$ if ${\mathbf{ifail}}={\mathbf{0}}$, or ${p}_{{l}_{0}-1,\mathit{j}}$ if ${\mathbf{ifail}}={\mathbf{3}}$, for $\mathit{j}=1,2,\dots ,{\mathbf{nvl}}$.
7: $\mathbf{nvl}$Integer Output
On exit: the number of valid values in each of p, v and ar. Thus in the case of premature termination at iteration ${l}_{0}$ (see Section 3), nvl is returned as ${l}_{0}-1$.
8: $\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}}=1$
On entry, ${\mathbf{nk}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nk}}>0$.
On entry, ${\mathbf{nk}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{nl}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nk}}\ge {\mathbf{nl}}$.
On entry, ${\mathbf{nl}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nl}}>0$.
${\mathbf{ifail}}=2$
On entry, the autocorrelation coefficient of lag $1$ has absolute value greater than or equal to $1$.
${\mathbf{ifail}}=3$
The autocorrelation coefficients do not form a positive definite sequence. The number of valid values computed are returned in nvl (see Section 3 for more details).
${\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

The computations are believed to be stable.

## 8Parallelism and Performance

g13acf is not threaded in any implementation.

The time taken by g13acf is proportional to ${\left({\mathbf{nvl}}\right)}^{2}$.

## 10Example

This example uses an input series of $10$ sample autocorrelation coefficients derived from the original series of sunspot numbers generated by the g13abf example program. The results show five values of each of the three output arrays: partial autocorrelation coefficients, predictor error variance ratios and autoregressive parameters. All of these were valid.

### 10.1Program Text

Program Text (g13acfe.f90)

### 10.2Program Data

Program Data (g13acfe.d)

### 10.3Program Results

Program Results (g13acfe.r)
This plot shows the partial autocorrelations for all possible lag values. Reference lines are given at $±{z}_{0.975}/\sqrt{n}$.