Arte SheetsLearn. Try. Understand.

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 ETotal Randomized Patients N (at 65% Event Rate)
HR = 0.70 (30% Hazard Reduction)247 Events380 Patients
HR = 0.80 (20% Hazard Reduction)631 Events (+155% larger!)971 Patients
Null Hazard Ratio HR = 1.00Division 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.

Further reading