/*---------------------------------------------------------------------------- pac -- Program to display partial autocorrelations. Written by Sean Becketti, August 1989. ----------------------------------------------------------------------------*/ program define pac version 2.1 quietly { if "%_*"=="" { di in bl "-> pac varname [if] [in], [nlags(#)] [noconstant]" exit } mac def _varlist "req ex max(1)" mac def _if "opt" mac def _in "opt" mac def _options "Nlags(int 20) noConstant" parse "%_*" if %_nlags<=0 { di in re "nlags must be positive" exit } mac def _nlags = min(%_nlags,_N-5) mac def _S_FN "%S_FN" mac def _x "%_varlist" save t_e_m_p, replace cap drop _L* lag %_x, n(%_nlags) s(x) cap drop _lag cap drop _pac cap drop _pacse cap drop _mpacse gen int _lag = _n lab var _lag "Lag" gen float _pac = . lab var _pac "Partial autocorrelations" mac def _l = 0 while (%_l < %_nlags) { mac def _l = %_l + 1 if (%_l==1) { reg %_x _Lx %_if %_in, %_constan replace _pac = _b[_Lx] in %_l } if (%_l>1) { reg %_x _Lx-_L`%_l`x %_if %_in, %_constan replace _pac = _b[_L`%_l`x] in %_l } } count if %_x~=. gen float _pacse = sqrt(1/_result(1)) in f/%_nlags lab var _pacse "SE band" gen float _mpacse = -_pacse lab var _mpacse " " mac def _xlab : variable label %_x if "%_xlab"=="" { mac def _xlab "%_x" } gr _pac _pacse _mpacse _lag, yline(0) border c(lll) s(o.i) pen(277) /* */ ylab(-1,-.5,0,.5,1) rlab(-1,-.5,0,.5,1) xlab /* */ title("Partial autocorrelations of %_xlab") saving(sts1_3) use t_e_m_p, clear erase t_e_m_p.dta mac def S_FN "%_S_FN" } end