Arte SheetsLearn. Try. Understand.

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 = 12Cause-Specific WeightFine-Gray Subdistribution Weight
Still Event-Free (T_i >= 12, any code)1.00001.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.00000.0000
Admin Censored Prior to t (T_i = 6, Type = 0)0.00000.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.

Further reading