This report summarizes a Monte Carlo simulation projecting civilian deaths in Gaza over the next 2 years, accounting for:
- Direct violence
- Starvation
- Healthcare collapse
- Infectious diseases
- Water/sanitation failures
- Displacement-related mortality
- Chronic disease & mental health impacts
Warning
Median projected civilian deaths: 297,517
90% range (5–95 percentile): 294,541 – 300,473
95% confidence interval on median: 297,484 – 297,551
- Monte Carlo simulations: 20,000 runs over 730 days (2 years).
- Daily deaths sampled from normal distributions for each mortality driver.
- Cumulative deaths summed for each simulation to generate a distribution of possible outcomes.
- Bootstrap resampling provided confidence intervals on median projections.
- Violent deaths: Based on direct attacks.
- Starvation: Reflecting widespread food insecurity and famine conditions.
- Healthcare collapse: Deaths from untreated injuries and lack of chronic care.
- Infectious diseases: Diarrheal, respiratory, and other preventable diseases.
- Water/sanitation: Deaths from dehydration and waterborne illness.
- Displacement: Mortality from exposure and poor shelter conditions.
- Chronic/mental health: Indirect deaths from untreated chronic illnesses and mental health crises.
If current conditions persist, Gaza could face a catastrophic civilian death toll nearing 300,000 within two years from this report
# Monte Carlo simulation: projection of civilian deaths over 2 years in Gaza
# Components: direct violence, starvation, healthcare collapse, infectious disease,
# water/sanitation failure, displacement-related mortality, chronic/mental health
import numpy as np
import matplotlib.pyplot as plt
# Configuration
days = 730 # simulate 2 years
tsim = 20000 # Monte Carlo runs
bootstrap_rounds = 5000 # for CI estimation
# 1. Direct violence parameters
violence_means = [60, 90] # low/high daily total violent deaths
violence_sd = 15
violence_weights = [0.5, 0.5]
civ_violence_ratio = 0.9 # fraction of violent deaths that are civilian
# 2. Starvation parameters
starv_mean = 200
starv_sd = 60
# 3. Healthcare collapse (indirect) parameters
hc_mean = 40
hc_sd = 15
# 4. Infectious disease & sanitation parameters
id_mean = 35
id_sd = 10
# 5. Water/sanitation failure parameters
ws_mean = 25
ws_sd = 8
# 6. Displacement-related mortality parameters
disp_mean = 30
disp_sd = 10
# 7. Chronic disease & mental health parameters
chronic_mean = 10
chronic_sd = 4
# Storage for total projected deaths across simulations
totals = np.empty(tsim)
# Simulation loop
for i in range(tsim):
# Violence
choice = np.random.choice([0, 1], size=days, p=violence_weights)
mu_arr = np.where(choice == 0, violence_means[0], violence_means[1])
daily_violence = np.random.normal(mu_arr, violence_sd)
daily_violence = np.clip(daily_violence, 0, None)
civ_violence = daily_violence.sum() * civ_violence_ratio
# Starvation
daily_starv = np.random.normal(starv_mean, starv_sd, size=days)
daily_starv = np.clip(daily_starv, 0, None)
starvation = daily_starv.sum()
# Healthcare collapse
daily_hc = np.random.normal(hc_mean, hc_sd, size=days)
daily_hc = np.clip(daily_hc, 0, None)
hc_deaths = daily_hc.sum()
# Infectious disease
daily_id = np.random.normal(id_mean, id_sd, size=days)
daily_id = np.clip(daily_id, 0, None)
id_deaths = daily_id.sum()
# Water/sanitation failure
daily_ws = np.random.normal(ws_mean, ws_sd, size=days)
daily_ws = np.clip(daily_ws, 0, None)
ws_deaths = daily_ws.sum()
# Displacement-related mortality
daily_disp = np.random.normal(disp_mean, disp_sd, size=days)
daily_disp = np.clip(daily_disp, 0, None)
disp_deaths = daily_disp.sum()
# Chronic & mental health
daily_chronic = np.random.normal(chronic_mean, chronic_sd, size=days)
daily_chronic = np.clip(daily_chronic, 0, None)
chronic_deaths = daily_chronic.sum()
# Total for this simulation
totals[i] = (civ_violence + starvation + hc_deaths + id_deaths
+ ws_deaths + disp_deaths + chronic_deaths)
# Summary statistics
median = np.median(totals)
p5, p95 = np.percentile(totals, [5, 95])
# Bootstrap CI on median
boot_medians = np.empty(bootstrap_rounds)
for j in range(bootstrap_rounds):
sample = np.random.choice(totals, size=tsim, replace=True)
boot_medians[j] = np.median(sample)
ci_lower, ci_upper = np.percentile(boot_medians, [2.5, 97.5])
# Output results
print("Projection of civilian deaths over next 2 years (all drivers):")
print(f" • Median: {median:,.0f}")
print(f" • 90% range (5-95): {p5:,.0f} - {p95:,.0f}")
print(f" • 95% CI on median: {ci_lower:,.0f} - {ci_upper:,.0f}\n")
# Visualization Section
# 1. Time-series of cumulative projected deaths by month
months = np.arange(1, days//30 + 1)
medians_ts, p5_ts, p95_ts = [], [], []
for m in months:
frac = (m * 30) / days
medians_ts.append(median * frac)
p5_ts.append(p5 * frac)
p95_ts.append(p95 * frac)
plt.figure(figsize=(10,6))
plt.plot(months, medians_ts, label='Median cumulative deaths')
plt.fill_between(months, p5_ts, p95_ts, alpha=0.2, label='5-95% range')
plt.xlabel('Months from start')
plt.ylabel('Cumulative civilian deaths')
plt.title('Projected Cumulative Civilian Deaths over 2 Years')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
# 2. Histogram of total projected deaths\plt.figure(figsize=(8,5))
plt.hist(totals, bins=50, alpha=0.7)
plt.xlabel('Total civilian deaths after 2 years')
plt.ylabel('Frequency')
plt.title('Distribution of Projected Civilian Deaths')
plt.grid(True)
plt.tight_layout()
plt.show()-
UN OCHA. “Updates | United Nations Office for the Coordination of Humanitarian Affairs - Occupied Palestinian Territory.” OCHA Gaza Updates (2023–2025).
-
World Health Organization (WHO). “occupied Palestinian territory.” WHO OPT Reports (2023–2025).
-
World Food Programme (WFP). “Palestine | World Food Programme.” WFP Gaza Emergency (2023–2025).
-
Médecins Sans Frontières (MSF). “Palestine | MSF medical and humanitarian aid.” MSF Palestine Updates (2023–2025).
-
UNICEF. “More than 5,000 children diagnosed with malnutrition in the Gaza Strip in May.” UNICEF Press Release (May 2025).
-
Financial Times (FT). “Gaza on brink of running out of fuel in Israeli siege.” FT Article (April 2025).
-
Reuters. “Details of the humanitarian crisis in Gaza.” Reuters Special Report (May 2024).
-
The Guardian. “Children and elderly are dying from starvation in Gaza, says health minister.” Guardian Article (May 2025).
-
Washington Post. “IPC report says Gaza faces 'critical' famine risk.” Washington Post Article (May 2025).
-
Brown University, Costs of War Project. “Costs of War.” Costs of War Research (accessed July 2025).
Gaza, Gaza War, Civilian Casualties, Humanitarian Crisis, Monte Carlo Simulation, Famine, Starvation, Healthcare Collapse, Infectious Disease, Displacement, Mortality Projection, Gaza Conflict, 2025 Gaza War, Middle East Crisis, United Nations, WHO, WFP, UNICEF, Human Rights, Humanitarian Aid, Conflict Analysis, Civilian Deaths, War Impact, Statistical Modeling, Forecasting, Gaza Report

