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.
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:
pbc
DatasetBelow are the Kaplan-Meier curves for the two treatment groups:
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.
The function tau.fit()
estimates the tau process. Its
arguments are:
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.
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).
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:
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
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.