Chapter 10 - Competing/Semi-Competing Risks
Department of Biostatistics & Medical Informatics
University of Wisconsin-Madison
Cause-specific hazard and cumulative incidence
Non- and semi-parametric methods
Analysis of bone marrow transplantation study
Semi-competing risks and examples
\[\newcommand{\d}{{\rm d}}\] \[\newcommand{\T}{{\rm T}}\] \[\newcommand{\dd}{{\rm d}}\] \[\newcommand{\cc}{{\rm c}}\] \[\newcommand{\pr}{{\rm pr}}\] \[\newcommand{\var}{{\rm var}}\] \[\newcommand{\se}{{\rm se}}\] \[\newcommand{\indep}{\perp \!\!\! \perp}\] \[\newcommand{\Pn}{n^{-1}\sum_{i=1}^n}\]


survival::coxph() (status == k)Decomposition of \(F_k(t)\) \[\begin{equation*} \dd F_k(t)=S(t-)\dd\Lambda_k^\cc(t) \end{equation*}\]
\(S(t-)=\pr(T\geq t)\): By KM estimator \(\hat S(t-)\) for overall failure
\(\dd\Lambda_k^\cc(t)\): By Nelsen-Aalen estimator (non-\(k\) risks as censoring) \[ \dd\hat\Lambda_k^\cc(t)=\frac{\sum_{i=1}^n\dd N_{ki}(t)}{\sum_{i=1}^n I(X_i\geq t)} \]
cmprsk::cuminc()(ftime, fstatus): \((X, \delta)\)group: group variable (optional); strata: strata variable (optional)rho: \(\rho\) in weight \(W_k(t)=\{1 - \hat F_k(t)\}^\rho\) (HF \(G^\rho\) family)obj$Tests: tests results on each riskobj$"a k": CIF estimates for \(k\)th risk in group \(a\)
time: \(t\); est: \(\hat F_k(t)\); var: \(\hat\var\{\hat F_k(t)\}\)cmprsk::crr() (I)(ftime, fstatus): \((X, \delta)\); cov1: \(Z\)failcode = k: models \(k\)th riskcrr
obj$coef: \(\hat\beta_k\); obj$var: \(\hat\var(\hat\beta_k)\)obj$uftime: \(t\); obj$bfitj: \(\dd\hat\Lambda_{k0}(t)\)cmprsk::crr() (II)obj: a crr object for fit modelz: new covariate data# --- Method 1: use predict.crr()
obj_pred <- predict(obj, z)
# --- Method 2: manual calculation
beta <- obj$coef
Lambda <- cumsum(obj$bfitj)
time <- obj$uftime
## Calculate CIF based on FG model
cif <- 1- exp(- exp(sum(beta * z)) * Lambda)
## Same as obj_pred from Method 1
obj_pred <- cbind(time, cif)tidycmprk Package (I)cmprsk functionsggsurvfit and gtsummarytidycmprsk::cuminc(): model fittingtidycmprsk::tbl_cuminc(): tabulation of CIF estimatesggsurvfit::ggcuminc(): plotting of CIF estimatestidycmprsk::crr(): model fittinggtsummary::tbl_regression(): regression tabletidycmprk Package (II)# Compute and test on cumulative incidence function (CIF) -------------------
obj_cif <- tidycmprsk::cuminc(Surv(time, status) ~ group, data = df)
# Tabulate CIF estimates with 95% CI at specific times
tbl_surv <- tidycmprsk::tbl_cuminc(
x = obj_cif, # Provide fitted object
times = seq(12, 120, by = 36), # Time points for CIF
outcomes = c("1", "2"), # Specify risks to include
)
# Create group-specific CIF plot
ggcuminc(obj_cif, outcome = c("1", "2")) # Specify risks to include
# Fine-Gray regression for risk "k" -----------------------------------------
obj_fg <- tidycmprsk::crr(Surv(time, status) ~ covariates,
data = df, failcode = "k")
# Tabulate regression results
tbl <- tbl_regression(obj_fg, exponentiate = TRUE)obj_cif <- tidycmprsk::cuminc(Surv(time, status) ~ donor, data = df)
obj_cif # Print results
#> ...
#> • Tests
#> outcome statistic df p.value
#> Relapse 17.3 1.00 <0.001
#> TRM 12.3 1.00 <0.001
# Summarize CIF estimates at specific times
tbl_surv <- tbl_cuminc(
x = obj_cif, # Provide the fitted object
times = seq(12, 120, by = 36), # Time points for CIF
outcomes = c("Relapse", "TRM"), # Specify risks to include
label_header = "{time} months" # Column label format
)
tbl_survtbl_cuminc()

# Change k
k <- 1
#--- proportional cause-specific hazards -----------------------------
obj.cs <- coxph(Surv(time, status == k) ~ cohort + donor + hist + wait,
data = cibmtr)
#--- Fine and Gray --------------------------------------------------
obj.fg <- crr(cibmtr$time, cibmtr$status, cibmtr[, 3:6], failcode = k)
status != 1)
coxph(Surv(time, status == 2) ~ covariates)id)
coxph(Surv(time, status == 1) ~ covariates)tidycmprk::crr(Surv(time, status) ~ covariates, failcode = "1")rccf2::rccf()id: subject ID; trt: binary treatment grouptime: event time; status: event status (1: nonfatal; 2: death; 0: censoring)obj$u1, obj$u2: Estimates of group-specific \(\mu(t)\) as a function of \(t\) (obj$t).obj$pLR, obj$pD, obj$pjnt: \(p\)-values for tests on \(\mu(t)\), death, and jointlyFine–Gray regression
crskdiagSemi-competing risks
coxph(Surv(time, status == k) ~ covariates)cmprk::cuminc(ftime, fstatus, group, strata, rho = 0)cmprk::crr(ftime, fstatus, cov1, failcode = k)tidycmprk packagerccf2::rccf(id, time, status, trt)mets and reReg