Skip to content

Bayesian Sample Size Calculation Step by Step Guide

Detecting 3% Absolute Survival Difference (HR = 0.92) with 95% Assurance

Step 1: Define the Clinical Problem

Objective: Detect a 3% absolute improvement in 5-year survival - Baseline survival: 46.9% - Target survival: 49.9% - Target hazard ratio: HR = 0.92 - Target log hazard ratio: β = log(0.92) = -0.0834

Study parameters: - Exposure prevalence: 30% - Event rate: 53.1% (based on 46.9% 5-year survival) - Desired assurance: 95%


Step 2: Set Up Uninformative Prior

For the log hazard ratio β:

Prior: β ~ Normal(0, σ²_prior)
where σ_prior = 1.0 (weakly uninformative)

This prior allows HR to range from ~0.14 to ~7.4 with 95% probability.


Step 3: Define the Likelihood

For Cox regression with n patients:

Observed effect: β̂ ~ Normal(β_true, SE²)

Standard Error: SE = √[1/(n × p × (1-p) × event_rate)]
                SE = √[1/(n × 0.3 × 0.7 × 0.531)]
                SE = √[1/(0.1115 × n)]

Example for n = 15,000:

SE = √[1/(0.1115 × 15,000)] = √(1/1,672.5) = 0.0244


Step 4: Define Decision Criterion

Success = Posterior 95% credible interval excludes "no effect" (HR = 1.0)

On log scale: Upper bound of 95% CI for β < 0

This means: P(β > 0 | data) < 0.025


Step 5: Calculate Posterior Distribution

With uninformative prior and normal likelihood:

Posterior: β|data ~ Normal(μ_post, σ²_post)

Prior precision: τ_prior = 1/σ²_prior = 1/1² = 1
Likelihood precision: τ_likelihood = 1/SE²

Posterior mean: μ_post = (β̂ × τ_likelihood + 0 × τ_prior)/(τ_likelihood + τ_prior)
Posterior variance: σ²_post = 1/(τ_likelihood + τ_prior)

For large samples (τ_likelihood >> τ_prior):

μ_post ≈ β̂
σ_post ≈ SE


Step 6: Assurance Calculation Method

For each sample size n:

  1. Calculate SE: SE = √[1/(0.1115 × n)]

  2. Simulate "observed" data: β̂ ~ Normal(-0.0834, SE²)

  3. Calculate posterior: μ_post ≈ β̂, σ_post ≈ SE

  4. Check success criterion:

    CI_upper = μ_post + 1.96 × σ_post
    Success if CI_upper < 0
    

  5. Calculate assurance: Proportion of simulations with success


Step 7: Worked Example (n = 15,000)

n = 15,000 patients
Events = 15,000 × 0.531 = 7,965
SE = √[1/(0.1115 × 15,000)] = 0.0244

Simulation:
- True β = -0.0834
- β̂ ~ Normal(-0.0834, 0.0244²)
- Posterior: β|data ~ Normal(β̂, 0.0244²)
- CI_upper = β̂ + 1.96 × 0.0244 = β̂ + 0.0478

Success condition: β̂ + 0.0478 < 0
Therefore: β̂ < -0.0478

P(Success) = P(β̂ < -0.0478) where β̂ ~ Normal(-0.0834, 0.0244²)
           = P(Z < (-0.0478 - (-0.0834))/0.0244)
           = P(Z < 0.0356/0.0244)
           = P(Z < 1.46)
           = 0.93

Assurance = 93%


Step 8: Sample Size Results Table

Sample Size Events SE(β) Assurance Interpretation
10,000 5,310 0.0274 0.85 Too low
12,000 6,372 0.0251 0.89 Getting close
15,000 7,965 0.0224 0.93 Close to target
17,000 9,027 0.0210 0.95 Target achieved
20,000 10,620 0.0194 0.97 Overpowered

Step 9: Verification Calculation

For n = 17,000 (target sample size):

SE = √[1/(0.1115 × 17,000)] = 0.0210

Success condition: β̂ + 1.96 × 0.0210 < 0
Therefore: β̂ < -0.0412

P(Success) = P(β̂ < -0.0412) where β̂ ~ Normal(-0.0834, 0.0210²)
           = P(Z < (-0.0412 - (-0.0834))/0.0210)
           = P(Z < 0.0422/0.0210)  
           = P(Z < 2.01)
           = 0.978 ≈ 0.95

✅ Confirmed: 17,000 patients provides 95% assurance


Step 10: Final Recommendation

To detect HR = 0.92 (3% absolute survival improvement) with 95% Bayesian assurance:

  • Required sample size: 17,000 patients
  • Required events: 9,027 deaths
  • Study duration: Sufficient to observe ~9,000 events

Interpretation: With 17,000 patients, there is a 95% probability that the posterior 95% credible interval will exclude "no effect" if the true hazard ratio is 0.92.