When data set of interest is a time series data, we may want to compute the 1st-order autocorrelation for the variables of interest and to test if the autocorrelation is zero. One common test is Durbin-Watson test. The Durbin-Watson test statistic can be computed in proc reg by using option dw after the model statement.
Here are two examples using data set https://stats.idre.ucla.edu/wp-content/uploads/2016/02/sp500.sas7bdat. The variables of interest are open, close, high, low and volume.
Example 1: Computing Durbin-Watson Statistic for a variable.
proc reg data = sp500; model open = /dw; run; quit; Dependent Variable: openAnalysis of Variance Sum of Mean Source DF Squares Square F Value Pr > F Model 0 0 . . . Error 247 1875052 7591.30215 Corrected Total 247 1875052Root MSE 87.12808 R-Square 0.0000 Dependent Mean 1194.88379 Adj R-Sq 0.0000 Coeff Var 7.29176Parameter EstimatesParameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 1194.88379 5.53264 215.97 <.0001 Durbin-Watson D 0.034 Number of Observations 248 1st Order Autocorrelation 0.979
The value of Durbin-Watson statistic is close to 2 if the errors are uncorrelated. In our example, it is .034. That means that there is a strong evidence that the variable open has high autocorrelation.
Example 2: Output 1st-order autocorrelation of multiple variables into a data set
Let’s say that we want to compute the 1st-order autocorrelation for all the variables of interest. We can make use of the ODS facility to output the 1st-order autocorrelation for each variable to a data set called auto_corr.
proc reg data = sp500;
model open high low close volume = /dw;
ods output dwstatistic = auto_corr
(where=(label1="1st Order Autocorrelation")) ;
run;
quit;
proc print data = auto_corr noobs;
var dependent label1 cvalue1;
run;
c
Dependent Label1 Value1
open 1st Order Autocorrelation 0.979
high 1st Order Autocorrelation 0.984
low 1st Order Autocorrelation 0.983
close 1st Order Autocorrelation 0.981
volume 1st Order Autocorrelation 0.545
