Biostatistics & Survival Analysis
Fine-Gray Competing-Risks Subdistribution Risk-Set Weight Formula
Compute Fine and Gray’s (1999) time-dependent subdistribution risk-set weights w_i(t) = S_cens(t) / S_cens(T_i) and contrast them against cause-specific Cox censoring.
Why competing-event subjects remain in the Fine-Gray risk set with weight S_cens(t) / S_cens(T_i)
In cause-specific Cox regression for Primary Event 1, any patient who experiences Competing Event 2 at time T_i < t is immediately removed from the risk set (weight = 0), breaking the one-to-one link between hazard ratios and Cumulative Incidence CIF_1(t). Fine and Gray (1999) restored direct CIF modeling by retaining Competing-Event-2 subjects inside the subdistribution risk set at later Primary-Event times t > T_i — weighted by w_i(t) = S_cens(t) / S_cens(T_i), the conditional Kaplan-Meier probability of remaining uncensored from T_i to t!
Verify all four clinical trajectories at evaluation time t_eval = 12 months (B2) where administrative censoring survival is S_cens(12) = 0.6300 (B3): a patient who died of Competing Cause 2 at T_i = 6 months (B4 = 6, B5 = 2) when S_cens(6) = 0.8400 (B6) receives Cause-Specific weight 0, yet Fine-Gray assigns exact fractional weight 0.6300 / 0.8400 = 0.7500! Meanwhile, anyone still event-free at t >= 12 (T_i = 15) gets weight 1.0000, and anyone administratively censored (Type = 0) or experiencing Event 1 (Type = 1) prior to t = 12 gets weight 0.0000.
| Subject Status at Evaluation Time t = 12 | Cause-Specific Weight | Fine-Gray Subdistribution Weight |
|---|---|---|
| Still Event-Free (T_i >= 12, any code) | 1.0000 | 1.0000 |
| Competing Event Prior to t (T_i = 6, Type = 2) | 0.0000 (Censored) | S_c(12)/S_c(6) = 0.7500 |
| Primary Event Prior to t (T_i = 6, Type = 1) | 0.0000 | 0.0000 |
| Admin Censored Prior to t (T_i = 6, Type = 0) | 0.0000 | 0.0000 |
Fine-Gray Subdistribution Risk-Set Weight w_FG(t) Formula
Validate that survival probabilities lie in (0, 1] and that S_cens(t) <= S_cens(T_i) whenever T_i < t (since Kaplan-Meier censoring survival is non-increasing over time).
=LET(t_ev, B2, sc_t, B3, t_obs, B4, ev_tp, B5, sc_i, B6, IF(OR(t_ev <= 0, t_obs <= 0, sc_t <= 0, sc_t > 1, sc_i <= 0, sc_i > 1, NOT(OR(ev_tp = 0, ev_tp = 1, ev_tp = 2))), "Invalid Competing-Risk Input", IF(t_obs >= t_ev, 1, IF(ev_tp <> 2, 0, IF(sc_t > sc_i, "Invalid Censoring KM (Require Sc(t)<=Sc(Ti))", ROUND(sc_t / sc_i, 4))))))Cause-Specific Cox Risk-Set Membership Indicator Formula
Display the cause-specific risk-set indicator side-by-side so clinical reviewers see exactly which subjects create divergence between cause-specific HR and subdistribution SHR.
=IF(OR(B2 <= 0, B4 <= 0), "Invalid Competing-Risk Input", IF(B4 >= B2, 1, 0))Try the example
Use the original values or change them to test your understanding.