Hello Everyone,
 
I'm learning how to perform various statistical analyses in R. I'm checking my understanding by replicating examples from my SAS books. Below is an attempt to replicate a Cox Proportional Hazards model with a time-varying covariate. I think I'm doing this correctly but am not completely sure. I would appreciate it if someone could double-check my results. In case people find it helpful, I've pasted the SAS code below as well.  
 
The R results I'm getting are similar to the SAS results but not very close. For example, my coefficient for TRT is .2913 in R but SAS gives .3450. I'd like to be able to run the R Code with method  = "exact" to make it as same as the AS example but I can't seem to get it to work. R always says it's "not responding." Is there any chance it would run if I just waited long enough? And is there a better way I could do the analysis? I was thinking maybe I could do the analysis without restructuring my data, but I haven't been able to find anything like that. 
 
Thanks,
 
Paul
 
 
R Code:

#### Example 22.2: Hyalurise in Vitreous Hemorrhage ####
 
connection <- textConnection("
101  32 1 A 3  .   102  20 1 A 4 10   103 -52 0 A 3  .
104   4 0 A 4  .   105  24 1 A 4 52   106  41 1 A 3  .
107  32 0 A 4 12   108  32 1 A 4  .   109  25 0 A 3  .
110 -10 1 A 3  .   111   8 0 A 3  .   112  32 1 A 4  .
113 -52 0 A 4 38   114  45 1 A 3 36   115 -14 0 A 4  .
116   6 1 A 3  .   117 -52 1 A 4  .   118   9 0 A 4 28
119  13 1 A 3  .   120  36 0 A 4  .   121   6 1 A 4  .
122 -42 0 A 4  .   123  44 1 A 3 28   124 -52 0 A 3  .
125  23 1 A 4  .   126  30 1 A 3  .   127  16 0 A 3  .
128   2 1 A 3  .   129  21 0 A 3  6   130  26 1 A 4  .
131   8 0 A 3  .   132  46 1 A 4 18   133  21 1 A 4  .
134  14 1 A 3  .   135 -52 0 A 3  .   136 -24 1 A 3  .
137 -22 0 A 3  .   138 -35 0 A 3  .   139  19 1 A 3  .
140  24 1 A 4 20   141  31 1 A 3 12   142  28 0 A 4  .
143 -52 0 A 4 34   144 -52 1 A 3  .   145  35 0 A 3  .
146  40 1 A 4  .   147   4 0 A 3  .   148   7 1 A 4 24
149  -2 0 A 4  .   150  16 1 A 4  .   151  36 1 A 3  4
152  12 0 A 3  .   153  28 1 A 3  .   154  48 0 A 3 42
155 -38 1 A 3  .   156   9 1 A 3  .   157  11 0 A 3  .
158  20 0 A 4  .   159  30 1 A 4  .   160   6 1 A 4  .
201 -15 0 B 3  .   202  -4 1 B 3  .   203  10 1 B 4  .
204  10 0 B 4  .   205   8 0 B 3  .   206  11 1 B 3  .
207 -52 1 B 4  .   208  12 1 B 3  .   209  20 0 B 3  .
210  46 1 B 4  .   211  32 0 B 4 44   212  10 1 B 3  .
213  42 0 B 3  .   214  31 1 B 4 20   215   4 1 B 4  .
216 -24 0 B 3  .   217  20 1 B 3 33   218  16 0 B 3  .
219   2 1 B 3  .   220  25 1 B 4  .   221  11 0 B 4  .
222 -52 0 B 4  .   223  20 1 B 4  .   224   9 1 B 3  .
225  22 1 B 3  .   226  23 1 B 3  .   227  11 0 B 3  .
228  13 1 B 3  .   229  -7 0 B 4  .   230   8 1 B 4  .
231  37 1 B 4  .   232  32 0 B 4 26   233  24 1 B 3 10
234 -52 1 B 4  .   235  20 0 B 4  .   236  34 0 B 4  .
237  27 1 B 3  .   301  10 1 C 3  .   302 -10 0 C 4  8
303  32 1 C 4  .   304  14 1 C 4 20   305  24 0 C 3  .
306  14 1 C 4  .   307  36 0 C 3  .   308 -52 0 C 3  .
309   7 1 C 3  .   310   6 0 C 4  .   311   5 1 C 3  .
312   9 1 C 3  .   313  12 1 C 4  .   314  21 0 C 3  .
315  10 1 C 3  .   316  26 0 C 4 36   317 -52 1 C 4  .
318  10 1 C 3  .   319  27 0 C 4 12   320   5 1 C 3  .
321  34 1 C 3 16   322  14 0 C 4  .   323   6 1 C 3  .
324  22 1 C 4  .   325  45 0 C 4 12   326  16 0 C 3  .
327  15 1 C 3 30   328  33 0 C 4 22   329  20 1 C 3  .
330 -52 1 C 3 30   331   5 0 C 4  .   332  10 1 C 3  .
333  16 0 C 3  .   334  -2 1 C 4  .   335  17 0 C 4  .
336  16 0 C 4  .   337  16 1 C 3  .   338  33 1 C 3 20
339  24 0 C 3 11   340  12 1 C 3  .   341  27 1 C 4 18
342   2 1 C 4  .   343  -6 0 C 4  .   344 -20 1 C 4  .
345  14 0 C 3  .   346   3 1 C 3  .
")
 
vitclear <- data.frame(scan(connection, na.strings=".",
  list(PAT=0, RSPTIM=0, TRT=0, CENTER="", DENS=0, INFTIM=0)))
 
#RSPTIM = time (wks) from randomization to response (censored if negative)
#TRT    = 1 for Hyalurise, TRT = 0 for Saline
#CENTER = study center (A, B, or C)
#DENS   = 3, 4 for Grade 3 or 4, respectively
#INFTIM = time (wks) from randomization to onset of infection complications
 
vitclear$STATUS <- with(vitclear, ifelse(RSPTIM > 0, 1, 0))
vitclear$RSPTIM <- with(vitclear, abs(RSPTIM))
vitclear$CNT <- with(vitclear, ifelse(!is.na(INFTIM) & INFTIM < RSPTIM, 2, 1))
vitclear <- data.frame(lapply(vitclear, function(x) rep(x, vitclear$CNT)))
vitclear$CNT <- NULL
 
vitclear <- transform(vitclear,
    START = ifelse(!duplicated(PAT), 0, INFTIM),  
    STOP  = ifelse(!duplicated(PAT, fromLast=T), RSPTIM, INFTIM),
    INFCTN = ifelse(INFTIM > RSPTIM | is.na(INFTIM), 0, 1))
 
head(vitclear, 10)
 
library("survival")
model <- coxph(Surv(START, STOP, STATUS) ~ TRT + DENS + INFCTN, data = vitclear)
summary(model)

 
SAS CODE:
 
/*Example 22.2 (Hyalurise in Vitreous Hemorrhage) */
 
DATA VITCLEAR;
    INPUT PAT RSPTIM TRT CENTER $ DENS INFTIM @@;
    CENS   = (RSPTIM GE 0);
    RSPTIM = ABS(RSPTIM);
    DATALINES;
101  32 1 A 3  .   102  20 1 A 4 10   103 -52 0 A 3  .
104   4 0 A 4  .   105  24 1 A 4 52   106  41 1 A 3  .
107  32 0 A 4 12   108  32 1 A 4  .   109  25 0 A 3  .
110 -10 1 A 3  .   111   8 0 A 3  .   112  32 1 A 4  .
113 -52 0 A 4 38   114  45 1 A 3 36   115 -14 0 A 4  .
116   6 1 A 3  .   117 -52 1 A 4  .   118   9 0 A 4 28
119  13 1 A 3  .   120  36 0 A 4  .   121   6 1 A 4  .
122 -42 0 A 4  .   123  44 1 A 3 28   124 -52 0 A 3  .
125  23 1 A 4  .   126  30 1 A 3  .   127  16 0 A 3  .
128   2 1 A 3  .   129  21 0 A 3  6   130  26 1 A 4  .
131   8 0 A 3  .   132  46 1 A 4 18   133  21 1 A 4  .
134  14 1 A 3  .   135 -52 0 A 3  .   136 -24 1 A 3  .
137 -22 0 A 3  .   138 -35 0 A 3  .   139  19 1 A 3  .
140  24 1 A 4 20   141  31 1 A 3 12   142  28 0 A 4  .
143 -52 0 A 4 34   144 -52 1 A 3  .   145  35 0 A 3  .
146  40 1 A 4  .   147   4 0 A 3  .   148   7 1 A 4 24
149  -2 0 A 4  .   150  16 1 A 4  .   151  36 1 A 3  4
152  12 0 A 3  .   153  28 1 A 3  .   154  48 0 A 3 42
155 -38 1 A 3  .   156   9 1 A 3  .   157  11 0 A 3  .
158  20 0 A 4  .   159  30 1 A 4  .   160   6 1 A 4  .
201 -15 0 B 3  .   202  -4 1 B 3  .   203  10 1 B 4  .
204  10 0 B 4  .   205   8 0 B 3  .   206  11 1 B 3  .
207 -52 1 B 4  .   208  12 1 B 3  .   209  20 0 B 3  .
210  46 1 B 4  .   211  32 0 B 4 44   212  10 1 B 3  .
213  42 0 B 3  .   214  31 1 B 4 20   215   4 1 B 4  .
216 -24 0 B 3  .   217  20 1 B 3 33   218  16 0 B 3  .
219   2 1 B 3  .   220  25 1 B 4  .   221  11 0 B 4  .
222 -52 0 B 4  .   223  20 1 B 4  .   224   9 1 B 3  .
225  22 1 B 3  .   226  23 1 B 3  .   227  11 0 B 3  .
228  13 1 B 3  .   229  -7 0 B 4  .   230   8 1 B 4  .
231  37 1 B 4  .   232  32 0 B 4 26   233  24 1 B 3 10
234 -52 1 B 4  .   235  20 0 B 4  .   236  34 0 B 4  .
237  27 1 B 3  .   301  10 1 C 3  .   302 -10 0 C 4  8
303  32 1 C 4  .   304  14 1 C 4 20   305  24 0 C 3  .
306  14 1 C 4  .   307  36 0 C 3  .   308 -52 0 C 3  .
309   7 1 C 3  .   310   6 0 C 4  .   311   5 1 C 3  .
312   9 1 C 3  .   313  12 1 C 4  .   314  21 0 C 3  .
315  10 1 C 3  .   316  26 0 C 4 36   317 -52 1 C 4  .
318  10 1 C 3  .   319  27 0 C 4 12   320   5 1 C 3  .
321  34 1 C 3 16   322  14 0 C 4  .   323   6 1 C 3  .
324  22 1 C 4  .   325  45 0 C 4 12   326  16 0 C 3  .
327  15 1 C 3 30   328  33 0 C 4 22   329  20 1 C 3  .
330 -52 1 C 3 30   331   5 0 C 4  .   332  10 1 C 3  .
333  16 0 C 3  .   334  -2 1 C 4  .   335  17 0 C 4  .
336  16 0 C 4  .   337  16 1 C 3  .   338  33 1 C 3 20
339  24 0 C 3 11   340  12 1 C 3  .   341  27 1 C 4 18
342   2 1 C 4  .   343  -6 0 C 4  .   344 -20 1 C 4  .
345  14 0 C 3  .   346   3 1 C 3  .
;
 
PROC PHREG DATA = VITCLEAR;
    MODEL RSPTIM*CENS(0) = TRT DENS INFCTN / TIES = EXACT;
    IF INFTIM GT RSPTIM OR INFTIM = . THEN INFCTN = 0;
    ELSE INFCTN = 1;
    STRATA CENTER;
    TITLE1 'Cox Proportional Hazards Model';
    TITLE2 'Example 22.2: Hyalurise in Vitreous Hemorrhage' ;
RUN;
	[[alternative HTML version deleted]]

