Statistical & Clinical Analysis
Harrell’s C-Index & Somers’ D_xy: Survival Model Concordance for Censored Data
Calculate Frank Harrell’s Cox survival discrimination index C = (N_concordant + 0.5*N_tied) / N_permissible and Somers’ rank correlation D_xy = 2*C - 1.
Generalizing ROC AUC to right-censored time-to-event oncology and cardiology cohorts!
In right-censored Cox proportional-hazards models, binary ROC AUC cannot be applied directly because censored survivors with follow-up t_j < t_i have unknown ordering relative to later events! Frank E. Harrell Jr. (1982, JAMA) defined a pair (i, j) as PERMISSIBLE whenever the earlier observed time is an uncensored event (T_i < T_j and δ_i = 1): the pair is concordant if the patient who failed earlier had the higher predicted hazard score η_i > η_j, discordant if η_i < η_j, and receives 0.5 credit if η_i = η_j!
Across N_perm = 1,840 permissible patient pairs (1,420 concordant, 340 discordant, and 80 risk-score ties), Harrell’s C-index is (1420 + 0.5*80) / 1840 = 0.7935 and Somers’ rank correlation D_xy = 2*C - 1 = 0.5870—improving to C = 0.8913 when concordant pairs rise to 1,600 (discordant = 160)!
| Permissible Survival Pair Breakdown | Harrell’s C-Index (0.5 = Coin Flip) | Somers’ Rank Correlation D_xy | Prognostic Discrimination Tier |
|---|---|---|---|
| 1,420 Concordant / 340 Discordant / 80 Tied | 0.7935 | 0.5870 | Good Clinical Cox Discrimination |
| 1,600 Concordant / 160 Discordant / 80 Tied | 0.8913 | 0.7826 | Excellent Biomarker Separation |
| Zero Permissible Pairs (All Censored) | Error Guard | "No Permissible Event Pairs" | Zero-Event Guard |
Harrell’s Censored Survival Concordance Index C
Computes (N_conc + 0.5 * N_tied) / (N_conc + N_disc + N_tied) from concordant pairs B2, discordant pairs B3, and tied-risk pairs B4.
=IF(OR(B2 < 0, B3 < 0, B4 < 0, B2 + B3 + B4 = 0), "No Permissible Event Pairs", ROUND((B2 + 0.5 * B4) / (B2 + B3 + B4), 4))Somers’ Rank Correlation D_xy = 2 * C - 1
Maps Harrell’s C-index onto [-1, +1] where 0 denotes random survival ranking and +1 denotes perfect ordering.
=IF(OR(B2 < 0, B3 < 0, B4 < 0, B2 + B3 + B4 = 0), "No Permissible Event Pairs", ROUND(2 * ((B2 + 0.5 * B4) / (B2 + B3 + B4)) - 1, 4))Try the example
Use the original values or change them to test your understanding.