function [dh, dhsig] = durbinh (dw, se2, n, h1)
%DURBINH Durbin h statistic and significance of the hypothesis of no serial correlation
%
% [DH, DHSIG] = DURBINH (DW, SE2, N, H1)
%
%  - computes the Durbin h statistic DH (a statistic of autocorrelation which is robust to
%    the inclusion of lagged dependent variables in the regression, see Durbin, 1970), and
%
%  - evaluates the associated null hypothesis of no serial correlation
%    * against the alternative of EITHER positive OR negative autocorrelation
%      if flag H1 is 1 (one-sided test), or
%    * against the alternative of ANY autocorrelation
%      if flag H1 is 2 (two-sided test, default),
%    and returns the level of significance DHSIG at which H0 is rejected.
%
% Required input arguments are
%
%  - the Durbin-Watson statistic DW, computed from the residuals of the associated
%    regression, using, for example, the author's DWATSON m-function,
%  - the est. standard error SE2 of the coefficient of the 1st lag in the regression, and
%  - the number of residuals N (= OBS - DLAGS - 1).
%
% If the MATLAB Statistics Toolbox is not installed, DHSIG assumes NaN. If N*SE2^2 >= 1,
% the Durbin h statistic cannot be calculated, and so both DH and DHSIG assume NaN.
%
%    The author assumes no responsibility for errors or damage resulting from usage. All
%    rights reserved. Usage of the programme in applications and alterations of the code
%    should be referenced. This script may be redistributed if nothing has been added or
%    removed and nothing is charged. Positive or negative feedback would be appreciated.

%                     Copyright (c) 17 March 1998 by Ludwig Kanzler
%                     Department of Economics, University of Oxford
%                     Postal: Christ Church,  Oxford OX1 1DP,  U.K.
%                     E-mail: ludwig.kanzler@economics.oxford.ac.uk
%                     Homepage:      http://users.ox.ac.uk/~econlrk
%                     $ Revision: 1.11 $$ Date: 15 September 1998 $

if nargin == 3
   h1 = 2;
end

dh = (1-dw/2) * sqrt(n/(1-n*se2^2));

if isreal(dh)
   if h1 == 1 & exist('normcdf.m','file')
      dhsig = 1-normcdf(dh,0,1);
   elseif exist('normcdf.m','file') & nargout == 2
      dhsig = min(normcdf(dh,0,1), 1-normcdf(dh,0,1))*2;
   elseif nargout == 2
      dhsig = NaN;
   end
else
   dh       = NaN;
   dhsig    = NaN;
end

% End of function.

% REFERENCE:
%
% Durbin, James (1970), "Testing for Serial Correlation in Least-Squares Regression When
%    Some of the Regressors are Lagged Dependent Variables", Econometrica, vol. 38, no. 3
%    (May), pp. 410-421
%
% SEE ALSO:
%
% Harvey, Andrew (1990), "The Econometric Analysis of Time Series", 2nd edition, MIT
%    Press, Cambridge, Massachusetts, pp. 275-277
%
% Judge, George, Carter Hill, William Griffiths, Helmut L¸tkepohl & Tsoung-Chao Lee
%    (1988), "Introduction to the Theory and Practice of Econometrics", 2nd edition, John
%    Wiley & Sons, New York, p. 401

% End of file.
