Statistical & Clinical Analysis
Schoenfeld Formula: Log-Rank / Cox Survival Trial Required Events & Sample Size
Power Phase III oncology and cardiovascular time-to-event trials using David A. Schoenfeld’s 1983 asymptotic Cox/log-rank formula E = ROUNDUP((z_alpha/2 + z_beta)² / (p * (1 - p) * (LN(HR))²), 0) and total enrollment N = ROUNDUP(E / P_event, 0).
Why time-to-event survival trials are powered by OBSERVED EVENTS (deaths/progressions), not raw headcount!
In randomized time-to-event trials analyzed by the log-rank test or Cox proportional-hazards model, statistical information comes from observed events E, NOT censored survivors! David A. Schoenfeld (1983, Biometrics) proved that under proportional hazards with allocation fraction p in the experimental arm (p = 0.5 for 1:1 randomization; p = 2/3 for 2:1 randomization) and target Hazard Ratio HR != 1, required total events across both arms equal E = (z_(1 - alpha/2) + z_(1 - beta))^2 / (p * (1 - p) * (LN(HR))^2)!
Once required events E are known, dividing by expected overall event probability P_event over the accrual + follow-up window gives total randomized patients N = ROUNDUP(E / P_event, 0)! For two-sided alpha = 0.05 (z = 1.96), 80% power (z_beta = 0.8416), 1:1 allocation (p = 0.50), and target HR = 0.70, a trial needs E = 247 events (and N = 380 patients at P_event = 65%)—soaring to E = 631 events if the effect moderates to HR = 0.80!
| Target Hazard Ratio (2-Sided alpha=0.05, 80% Power, 1:1) | Required Log-Rank Events E | Total Randomized Patients N (at 65% Event Rate) |
|---|---|---|
| HR = 0.70 (30% Hazard Reduction) | 247 Events | 380 Patients |
| HR = 0.80 (20% Hazard Reduction) | 631 Events (+155% larger!) | 971 Patients |
| Null Hazard Ratio HR = 1.00 | Division by LN(1) = 0! | "Invalid Schoenfeld Survival Trial Inputs" |
Schoenfeld Required Total Events E = ROUNDUP((z_alpha + z_beta)² / (p*(1-p)*(LN(HR))²), 0)
Computes integer target event count across both arms from critical z_(1-alpha/2) (B2), power quantile z_(1-beta) (B3), experimental allocation ratio p (B4 in (0,1)), and target Hazard Ratio HR (B5 != 1).
=IF(OR(B2 <= 0, B3 <= 0, B4 <= 0, B4 >= 1, B5 <= 0, B5 = 1, B6 <= 0, B6 > 1), "Invalid Schoenfeld Survival Trial Inputs", ROUNDUP(((B2 + B3) ^ 2) / (B4 * (1 - B4) * ((LN(B5)) ^ 2)), 0))Total Randomized Sample Size N = ROUNDUP(Required_Events / Expected_Event_Fraction, 0)
Inflates Schoenfeld event target by overall event probability P_event (B6) to account for administrative right-censoring and dropout.
=IF(OR(B2 <= 0, B3 <= 0, B4 <= 0, B4 >= 1, B5 <= 0, B5 = 1, B6 <= 0, B6 > 1), "Invalid Schoenfeld Survival Trial Inputs", ROUNDUP((((B2 + B3) ^ 2) / (B4 * (1 - B4) * ((LN(B5)) ^ 2))) / B6, 0))Try the example
Use the original values or change them to test your understanding.