*! phtest1 *! version 1.0.0 William H. Rogers (STB-19: ssa4) program define phtest1 version 3.1 local varlist "req ex" local if "opt" local in "opt" local options "Iact(string) AT(string) DIVide(real .5) DEad(string)" parse "`*'" local vlist "`varlist'" local dv "`1'" preserve quietly { if "`if'`in'"!="" { keep `if' `in' local if local in } tempvar mdead obs new oldll if "`dead'"=="" { tempvar dead gen byte `dead' = 1 } cox `vlist', dead(`dead') scalar `oldll' = _result(2) local df = _result(3) if "`at'"=="" { gen byte `mdead' = - `dead' sort `mdead' `dv' count if `dead'==1 tempvar at scalar `at' = `dv'[int(_result(1)*`divide')] } noisily di "Proportional hazards test with division just prior to t = " %9.0g `at' gen `new' = 1 + (`dv'>`at') gen long `obs' = _n expand `new' sort `obs' by `obs': replace `new' = _n==1 if "`iact'"=="" { tempvar iact predict `iact' } local varlist "req ex" parse "`iact'" parse "`varlist'", parse(" ") while "`1'"!="" { tempvar tv gen `tv' = `1' * `new' local nvl "`nvl' `tv'" mac shift } replace `new' = (`new'==1 & `dv'>`at') replace `dead' = 0 if `new'==1 replace `dv' = `at' if `new'==1 cox `vlist' `nvl', dead(`dead') tvid(`obs') tempvar newll scalar `newll' = _result(2) local ndf = _result(3) global S_1 = `ndf'-`df' global S_2 = 2*(`newll'-`oldll') noisily di "Chi-square(" in ye $S_1 in gr ") = " in ye /* */ %8.2f $S_2 in gr ", P = " in ye %8.4f chiprob($S_1,$S_2) } end