*! version 1.0.2 15jul2001 C F Baum * Performs multivariate augmented Dickey-Fuller (MADF) test on long format data * per L. Sarno and M. Taylor, Economics Letters 60, 131-137 (1998) * 1.0.2: implement ts operators program define madfuller, rclass version 7.0 syntax varname(ts) [if] [in] , Lags(numlist int >0) /* [ Trend ] */ qui tsset local id `r(panelvar)' local time `r(timevar)' marksample touse markout `touse' `time' tsreport if `touse', report panel if r(N_gaps) { di in red "sample may not contain gaps" error 198 } qui xtsum `id' if `touse' local N `r(n)' local T `r(Tbar)' if int(`T')*`N' ~= r(N) { di in red "panel must be balanced" error 198 } if `T' <= `N' { di in red "T must exceed N for sureg" error 198 } preserve tempvar vvar qui gen `vvar' = `varlist' if `touse' keep `id' `time' `vvar' `touse' tempname Vals qui tab `id' if `touse', matrow(`Vals') local nvals = r(r) local i = 1 while `i' <= `nvals' { local val = `Vals'[`i',1] local vals "`vals' `val'" local i = `i' + 1 } qui drop if `touse'==0 qui reshape wide `vvar', i(`time') j(`id') di as text _n "Multivariate Augmented Dickey-Fuller test for " as result "`varlist'" di as text "with " as result "`T'" as text " observations on "/* */ as result "`N'" as text " cross-sectional units" di as text "{hline 59}" di as text " Obs Lags MADF Approx 5% CV" di as text "{hline 59}" foreach k of local lags { local rhs "" foreach i of local vals { local rhs "`rhs' (`vvar'`i' L(1/`k').`vvar'`i')" } qui tsset `time' qui sureg "`rhs'", not local kn `e(N)' scalar fpc = 11.12 + 720.82/`kn' - 15646.71 / (`kn'*`kn') + 246820.8 / (`kn'*`kn'*`kn') local j 0 foreach i of local vals { local j = `j' + 1 local test`j' "" local lm1 = `k' - 1 forv m= 1/`lm1' { local test`j' "`test`j'' [`vvar'`i']L`m'.`vvar'`i' +" } local test`j' "`test`j'' [`vvar'`i']L`k'.`vvar'`i'== 1, not" if `j'>1 { local test`j' "`test`j'' accum" } qui test `test`j'' } qui test di as result _col(6) %5.0f `kn' _col(17) %2.0f `k' _col(22) %9.3f `r(chi2)' /* */ _col(39) %7.3f fpc } di as text "{hline 59}" di as text "H0: all `N' timeseries in the panel are I(1) processes" restore end exit