Survival times, in months, of 38 men with Stage III prostatic cancer, randomised to placebo or to diethylstilbestrol (DES) (Collett, 2023, Example 1.4).
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
#>