*! version 1.0.7 CFBaum 21oct2003 from *! version 1.0.6 20nov2002 * 1.0.7: enable onepanel program define dwstat2, rclass version 6 syntax [if] [in] [, noDetail noSample ] marksample touse if "`sample'" == "" { qui replace `touse' = 0 if !e(sample) } /* get time variables */ if "`if'" == "" { local if "if e(sample)" _ts timevar panelvar `if' `in', sort onepanel markout `touse' `timevar' /* fetch residuals */ tempname res dw qui predict double `res' if `touse' , res tsreport if `touse', report return scalar N_gaps = r(N_gaps) qui count if `touse' return scalar N = r(N) return scalar k = e(N) - e(df_r) DW `dw' : `res' return scalar dw = `dw' di _n in gr "Durbin-Watson d-statistic(" /* */ in ye %3.0f return(k) in gr "," in ye %6.0f return(N) /* */ in gr ") = " in ye %9.0g `dw' end /* Compute Durbin-Watson statistic -- over all resids */ program define DW args scl_dw /* scalar name to hold DW result */ colon /* : */ resids /* residuals */ tempvar tres tempname esqlag qui gen double `tres' = (`resids' - l.`resids')^2 sum `tres', meanonly scalar `esqlag' = r(sum) drop `tres' qui gen double `tres' = `resids' * `resids' sum `tres', meanonly scalar `scl_dw' = `esqlag' / r(sum) end exit Durbin-Watson d-statistic( #, #): 1.2345678 Note: sample has gaps, statistic may not follow exact d-statistic distribution. --------------------------------------------------------------- | Numerator Denominator --------------------------------------+------------------------ Obervations used | 65 64 Observations with assumed 0 elements | 0 0 --------------------------------------+------------------------