Skip to contents

Time-to-event data for five different endpoints in 641 women from a randomised trial of tamoxifen alone versus tamoxifen plus radiotherapy (Collett, 2023, Example 13.3).

Usage

tamoxifen

Format

A data frame with 641 rows and 18 variables:

id

Patient identifier.

treat

Treatment: 0 = tamoxifen plus radiotherapy, 1 = tamoxifen alone.

age

Age of the patient in years.

size

Tumour size in cm.

hist

Tumour histology: 1 = ductal, 2 = lobular, 3 = medullary, 4 = mixed, 5 = other.

hr

Hormone receptor level: 0 = negative, 1 = positive.

hb

Haemoglobin level in g/l.

andis

Axillary node dissection: 0 = no, 1 = yes.

lsurv

Time to local relapse or last follow-up.

ls

Local relapse: 0 = no, 1 = yes.

asurv

Time to axillary relapse or last follow-up.

as

Axillary relapse: 0 = no, 1 = yes.

dsurv

Time to distant relapse or last follow-up.

ds

Distant relapse: 0 = no, 1 = yes.

msurv

Time to second malignancy or last follow-up.

ms

Second malignancy: 0 = no, 1 = yes.

tsurv

Time from randomisation to death or last follow-up.

ts

Status at last follow-up: 0 = alive, 1 = dead.

Source

Collett, D. (2023) Modelling Survival Data in Medical Research, 4th ed. Chapman & Hall/CRC, Example 13.3 (Table 13.5). Data from Fyles et al. (2004) and Pintilie (2006).

Details

The women were randomised to tamoxifen alone or with radiotherapy; 320 received tamoxifen plus radiotherapy and 321 tamoxifen alone. Each of the five endpoints has its own time and indicator, and the times are censored at the last date the woman was known to be alive. For women who relapsed after the start of follow-up the relevant indicator switches from 0 to 1.

The example was used by Pintilie (2006) to illustrate the WLW model for multiple events. Because a woman can experience more than one of the five event types, the data are rearranged into one row per possible event per woman before fitting the model (Example 13.3).

Aliases

The data set is available under the alias d13.3; dX.Y is the alias for the data set used in Example X.Y of Collett (2023). See dataset_by_exercise for the complete index.

Examples

# Collett (2023), Chapter 17 style -----------------------------------
# Example 13.3: four event types, each analysed as a cause-specific hazard
# local relapse
survival::coxph(survival::Surv(lsurv, ls) ~ treat + age + size + hr, data = tamoxifen)
#> Call:
#> survival::coxph(formula = survival::Surv(lsurv, ls) ~ treat + 
#>     age + size + hr, data = tamoxifen)
#> 
#>           coef exp(coef) se(coef)      z        p
#> treat  2.34017  10.38302  0.53029  4.413 1.02e-05
#> age   -0.03019   0.97026  0.01865 -1.618 0.105612
#> size   0.49142   1.63463  0.16939  2.901 0.003718
#> hr    -1.40966   0.24423  0.40952 -3.442 0.000577
#> 
#> Likelihood ratio test=52.42  on 4 df, p=1.126e-10
#> n= 641, number of events= 39 
# axillary relapse
survival::coxph(survival::Surv(asurv, as) ~ treat + age + size + hr, data = tamoxifen)
#> Call:
#> survival::coxph(formula = survival::Surv(asurv, as) ~ treat + 
#>     age + size + hr, data = tamoxifen)
#> 
#>           coef exp(coef) se(coef)      z      p
#> treat  1.19529   3.30453  0.65904  1.814 0.0697
#> age   -0.01409   0.98601  0.03109 -0.453 0.6505
#> size   0.70853   2.03101  0.29549  2.398 0.0165
#> hr    -1.15701   0.31443  0.67612 -1.711 0.0870
#> 
#> Likelihood ratio test=12.91  on 4 df, p=0.0117
#> n= 641, number of events= 13 
# distant relapse
survival::coxph(survival::Surv(dsurv, ds) ~ treat + age + size + hr, data = tamoxifen)
#> Call:
#> survival::coxph(formula = survival::Surv(dsurv, ds) ~ treat + 
#>     age + size + hr, data = tamoxifen)
#> 
#>           coef exp(coef) se(coef)      z        p
#> treat -0.16859   0.84486  0.31427 -0.536  0.59166
#> age    0.01422   1.01432  0.01767  0.805  0.42090
#> size   0.78297   2.18796  0.16412  4.771 1.84e-06
#> hr    -1.20662   0.29921  0.37279 -3.237  0.00121
#> 
#> Likelihood ratio test=34.06  on 4 df, p=7.256e-07
#> n= 641, number of events= 41 
# second malignancy
survival::coxph(survival::Surv(msurv, ms) ~ treat + age + size + hr, data = tamoxifen)
#> Call:
#> survival::coxph(formula = survival::Surv(msurv, ms) ~ treat + 
#>     age + size + hr, data = tamoxifen)
#> 
#>           coef exp(coef) se(coef)     z      p
#> treat 0.197425  1.218261 0.255376 0.773 0.4395
#> age   0.001272  1.001273 0.014770 0.086 0.9314
#> size  0.318548  1.375129 0.152566 2.088 0.0368
#> hr    0.174433  1.190571 0.523835 0.333 0.7391
#> 
#> Likelihood ratio test=4.63  on 4 df, p=0.3274
#> n= 641, number of events= 62 

