Interval-censored times to recurrence of an ulcer among 43 patients in a double-blind clinical trial of two treatments (Collett, 2023, Example 9.1).
Format
A data frame with 43 rows and 6 variables:
- patient
Patient number (1-43).
- age
Age of the patient in years.
- duration
Duration of verified disease: 1 = less than five years, 2 = five years or more.
- treatment
Treatment group: 1 = A, 2 = B.
- time
Time of the last visit, in months.
- result
Result of the endoscopy at the last visit: 1 = no ulcer detected, 2 = ulcer detected.
Source
Collett, D. (2023) Modelling Survival Data in Medical Research, 4th ed. Chapman & Hall/CRC, Example 9.1 (Tables 9.1 and 9.2). Data from Whitehead (1989).
Details
Endoscopies were scheduled 6 and 12 months after randomisation, and patients
who presented with symptoms between visits had an unscheduled endoscopy.
The pair (time, result) is converted to an interval-censored recurrence
time: for example, a visit at 7 months with result 2 means recurrence in
the interval (6, 7], while result 1 at 12 months means the recurrence time
is right-censored at 12 months. Because 6 months is the earliest possible
interval limit, the combination (time = 6, result = 2) becomes (0, 6].
There are 11 detected recurrences.
The data are used for interval-censored analyses (Examples 9.1-9.7) and for the restricted mean survival time computed from interval-censored data (Example 11.1). The full multinational study is described by Whitehead (1989); the data here are the Belgian subset.
Aliases
The data set is available under the aliases d9.1, d9.4, d9.5, d9.6,
d9.7, d11.1; 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 -----------------------------------
# Examples 9.1 and 9.4: interval-censored recurrence times
# (Table 9.2 of the book gives the interval for each visit and result)
ulcer$left <- ifelse(ulcer$result == 2, ifelse(ulcer$time <= 6, 0, 6), ulcer$time)
ulcer$right <- ifelse(ulcer$result == 2, ulcer$time, Inf)
survival::Surv(ulcer$left, ulcer$right, type = "interval2")[1:5]
#> [1] [ 6, 7] 12+ 12+ 12+ 12+
# Chapter 17 fits the Turnbull estimate with icfit() in the interval package;
# icenReg provides the same estimator.
icenReg::ic_np(cbind(ulcer$left, ulcer$right))
#>
#> Model: Non-parametric
#> Dependency structure assumed: Independence
#> No covariates used
#>
#> final llk = -31.49119
#> Iterations = 2
# Examples 9.5-9.7: a proportional hazards model for interval-censored data
icenReg::ic_sp(
survival::Surv(left, right, type = "interval2") ~ treatment,
data = ulcer
)
#>
#> Model: Cox PH
#> Dependency structure assumed: Independence
#> Baseline: semi-parametric
#> Call: icenReg::ic_sp(formula = survival::Surv(left, right, type = "interval2") ~
#> treatment, data = ulcer)
#>
#> Estimate Exp(Est)
#> treatment 0.1953 1.216
#>
#> final llk = -31.44204
#> Iterations = 6
#> Bootstrap Samples = 0
#> WARNING: only 0 bootstrap samples used for standard errors.
#> Suggest using more bootstrap samples for inference
# Modern tools --------------------------------------------------------
if (requireNamespace("icenReg", quietly = TRUE)) {
plot(icenReg::ic_np(cbind(ulcer$left, ulcer$right)))
}