g02fc calculates the Durbin–Watson statistic, for a set of residuals, and the upper and lower bounds for its significance.


public static void g02fc(
	int n,
	int ip,
	double[] res,
	out double d,
	out double pdl,
	out double pdu,
	out int ifail
Visual Basic
Public Shared Sub g02fc ( _
	n As Integer, _
	ip As Integer, _
	res As Double(), _
	<OutAttribute> ByRef d As Double, _
	<OutAttribute> ByRef pdl As Double, _
	<OutAttribute> ByRef pdu As Double, _
	<OutAttribute> ByRef ifail As Integer _
Visual C++
static void g02fc(
	int n, 
	int ip, 
	array<double>^ res, 
	[OutAttribute] double% d, 
	[OutAttribute] double% pdl, 
	[OutAttribute] double% pdu, 
	[OutAttribute] int% ifail
static member g02fc : 
        n : int * 
        ip : int * 
        res : float[] * 
        d : float byref * 
        pdl : float byref * 
        pdu : float byref * 
        ifail : int byref -> unit 


Type: System..::..Int32
On entry: n, the number of residuals.
Constraint: n>ip.
Type: System..::..Int32
On entry: p, the number of independent variables in the regression model, including the mean.
Constraint: ip1.
Type: array<System..::..Double>[]()[][]
An array of size [n]
On entry: the residuals, r1,r2,,rn.
Constraint: the mean of the residuals ε, where ε=machine precision.
Type: System..::..Double%
On exit: the Durbin–Watson statistic, d.
Type: System..::..Double%
On exit: lower bound for the significance of the Durbin–Watson statistic, pl.
Type: System..::..Double%
On exit: upper bound for the significance of the Durbin–Watson statistic, pu.
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).


For the general linear regression model
where y is a vector of length n of the dependent variable,
X is a n by p matrix of the independent variables,
β is a vector of length p of unknown parameters,
and ε is a vector of length n of unknown random errors.
The residuals are given by
and the fitted values, y^=Xβ^, can be written as Hy for a n by n matrix H. Note that when a mean term is included in the model the sum of the residuals is zero. If the observations have been taken serially, that is y1,y2,,yn can be considered as a time series, the Durbin–Watson test can be used to test for serial correlation in the εi, see Durbin and Watson (1950)Durbin and Watson (1951) and Durbin and Watson (1971).
The Durbin–Watson statistic is
Positive serial correlation in the εi will lead to a small value of d while for independent errors d will be close to 2. Durbin and Watson show that the exact distribution of d depends on the eigenvalues of the matrix HA where the matrix A is such that d can be written as
and the eigenvalues of the matrix A are λj=1-cosπj/n, for j=1,2,,n-1.
However bounds on the distribution can be obtained, the lower bound being
and the upper bound being
where the ui are independent standard Normal variables. The lower tail probabilities associated with these bounds, pl and pu, are computed by g01ep. The interpretation of the bounds is that, for a test of size (significance) α, if plα the test is significant, if pu>α the test is not significant, while if pl>α and puα no conclusion can be reached.
The above probabilities are for the usual test of positive auto-correlation. If the alternative of negative auto-correlation is required, then a call to g01ep should be made with the parameter d taking the value of 4-d; see Newbold (1988).


Durbin J and Watson G S (1950) Testing for serial correlation in least squares regression. I Biometrika 37 409–428
Durbin J and Watson G S (1951) Testing for serial correlation in least squares regression. II Biometrika 38 159–178
Durbin J and Watson G S (1971) Testing for serial correlation in least squares regression. III Biometrika 58 1–19
Granger C W J and Newbold P (1986) Forecasting Economic Time Series (2nd Edition) Academic Press
Newbold P (1988) Statistics for Business and Economics Prentice–Hall

Error Indicators and Warnings

Errors or warnings detected by the method:
On entry,nip,
On entry,the mean of the residuals was >ε, where ε=machine precision.
On entry,all residuals are identical.
An error occured, see message report.
Negative dimension for array value
Invalid Parameters value


The probabilities are computed to an accuracy of at least 4 decimal places.

Parallelism and Performance


Further Comments

If the exact probabilities are required, then the first n-p eigenvalues of HA can be computed and g01jd used to compute the required probabilities with the parameter c set to 0.0 and the parameter d set to the Durbin–Watson statistic d.


A set of 10 residuals are read in and the Durbin–Watson statistic along with the probability bounds are computed and printed.

Example program (C#): g02fce.cs

Example program data: g02fce.d

Example program results: g02fce.r

See Also