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 *.