Skip to contents

Survival times, in months, of 38 men with Stage III prostatic cancer, randomised to placebo or to diethylstilbestrol (DES) (Collett, 2023, Example 1.4).

Usage

prostate

Format

A data frame with 38 rows and 8 variables:

patient

Patient number (1-38).

treatment

Treatment group: 1 = placebo, 2 = diethylstilbestrol (DES).

time

Survival time in months from randomisation.

status

Event indicator: 1 = death from prostatic cancer, 0 = right-censored.

age

Age at trial entry, in years.

shb

Serum haemoglobin level, in g/100 ml.

size

Size of the primary tumour, in cm squared.

index

Combined index of tumour stage and grade (the Gleason index); higher values indicate a more advanced tumour.

Source

Collett, D. (2023) Modelling Survival Data in Medical Research, 4th ed. Chapman & Hall/CRC, Example 1.4 (Table 1.4). The full trial is given in Andrews and Herzberg (1985).

Details

The trial was run by the Veteran's Administration Cooperative Urological Research Group and only patients with a local tumour extension but without elevated serum prostatic acid phosphatase are included. Deaths from other causes and losses to follow-up are censored. There are only 6 deaths in this subset of 38 patients.

With so few events the example is used to show the behaviour of the partial likelihood and of the estimated hazard ratios (Examples 3.6, 3.12, 3.16 and 5.15), and the fitted Cox model is re-used for an accelerated failure time comparison (Example 5.15).

Aliases

The data set is available under the aliases d1.4, d3.6, d3.12, d3.16, d5.15; 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 1.4: the trial data
survival::survfit(survival::Surv(time, status) ~ treatment, data = prostate)
#> Call: survfit(formula = survival::Surv(time, status) ~ treatment, data = prostate)
#> 
#>              n events median 0.95LCL 0.95UCL
#> treatment=1 18      5     69      NA      NA
#> treatment=2 20      1     NA      NA      NA

# Examples 3.6, 3.12 and 3.16: Cox model for treatment and prognostic variables
fit_prostate <- survival::coxph(
  survival::Surv(time, status) ~ treatment + age + shb + size + index,
  data = prostate
)
summary(fit_prostate)
#> Call:
#> survival::coxph(formula = survival::Surv(time, status) ~ treatment + 
#>     age + shb + size + index, data = prostate)
#> 
#>   n= 38, number of events= 6 
#> 
#>               coef exp(coef) se(coef)      z Pr(>|z|)  
#> treatment -1.18206   0.30665  1.21030 -0.977   0.3287  
#> age        0.04397   1.04495  0.07201  0.611   0.5414  
#> shb       -0.02213   0.97811  0.45273 -0.049   0.9610  
#> size       0.09397   1.09852  0.05209  1.804   0.0712 .
#> index      0.72343   2.06149  0.34996  2.067   0.0387 *
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#>           exp(coef) exp(-coef) lower .95 upper .95
#> treatment    0.3066     3.2611    0.0286     3.287
#> age          1.0450     0.9570    0.9074     1.203
#> shb          0.9781     1.0224    0.4027     2.375
#> size         1.0985     0.9103    0.9919     1.217
#> index        2.0615     0.4851    1.0382     4.093
#> 
#> Concordance= 0.893  (se = 0.06 )
#> Likelihood ratio test= 14.18  on 5 df,   p=0.01
#> Wald test            = 10.06  on 5 df,   p=0.07
#> Score (logrank) test = 14.99  on 5 df,   p=0.01
#> 

# Example 5.15: the corresponding Weibull accelerated failure time model
survival::survreg(
  survival::Surv(time, status) ~ treatment + age + shb + size + index,
  data = prostate, dist = "weibull"
)
#> Call:
#> survival::survreg(formula = survival::Surv(time, status) ~ treatment + 
#>     age + shb + size + index, data = prostate, dist = "weibull")
#> 
#> Coefficients:
#>  (Intercept)    treatment          age          shb         size        index 
#>  8.554577999  0.425215473 -0.007073852 -0.050508775 -0.036875769 -0.275063492 
#> 
#> Scale= 0.3655769 
#> 
#> Loglik(model)= -31.3   Loglik(intercept only)= -39.3
#> 	Chisq= 15.82 on 5 degrees of freedom, p= 0.00736 
#> n= 38 

# Modern tools --------------------------------------------------------
if (requireNamespace("flexsurv", quietly = TRUE)) {
  flexsurv::flexsurvreg(
    survival::Surv(time, status) ~ treatment + age + shb + size + index,
    data = prostate, dist = "weibull"
  )
}
#> Call:
#> flexsurv::flexsurvreg(formula = survival::Surv(time, status) ~ 
#>     treatment + age + shb + size + index, data = prostate, dist = "weibull")
#> 
#> Estimates: 
#>            data mean  est        L95%       U95%       se         exp(est) 
#> shape             NA   2.74e+00   1.38e+00   5.43e+00   9.56e-01         NA
#> scale             NA   5.19e+03   6.96e+00   3.87e+06   1.75e+04         NA
#> treatment   1.53e+00   4.25e-01  -4.75e-01   1.33e+00   4.59e-01   1.53e+00
#> age         6.86e+01  -7.07e-03  -5.22e-02   3.81e-02   2.30e-02   9.93e-01
#> shb         1.39e+01  -5.05e-02  -3.42e-01   2.41e-01   1.49e-01   9.51e-01
#> size        1.05e+01  -3.69e-02  -7.02e-02  -3.57e-03   1.70e-02   9.64e-01
#> index       9.13e+00  -2.75e-01  -5.10e-01  -4.02e-02   1.20e-01   7.60e-01
#>            L95%       U95%     
#> shape             NA         NA
#> scale             NA         NA
#> treatment   6.22e-01   3.76e+00
#> age         9.49e-01   1.04e+00
#> shb         7.10e-01   1.27e+00
#> size        9.32e-01   9.96e-01
#> index       6.01e-01   9.61e-01
#> 
#> N = 38,  Events: 6,  Censored: 32
#> Total time at risk: 1890
#> Log-likelihood = -31.34121, df = 7
#> AIC = 76.68242
#>