cscript st_rpool which st_rpool capture program drop ChkObs program define ChkObs /* varname value1 value2 ... */ args varname mac shift local n : word count `*' assert _N == `n' local i 1 while `i' <= `n' { assert `varname'[`i'] == ``i'' local i = `i' + 1 } end input id time dead double x 101 1 1 6.18 102 4 1 .61 103 6 0 5.55 end stset time, failure(dead) st_rpool event sort event id ChkObs event 1 1 1 2 2 ChkObs id 101 102 103 102 103 ChkObs _t 1 4 6 4 6 ChkObs _t0 0 0 0 0 0 ChkObs _d 1 0 0 1 0 ChkObs x 6.18 .61 5.55 .61 5.55 rcof "display time[1]" == 111 rcof "display dead[1]" == 111 list clear input id time dead double x 201 1 1 .87 202 7 0 .26 203 7 1 .04 204 8 1 .42 205 8 1 .9 206 9 0 .52 end stset time, failure(dead) st_rpool event sort event id ChkObs event 1 1 1 1 1 1 2 2 2 2 2 3 3 3 ChkObs id 201 202 203 204 205 206 /* */ 202 203 204 205 206 /* */ 204 205 206 ChkObs _t 1 7 7 8 8 9 7 7 8 8 9 8 8 9 ChkObs _t0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ChkObs _d 1 0 0 0 0 0 0 1 0 0 0 1 1 0 ChkObs x .87 .26 .04 .42 .9 .52 /* */ .26 .04 .42 .9 .52 /* */ .42 .9 .52 by event: list id _t _d x clear input id time dead double x 301 1 1 .84 302 7 0 .21 303 7 1 .56 304 8 1 .26 305 8 1 .95 306 9 1 .28 end stset time, failure(dead) st_rpool event sort event id ChkObs event 1 1 1 1 1 1 2 2 2 2 2 3 3 3 4 ChkObs id 301 302 303 304 305 306 /* */ 302 303 304 305 306 /* */ 304 305 306 /* */ 306 ChkObs _t 1 7 7 8 8 9 7 7 8 8 9 8 8 9 9 ChkObs _t0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ChkObs _d 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 ChkObs x .84 .21 .56 .26 .95 .28 /* */ .21 .56 .26 .95 .28 /* */ .26 .95 .28 /* */ .28 by event: list id _t _d x /* st_rpool handles entry time and will allow stratification, meaning separate pools for separate groups. For instance, */ clear input id t0 time dead group 401 0 4 1 1 402 0 8 0 1 403 0 12 1 1 404 9 16 0 1 405 0 4 1 2 406 4 8 0 2 407 0 12 1 2 end stset time, failure(dead) time0(t0) st_rpool event, strata(group) sort event id rcof "di t0[1]" == 111 ChkObs id 401 402 403 403 404 405 407 407 ChkObs event 1 1 1 2 2 3 3 4 ChkObs _t0 0 0 0 0 9 0 0 0 ChkObs _t 4 8 12 12 16 4 12 12 ChkObs _d 1 0 0 1 0 1 0 1 ChkObs group 1 1 1 1 1 2 2 2 by event: list id _t0 _t _d group clear input pval time weight dead 40 22 293 0 47 17 335 0 37 22 264 0 62 23 207 1 96 17 283 1 97 25 265 1 48 20 325 0 78 15 408 0 57 18 367 0 44 26 223 0 51 20 328 0 103 16 388 0 40 19 340 0 113 14 433 0 145 14 390 0 159 21 429 0 32 29 211 0 57 16 369 0 45 22 318 0 51 22 322 0 36 24 275 0 39 19 343 0 62 23 237 1 45 35 202 1 50 24 228 1 81 21 275 1 39 30 212 0 40 18 360 0 58 16 360 0 63 17 374 0 42 21 213 1 43 28 180 0 41 21 265 0 57 25 224 1 44 28 176 1 114 12 484 0 135 12 472 0 134 14 383 0 39 30 198 1 38 22 258 0 53 14 406 0 63 14 413 0 61 15 372 0 45 18 337 0 32 20 283 0 47 19 330 0 51 19 331 0 48 18 369 0 41 19 337 0 41 24 273 0 103 16 403 0 88 21 406 0 129 14 342 1 46 38 326 0 44 34 180 0 44 25 220 0 64 26 252 0 40 18 333 0 57 18 370 0 49 18 347 0 52 19 321 0 47 19 320 0 44 19 342 0 41 24 269 0 38 26 183 1 37 35 205 1 58 18 241 1 37 31 220 1 57 18 267 1 46 25 193 1 53 41 204 1 68 25 199 1 71 23 216 1 119 17 317 1 end stset time, failure(dead) stcox weight pval, exactp mat b1 = e(b) mat V1 = e(V) st_rpool event clogit _d weight pval, group(event) mat b2 = e(b) mat V2 = e(V) assert mreldif(b1,b2)<1e-10 assert mreldif(V1,V2)<1e-10 exit