Arte SheetsLearn. Try. Understand.

Biostatistics & Oncology Trials

Simon Two-Stage Phase II Futility Stopping and Expected Sample Size

Evaluate Simon’s (1989) Optimal vs Minimax single-arm Phase II designs via Stage-1 early futility probability PET(p_0) and expected sample size EN(p_0) = n_1 + (1 - PET(p_0)) * n_2.

Protect patients from ineffective oncology agents via Stage-1 futility stopping

In single-arm Phase II oncology trials testing historical low response p_0 = 0.10 against target activity p_1 = 0.30 (alpha = 0.05, power = 0.80), Simon’s (1989) two-stage design enrolls n_1 patients in Stage 1 and terminates immediately for futility if Stage-1 responses X_1 <= r_1; only if X_1 > r_1 does the trial enroll n_2 = N_max - n_1 additional Stage-2 patients.

Verify Simon’s published (p_0 = 0.10, p_1 = 0.30) Optimal design by hand: Stage 1 enrolls n_1 = 10 patients with futility threshold r_1 = 1 (stop if 0 or 1 responder), and N_max = 29 (so n_2 = 19). Under an inactive drug (p_0 = 0.10), Stage-1 binomial stopping probability is PET(0.10) = P(X_1 = 0) + P(X_1 = 1) = (0.90)^10 + 10 * (0.10) * (0.90)^9 = 0.348678 + 0.387420 = 0.7361 (73.61% chance of stopping after just 10 patients!), yielding expected sample size EN(0.10) = 10 + (1 - 0.7361) * 19 = 15.0141 patients — saving nearly half of N_max = 29!

Simon Design Benchmark (p_0 = 0.10)Design Parameters (r_1 / n_1, N_max)PET(p_0) & Expected EN(p_0)
Simon Optimal (Minimizes EN(p_0))r_1 = 1, n_1 = 10, N_max = 29 (n_2 = 19)PET = 0.7361; EN = 15.0141
Simon Minimax (Minimizes N_max)r_1 = 1, n_1 = 15, N_max = 25 (n_2 = 10)PET = 0.5490; EN = 19.5096
Active Drug Scenario (p_1 = 0.30)Optimal r_1 = 1, n_1 = 10, N_max = 29PET = 0.1493; EN = 26.1631

Exact Stage-1 Futility Stopping Probability PET(p) (for r_1 in {0, 1, 2}) Formula

Because typical low-response Phase II Stage-1 cutoffs use r_1 = 0, 1, or 2, evaluate exact binomial probabilities P(X_1 <= r_1) without external add-ins so FACT overflow never occurs (n_1 <= 100).

=LET(n_1, B2, r_1, B3, p_rt, B5, IF(OR(n_1 < 2, r_1 < 0, r_1 > 2, p_rt <= 0, p_rt >= 1), "Require 0 <= r1 <= 2 & 0 < p < 1", LET(q_rt, 1 - p_rt, pr_0, q_rt^n_1, pr_1, IF(r_1 >= 1, n_1 * p_rt * (q_rt^(n_1 - 1)), 0), pr_2, IF(r_1 >= 2, (n_1 * (n_1 - 1) / 2) * (p_rt^2) * (q_rt^(n_1 - 2)), 0), ROUND(pr_0 + pr_1 + pr_2, 4))))

Expected Total Enrollment EN(p) = n_1 + (1 - PET(p)) * (N_max - n_1) Formula

Compare Optimal (B2=10, B4=29 -> EN=15.0141) against Minimax (set B2=15, B4=25 -> EN=19.5096) or test an active agent (set B5=0.30 -> PET drops to 0.1493 and EN rises to 26.1631 as 85.1% of active trials advance to Stage 2).

=LET(n_1, B2, r_1, B3, n_mx, B4, p_rt, B5, IF(OR(n_1 < 2, n_mx <= n_1, r_1 < 0, r_1 > 2, p_rt <= 0, p_rt >= 1), "Invalid Two-Stage Input", LET(q_rt, 1 - p_rt, pet_p, (q_rt^n_1) + IF(r_1 >= 1, n_1 * p_rt * (q_rt^(n_1 - 1)), 0) + IF(r_1 >= 2, (n_1 * (n_1 - 1) / 2) * (p_rt^2) * (q_rt^(n_1 - 2)), 0), ROUND(n_1 + (1 - pet_p) * (n_mx - n_1), 4))))

Try the example

Use the original values or change them to test your understanding.

Further reading