/* 1. This program uses the kidney dialysis patients data in Klein's book, the data was used for midterm exam. 2. The events are: 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 8.5, 9.5, 10.5, 11.5, 15.5, 16.5, 18.5, 23.5, 26.5. 3. We will fit piecewise proportinal hazard model, first find the optimal cut point by defining two time-dependent covariates aftert and pret, then check PH assumption for each interval by introducing aftert*log(t) and pret * log(t). */ options ls = 80; libname fu '../../test1'; data work; set fu.kidd; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 3.5 then aftert = cath; else aftert = 0; if survt <= 3.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 5.5 then aftert = cath; else aftert = 0; if survt <= 5.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 8.5 then aftert = cath; else aftert = 0; if survt <= 8.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 9.5 then aftert = cath; else aftert = 0; if survt <= 9.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 10.5 then aftert = cath; else aftert = 0; if survt <= 10.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 11.5 then aftert = cath; else aftert = 0; if survt <= 11.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 15.5 then aftert = cath; else aftert = 0; if survt <= 15.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 16.5 then aftert = cath; else aftert = 0; if survt <= 16.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 18.5 then aftert = cath; else aftert = 0; if survt <= 18.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 23.5 then aftert = cath; else aftert = 0; if survt <= 23.5 then pret = cath; else pret = 0; proc phreg; model survt*censor(0) = aftert pret/risklimits; if survt > 26.5 then aftert = cath; else aftert = 0; if survt <= 26.5 then pret = cath; else pret = 0; run;