Vignette for tauProcess package: Measuring the two-sample treatment effect

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(tauProcess)

Introduction

In immunotherapy clinical trials, the endpoints of interest typically involve the time until a specified event occurs. For instance, overall survival (OS) is defined as the time from the start of the study until death. Under the proportional hazards assumption, the hazard ratio (HR) is commonly used as a measure of treatment effect between two groups. However, in immunotherapy clinical trials, the proportional hazards assumption is often violated, making the HR an unsuitable measure of treatment effect. To address this issue, we propose the tau process, a measure inspired by Kendall’s tau, to quantify treatment effects between two samples over time without relying on the proportional hazards assumption. The tau process also serves as a graphical tool to track the progression of treatment effects. This vignette demonstrates the use of the R package tauProcess for making inferences about the tau process.

Sample Data

Throughout this vignette, we use the pbc dataset, originally provided in the R package survival, to demonstrate the inference procedure and interpretation of the tau process. We only consider the observations with complete covariates, excluding transplants and those not assigned to randomization. Details about the original dataset can be found in the survival package documentation:

?survival::pbc

Variables in the pbc Dataset

  • surv.time: Number of days between registration and the earlier of death or study analysis in July 1986.
  • event: Endpoint status (0 for censored, 1 for deceased).
  • arm: Treatment group indicator (1 for D-penicillamine, 0 for placebo).

Kaplan-Meier Curves

Below are the Kaplan-Meier curves for the two treatment groups:

Tau Measure and Tau Process

The tau process is defined as the difference in concordance and discordance probabilities up to a specified time t:

where S(u) = Pr (T > u) and F(u) = 1 − S(u). This represents the proportion of individuals who benefit from the treatment compared to those who experience worse outcomes. The identifiability of the tau process depends on the censoring distribution. When t exceeds the upper support of the censoring distribution, the tau process becomes unidentifiable. If the support of censoring covers the failure time supports, the tau measure τ(∞) is identifiable.

The tau process estimation in this package is based on U-statistics and inverse-probability-of-censoring-weighting (IPCW). The limiting distribution is derived using U-statistics theory and martingale theory.

Function Usage

The function tau.fit() estimates the tau process. Its arguments are:

  • time: Time-to-event vector.
  • status: Event indicator vector (1 for event, 0 for censoring).
  • arm: Treatment group indicator vector (1 for treatment, 0 for control).
  • t: Optional scalar specifying truncation time (default: minimum of the largest observed times in both groups).

Below is an example:

fit <- tau.fit(time = pbc$surv.time,
               status = pbc$event,
               arm = pbc$arm)
summary(fit)
#>  N0= 131  N1= 127  The truncation time is specified as 4523 
#> 
#> Random grouping design:
#>      tau   se(R)  z(R) Pr(>|z|) (R)
#>  -0.0503  0.0906 -0.55         0.58
#> 
#> Fixed grouping design:
#>      tau   se(F)  z(F) Pr(>|z|) (F)
#>  -0.0503  0.0906 -0.55         0.58
#> 
#>       tau lower .95(R) upper .95(R) lower .95(F) upper .95(F)
#>   -0.0503       -0.228        0.127       -0.228        0.127
plot(fit, type = "b")

In this example, the tau process value at t = 4523 is −0.0503 with a 95% confidence interval (−0.228, 0.127) and a p-value of 0.58.

Tau Process with Mixture Cure Model

We develop nonparametric inference methods for comparing survival data across two samples, tailored for clinical trials of cancer therapies with durable effects. The mixture cure model analyzes cure rates for long-term survivors and survival functions for susceptible individuals.

The survival function is modeled as:

S(t) = Sa, ℓ(t)(1 − η) + η,

where Sa, ℓ(t) represents the susceptible group survival function, and η represents the cure rate. The treatment effect for susceptible groups is quantified using the susceptible tau process:

τa(t) = ∫0tSa, 1(u)dFa, 0(u) − ∫0tSa, 0(u)dFa, 1(u).

Function Usage

The function tau_proc() estimates the susceptible tau process when cure = TRUE:

fit_cure <- tau_proc(pbc$surv.time, pbc$event, pbc$arm, cure = TRUE)
print(fit_cure)
#> $t
#>  [1]    0.0000  238.0526  476.1053  714.1579  952.2105 1190.2632 1428.3158
#>  [8] 1666.3684 1904.4211 2142.4737 2380.5263 2618.5789 2856.6316 3094.6842
#> [15] 3332.7368 3570.7895 3808.8421 4046.8947 4284.9474 4523.0000
#> 
#> $vals_tau_proc
#>  [1]  0.000000000 -0.006176340  0.008363230  0.021178555  0.091805325
#>  [6]  0.066791578  0.064965315  0.069844280  0.049030356  0.032506546
#> [11] -0.003713122 -0.036444349 -0.019303796 -0.022489755 -0.014523394
#> [16]  0.022610525  0.018417565  0.037942991  0.037942991  0.037942991
#> 
#> $cure
#> [1] TRUE
#> 
#> $cure_rates
#> [1] 0.3316087 0.2621538
#> 
#> attr(,"class")
#> [1] "tau_process"

The output includes time points, tau process values, and estimated cure rates. Use plot() to visualize:

plot(fit_cure, type = "b")

Inference Using Bootstrap

Bootstrap methods can be used for inference on the susceptible tau process. Below is an example to test τa(∞) = 0:

library(boot)

boot_fun <- function(data, indices) {
  d <- data[indices, ]
  tau_fit <- tau_proc(d$surv.time, d$event, d$arm, cure = TRUE)
  tail(tau_fit$vals_tau_proc, 1)
}

num_boot <- 5000
boot_results <- boot(pbc, statistic = boot_fun, R = num_boot, strata = pbc$arm)
sd_est <- sd(boot_results$t)

pchisq((boot_results$t0 / sd_est) ^ 2, df = 1, lower.tail = FALSE)
#> [1] 0.7989812

Conclusion

Several alternative treatment effect measures have been proposed, such as differences in restricted mean survival time (RMST). The tau process complements these measures by addressing non-proportional hazards scenarios. It is robust to extreme failure times and provides a rank-based alternative for analyzing treatment effects. We hope this vignette serves as a helpful guide for clinical researchers to explore treatment effects thoroughly.