﻿ g13bd Method
g13bd calculates preliminary estimates of the parameters of a transfer function model.

# Syntax

C#
```public static void g13bd(
double r0,
double[] r,
int nl,
int[] nna,
double s,
int nwds,
double[] wds,
int[] isf,
out int ifail
)```
Visual Basic
```Public Shared Sub g13bd ( _
r0 As Double, _
r As Double(), _
nl As Integer, _
nna As Integer(), _
s As Double, _
nwds As Integer, _
wds As Double(), _
isf As Integer(), _
<OutAttribute> ByRef ifail As Integer _
)```
Visual C++
```public:
static void g13bd(
double r0,
array<double>^ r,
int nl,
array<int>^ nna,
double s,
int nwds,
array<double>^ wds,
array<int>^ isf,
[OutAttribute] int% ifail
)```
F#
```static member g13bd :
r0 : float *
r : float[] *
nl : int *
nna : int[] *
s : float *
nwds : int *
wds : float[] *
isf : int[] *
ifail : int byref -> unit
```

#### Parameters

r0
Type: System..::..Double
On entry: the cross-correlation between the two series at lag $0$, ${r}_{xy}\left(0\right)$.
Constraint: $-1.0\le {\mathbf{r0}}\le 1.0$.
r
Type: array<System..::..Double>[]()[][]
An array of size [nl]
On entry: the cross-correlations between the two series at lags $1$ to $L$, ${r}_{xy}\left(\mathit{l}\right)$, for $\mathit{l}=1,2,\dots ,L$.
Constraint: $-1.0\le {\mathbf{r}}\left[\mathit{i}\right]\le 1.0$, for $\mathit{i}=0,1,\dots ,{\mathbf{nl}}-1$.
nl
Type: System..::..Int32
On entry: $L$, the number of lagged cross-correlations in the array r.
Constraint: ${\mathbf{nl}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{nna}}\left[0\right]+{\mathbf{nna}}\left[1\right]+{\mathbf{nna}}\left[2\right],1\right)$.
nna
Type: array<System..::..Int32>[]()[][]
An array of size [$3$]
On entry: the transfer function model orders in the standard form $b,q,p$ (i.e., delay time, number of moving-average MA-like followed by number of autoregressive AR-like parameters).
Constraint: ${\mathbf{nna}}\left[\mathit{i}-1\right]\ge 0$, for $\mathit{i}=1,2,3$.
s
Type: System..::..Double
On entry: the ratio of the standard deviation of the $y$ series to that of the $x$ series, ${s}_{y}/{s}_{x}$.
Constraint: ${\mathbf{s}}>0.0$.
nwds
Type: System..::..Int32
On entry: the exact number of parameters in the transfer function model.
Constraint: ${\mathbf{nwds}}={\mathbf{nna}}\left[1\right]+{\mathbf{nna}}\left[2\right]+1$.
wds
Type: array<System..::..Double>[]()[][]
An array of size [nwds]
On exit: the preliminary estimates of the parameters of the transfer function model in the order of $q+1$ MA-like parameters followed by the $p$ AR-like parameters. If the estimation of either type of parameter fails then these parameters are set to $0.0$.
isf
Type: array<System..::..Int32>[]()[][]
An array of size [$2$]
On exit: indicators of the success of the estimation of MA-like and AR-like parameters respectively. A value $0$ indicates that there are no parameters of that type to be estimated. A value of $1$ or $-1$ indicates that there are parameters of that type in the model and the estimation of that type has been successful or unsuccessful respectively. Note that there is always at least one MA-like parameter in the model.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

# Description

g13bd calculates estimates of parameters ${\delta }_{1},{\delta }_{2},\dots ,{\delta }_{p}$, ${\omega }_{0},{\omega }_{1},\dots ,{\omega }_{q}$ in the transfer function model
 $yt=δ1yt-1+δ2yt-2+⋯+δpyt-p+ω0xt-b-ω1xt-b-1-⋯-ωqxt-b-q$
given cross-correlations between the series ${x}_{t}$ and lagged values of ${y}_{t}$:
 $rxyl, l=0,1,…,L$
and the ratio of standard deviations ${s}_{y}/{s}_{x}$, as supplied by g13bc.
It is assumed that the series ${x}_{t}$ used to calculate the cross-correlations is a sample from a time series with true autocorrelations of zero. Otherwise the cross-correlations between the series ${b}_{t}$ and ${a}_{t}$, as defined in the description of g13ba, should be used in place of those between ${y}_{t}$ and ${x}_{t}$.
The estimates are obtained by solving for ${\delta }_{1},{\delta }_{2},\dots ,{\delta }_{p}$ the equations
 $rxyb+q+j=δ1rxyb+q+j-1+⋯+δprxyb+q+j-p, j=1,2,…,p$
then calculating
 $ωi=±sy/sxrxyb+i-δ1rxyb+i-1-⋯-δprxyb+i-p, i=0,1,…,q$
where the ‘$+$’ is used for ${\omega }_{0}$ and ‘$-$’ for ${\omega }_{i}$, $i>0$.
Any value of ${r}_{xy}\left(l\right)$ arising in these equations for $l is taken as zero. The parameters ${\delta }_{1},{\delta }_{2},\dots ,{\delta }_{p}$ are checked as to whether they satisfy the stability criterion.

# References

Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{nna}}\left[\mathit{i}-1\right]<0$, for $\mathit{i}=1,2,3$, or ${\mathbf{nl}}<\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{nna}}\left[0\right]+{\mathbf{nna}}\left[1\right]+{\mathbf{nna}}\left[2\right],1\right)$, or ${\mathbf{r0}}<-1.0$ or ${\mathbf{r0}}>1.0$, or ${\mathbf{r}}\left[i-1\right]<-1.0$ or ${\mathbf{r}}\left[i-1\right]>1.0$, for some $i=1,2,\dots ,{\mathbf{nl}}$, or ${\mathbf{s}}\le 0.0$, or ${\mathbf{nwds}}\ne {\mathbf{nna}}\left[1\right]+{\mathbf{nna}}\left[2\right]+1$, or ${\mathbf{iwa}}<{\mathbf{nna}}\left[2\right]×\left({\mathbf{nna}}\left[2\right]+1\right)$.
${\mathbf{ifail}}=-999$
Internal memory allocation failed.
${\mathbf{ifail}}=-9000$
An error occured, see message report.
${\mathbf{ifail}}=-8000$
Negative dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$

# Accuracy

Equations used in the computations may become unstable, in which case results are reset to zero with array isf values set accordingly.

# Parallelism and Performance

None.

If ${\mathbf{nna}}\left[2\right]>0$,a local workspace array of fixed length is allocated internally by g13bd. The total size of this array amounts to ${\mathbf{nna}}\left[2\right]$ integer elements and ${\mathbf{nna}}\left[2\right]×\left({\mathbf{nna}}\left[2\right]+1\right)$ real elements.
The time taken by g13bd is roughly proportional to ${{\mathbf{nwds}}}^{3}$.

# Example

This example reads the cross-correlations between two series at lags $0$ to $6$. It then reads a $\left(3,2,1\right)$ transfer function model and calculates and prints the preliminary estimates of the parameters of the model.

Example program (C#): g13bde.cs

Example program data: g13bde.d

Example program results: g13bde.r