# Modern tools --------------------------------------------------------
# A competing-risk view of the first event of any of the four types
if (requireNamespace("tidycmprsk", quietly = TRUE)) {
  first <- data.frame(
    time = pmin(tamoxifen$lsurv, tamoxifen$asurv, tamoxifen$dsurv, tamoxifen$msurv),
    treat = tamoxifen$treat
  )
  first$cause <- factor(
    c("local", "axillary", "distant", "second")[
      apply(cbind(tamoxifen$lsurv, tamoxifen$asurv, tamoxifen$dsurv, tamoxifen$msurv),
            1, which.min)
    ]
  )
  tidycmprsk::cuminc(survival::Surv(time, cause) ~ treat, data = first)
}
#> 
#> ── cuminc() ────────────────────────────────────────────────────────────────────
#> 
#> • Failure type "distant"
#> strata   time    n.risk   estimate   std.error   95% CI          
#> 0        1,000   260      0.044      0.012       0.025, 0.071    
#> 0        2,000   153      0.044      0.012       0.025, 0.071    
#> 0        3,000   36       0.047      0.012       0.028, 0.075    
#> 1        1,000   265      0.006      0.004       0.001, 0.021    
#> 1        2,000   136      0.013      0.006       0.004, 0.030    
#> 1        3,000   19       0.019      0.008       0.008, 0.039    
#> 
#> • Failure type "local"
#> strata   time    n.risk   estimate   std.error   95% CI          
#> 0        1,000   260      0.085      0.016       0.058, 0.119    
#> 0        2,000   153      0.400      0.028       0.345, 0.453    
#> 0        3,000   36       0.754      0.024       0.702, 0.798    
#> 1        1,000   265      0.122      0.018       0.089, 0.161    
#> 1        2,000   136      0.490      0.028       0.433, 0.544    
#> 1        3,000   19       0.835      0.021       0.788, 0.872    
#> 
#> • Failure type "second"
#> strata   time    n.risk   estimate   std.error   95% CI          
#> 0        1,000   260      0.053      0.013       0.032, 0.082    
#> 0        2,000   153      0.072      0.015       0.047, 0.104    
#> 0        3,000   36       0.085      0.016       0.058, 0.119    
#> 1        1,000   265      0.035      0.010       0.018, 0.059    
#> 1        2,000   136      0.063      0.014       0.040, 0.094    
#> 1        3,000   19       0.086      0.016       0.058, 0.120    
#> 
#> • Tests
#> outcome   statistic   df     p.value    
#> distant   4.74        1.00   0.029      
#> local     4.59        1.00   0.032      
#> second    0.013       1.00   0.91