Arte SheetsLearn. Try. Understand.

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 BreakdownHarrell’s C-Index (0.5 = Coin Flip)Somers’ Rank Correlation D_xyPrognostic Discrimination Tier
1,420 Concordant / 340 Discordant / 80 Tied0.79350.5870Good Clinical Cox Discrimination
1,600 Concordant / 160 Discordant / 80 Tied0.89130.7826Excellent 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.

Further reading