Survival Analysis Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | * Survival Analysis Example. * Posted to SPSSX-L on 2004/05/13 by Marta Garcia-Granero. * Dataset slightly modified (some leukocytes data changed) from Selvin S (1996) "Statistical analysis of epidemiological data" Oxford University Press * * Survival times of 33 patients with acute mieloid leukhaemia *. DATA LIST FREE /time(F8.1) status auer_r leuko (3 F8.0). BEGIN DATA 65.0 1 0 2300 156.0 1 0 750 100.0 1 0 4300 134.0 1 0 2600 16.0 1 0 16000 108.0 1 0 10500 121.0 1 0 10000 4.0 1 0 17000 69.0 1 0 5400 143.0 1 0 7000 56.0 1 0 9400 26.0 1 0 32000 22.0 1 0 35000 1.0 1 0 100000 1.0 1 0 130000 5.0 1 0 52000 65.0 1 0 100000 65.0 1 1 3000 17.0 1 1 4000 7.0 1 1 1500 16.0 1 1 9000 22.0 1 1 5300 3.0 1 1 10000 4.0 1 1 19000 2.0 1 1 27000 3.0 1 1 28000 8.0 1 1 31000 4.0 1 1 26000 3.0 1 1 21000 30.0 1 1 79000 4.0 1 1 100000 43.0 1 1 100000 56.0 1 1 4400 END DATA. VAR LABELS time "Follow-up time (weeks)" /status "Censoring status" /auer_r "Auer Rods" /leuko "Leucocytes (counts/mmі)". VALUE LABELS status 0 "Alive" 1 "Dead" /auer_r 0 "Presents" 1 "Absents". * Kaplan-Meier analysis *. KM time BY auer_r /STATUS=status(1) /PRINT TABLE MEAN /PLOT SURVIVAL /TEST LOGRANK /COMPARE OVERALL POOLED . RANK VARIABLES=leuko (A) /NTILES (3) /PRINT=NO /TIES=CONDENSE . VAR LABELS nleuko "Leukocytes in 3 cat.". VALUE LABELS nleuko 1 "Lower 3rd (<7.000 mmі)" 2 "Middle 3rd (7.000-27.000 mmі)" 3 "Upper 3rd (>27.000 mmі)". KM time BY nleuko /STATUS=status(1) /PRINT TABLE MEAN /PLOT SURVIVAL /TEST LOGRANK /COMPARE OVERALL POOLED . * Pair-wise comparisons *. KM time BY nleuko /STATUS=status(1) /PRINT NONE /TEST LOGRANK /COMPARE PAIRWISE POOLED . * Stratified analysis *. KM time BY auer_r /STRATA=nleuko /STATUS=status(1) /PRINT TABLE MEAN /PLOT SURVIVAL /TEST LOGRANK /COMPARE OVERALL POOLED . KM time BY nleuko/STRATA=auer_r /STATUS=status(1) /PRINT TABLE MEAN /PLOT SURVIVAL /TEST LOGRANK /COMPARE OVERALL POOLED . * Comments: from the graphs, interaction is suspected *. * Cox univariate *. COXREG time /STATUS=status(1) /CONTRAST (auer_r)=Indicator(1) /METHOD=ENTER auer_r /PRINT=CI(95) /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) . COXREG time /STATUS=status(1) /METHOD=ENTER leuko /PRINT=CI(95) /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) . * Comment: the increase in HR associated to 1 leukocyte count change is small, it's better to work with 1000 counts increase *. COMPUTE thouleuk = leuko / 1000 . EXECUTE . COXREG time /STATUS=status(1) /METHOD=ENTER thouleuk /PRINT=CI(95) /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) . * Cox main effects, BSTEP(LR) with PIN(1)&POUT(1) is used to get LR adjusted tests (better - more sensitive - than Wald tests )*. COXREG time /STATUS=status(1) /CONTRAST (auer_r)=Indicator(1) /METHOD=BSTEP(LR) auer_r thouleuk /PRINT=CI(95) /CRITERIA=PIN(1) POUT(1) ITERATE(20) . * Model with interaction *. COXREG time /STATUS=status(1) /CONTRAST (auer_r)=Indicator(1) /METHOD=BSTEP(LR) auer_r thouleuk auer_r*thouleuk /PRINT=CI(95) /CRITERIA=PIN(1) POUT(1) ITERATE(20) . * Graphical presentation of the interaction: *. COMPUTE hr=EXP(1.924*auer_r + 0.022*thouleuk -0.022*auer_r*thouleuk). * (coefficients read from the output ) *. EXEC. GRAPH /SCATTERPLOT(BIVAR)=thouleuk WITH hr BY auer_r. * Edit the graph to add fit lines to both subgroups *. * Extras: verification of the proportional hazards assumption *. * (a) LML (Log Minus Log) graph (qualitative predictors or categorized quantitative) *. * If we try to get the LML graph this way: *. COXREG time /STATUS=status(1) /PATTERN BY auer_r /CONTRAST (auer_r)=Indicator(1) /METHOD=ENTER auer_r /PLOT LML. * We'll ALWAYS get an image of absolute proportionality because the ESTIMATED LML are plotted, not the OBSERVED. * The correct way is: *. COXREG time /STATUS=status(1) /STRATA=auer_r /PLOT LML. * This will give the observed LML for both groups, not the predicted by the regression model *. * (b) For quantitative predictors, the way of testing the proportionality assumption is Cox model with time-dep covariate. Check it in 2 ways: using time or LN(time) for the T_COV_ expression: *. TIME PROGRAM. COMPUTE T_COV_ = T_*thouleuk . COXREG time /STATUS=status(1) /METHOD=BSTEP(LR) T_COV_ thouleuk /PRINT=CI(95) /CRITERIA=PIN(1) POUT(1) ITERATE(20) . * LR test p-value is=0.781 (ns), the proportionality assumption is not violated for leukocytes *. |
Related pages
...