Epidemiology & Biostatistics
SIR Herd Immunity Threshold & Vaccine Efficacy Formula
Calculate the Kermack-McKendrick Herd Immunity Threshold 1 - 1/R_0, Effective Reproduction Number R_eff = R_0*(1 - v*VE), and critical coverage v_crit = (1 - 1/R_0)/VE.
Avoid the #1 public-health mistake: divide 1 - 1/R_0 by leaky vaccine efficacy VE!
In Kermack and McKendrick’s homogeneous SIR transmission model with Basic Reproduction Number R_0 > 1, transmission stops growing once the immune share exceeds the classic Herd Immunity Threshold HIT = 1 - (1 / R_0). However, real-world vaccines prevent infection with efficacy VE in (0, 1] rather than 100%! At population vaccination coverage v_cov in [0, 1], the immune fraction is v_cov * VE, Effective Reproduction Number is R_eff = R_0 * (1 - v_cov * VE), and Critical Vaccination Coverage required to push R_eff <= 1 rises to v_crit = (1 - 1 / R_0) / VE — becoming MATHEMATICALLY IMPOSSIBLE via vaccination alone whenever VE < 1 - (1 / R_0)!
Check by hand with Basic_R0 = 4.0 (B2), Vaccine_Efficacy_VE = 0.80 (B3), and Current_Coverage_vcov = 0.75 (B4): Perfect-vaccine HIT is 1 - 0.25 = 0.7500 (75.00%). A naive analyst sees 75% coverage and declares victory — yet because VE = 80%, actual immune fraction is 0.75 * 0.80 = 0.60, leaving R_eff = 4.0 * (1 - 0.60) = 1.6000 > 1 (epidemic growth continues!) and requiring v_crit = 0.75 / 0.80 = 0.9375 (93.75% coverage!) to reach R_eff = 1.00!
| SIR Epidemiological Metric (R_0=4.0, VE=0.80, v_cov=0.75) | Formula | Verified Output |
|---|---|---|
| Perfect-Vaccine Herd Threshold (HIT) | 1 - (1 / R_0) | 0.7500 (75.00% Immune Needed) |
| Effective Reproduction Number (R_eff) | R_0 * (1 - v_cov * VE) | 1.6000 (> 1, Outbreak Grows!) |
| Critical Vaccine Coverage (v_crit) | (1 - 1 / R_0) / VE | 0.9375 (93.75% Coverage Needed) |
| Leaky Vaccine Failure (VE = 0.60 < 0.75) | v_crit > 1.00 | Impossible with Vaccine Alone |
Effective Reproduction Number R_eff = R_0 * (1 - v_cov * VE) Formula
Validate R_0 > 0, 0 < VE <= 1, and 0 <= v_cov <= 1.
=LET(r_0, B2, ve_ef, B3, v_cv, B4, IF(OR(r_0 <= 0, ve_ef <= 0, ve_ef > 1, v_cv < 0, v_cv > 1), "Invalid SIR Input", ROUND(r_0 * (1 - v_cv * ve_ef), 4)))Imperfect-Vaccine Critical Coverage v_crit = (1 - 1 / R_0) / VE Formula
Branch explicitly on R_0 <= 1 (0 coverage needed) and VE < 1 - 1 / R_0 ("Impossible with Vaccine Alone") so planners never report nonsense coverages like 125%!
=LET(r_0, B2, ve_ef, B3, IF(OR(r_0 <= 0, ve_ef <= 0, ve_ef > 1), "Invalid SIR Input", IF(r_0 <= 1, 0, LET(hit_p, 1 - (1 / r_0), IF(ve_ef < hit_p, "Impossible with Vaccine Alone (VE < HIT)", ROUND(hit_p / ve_ef, 4))))))Try the example
Use the original values or change them to test your understanding.