Skip to contents

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).

Usage

ulcer

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)))
}