2026. június 29., hétfő

COVID HALÁLOZÁS OKAI python modellezés

EPIDEMIOLÓGIAI MODELL – KÓRHÁZI KAPACITÁS ÉS HALÁLOZÁS OKAI ÉS KÖVETKEZMÉNYEI
----------
import numpy as np
import matplotlib.pyplot as plt

print("=" * 80)
print("SEIR + KÓRHÁZI KAPACITÁS + HALÁLOZÁSI MODELL")
print("Egészségügyi rendszerterhelés szimuláció")
print("=" * 80)

# -----------------------------
# PARAMÉTEREK
# -----------------------------
N = 1_000_000

beta = 0.35      # fertőzés
sigma = 0.2      # lappangás
gamma = 0.1      # gyógyulás

hospital_rate = 0.12     # fertőzöttek hány %-a kerül kórházba
base_mortality = 0.01    # alap halálozás
overload_mortality = 0.05  # túlterhelés esetén

hospital_capacity = 3000  # ágyak száma

T = 300

print(f"Népesség: {N}")
print(f"Kórházi kapacitás: {hospital_capacity} ágy")
print(f"Alap halálozás: {base_mortality}")
print(f"Túlterhelési halálozás: {overload_mortality}")

# -----------------------------
# KEZDŐÁLLAPOT
# -----------------------------
S = N - 100
E = 50
I = 50
R = 0
D = 0

history = {
    "S": [], "E": [], "I": [],
    "R": [], "D": [],
    "H": []
}

# -----------------------------
# SZIMULÁCIÓ
# -----------------------------
print("\nSzimuláció indul...")

for t in range(T):

    # új fertőzések
    new_exposed = beta * S * I / N
    new_infected = sigma * E
    new_recovered = gamma * I

    # kórházi igény
    hospital_demand = hospital_rate * I

    # túlterhelés
    overload_factor = 1.0
    if hospital_demand > hospital_capacity:
        overload_factor = hospital_demand / hospital_capacity

    # halálozás
    deaths = base_mortality * I
    if overload_factor > 1:
        deaths += (overload_mortality * (overload_factor - 1)) * I

    deaths = min(deaths, I)

    # frissítés
    S -= new_exposed
    E += new_exposed - new_infected
    I += new_infected - new_recovered - deaths
    R += new_recovered
    D += deaths

    # mentés
    history["S"].append(S)
    history["E"].append(E)
    history["I"].append(I)
    history["R"].append(R)
    history["D"].append(D)
    history["H"].append(hospital_demand)

    if t % 25 == 0:
        print(
            f"t={t:3d} | "
            f"I={I:8.0f} | "
            f"Kórházi igény={hospital_demand:8.0f} | "
            f"Halottak={D:8.0f}"
        )

print("\nSzimuláció befejezve.")

# -----------------------------
# EREDMÉNYEK
# -----------------------------
plt.figure(figsize=(12, 7))

plt.plot(history["S"], label="Fogékony (S)")
plt.plot(history["E"], label="Lappangó (E)")
plt.plot(history["I"], label="Fertőzött (I)", linewidth=2)
plt.plot(history["R"], label="Gyógyult (R)")
plt.plot(history["D"], label="Halálozás", linewidth=2)
plt.plot(history["H"], '--', label="Kórházi igény")

plt.axhline(hospital_capacity, color='red', linestyle=':', label="Kapacitás")

plt.title("SEIR modell kórházi kapacitás és halálozás figyelembevételével")
plt.xlabel("Idő")
plt.ylabel("Populáció")
plt.legend()
plt.grid()
plt.show()

# -----------------------------
# ÖSSZEGZÉS
# -----------------------------
peak_hospital = max(history["H"])

print("\nÖSSZEGZÉS")
print("-" * 40)
print(f"Összes halálozás: {D:.0f}")
print(f"Csúcs kórházi igény: {peak_hospital:.0f}")
print(f"Kapacitás túllépés: {'IGEN' if peak_hospital > hospital_capacity else 'NEM'}")

mortality_rate = D / N
print(f"Halálozási arány: {mortality_rate:.2%}")
------------
================================================================================
SEIR + KÓRHÁZI KAPACITÁS + HALÁLOZÁSI MODELL
Egészségügyi rendszerterhelés szimuláció
================================================================================
Népesség: 1000000
Kórházi kapacitás: 3000 ágy
Alap halálozás: 0.01
Túlterhelési halálozás: 0.05

Szimuláció indul...
t=  0 | I=      54 | Kórházi igény=       6 | Halottak=       0
t= 25 | I=     779 | Kórházi igény=      84 | Halottak=      65
t= 50 | I=   11112 | Kórházi igény=    1201 | Halottak=     991
t= 75 | I=   70771 | Kórházi igény=    8289 | Halottak=   54777
t=100 | I=   60472 | Kórházi igény=    7411 | Halottak=  241206
t=125 | I=   33627 | Kórházi igény=    4131 | Halottak=  305762
t=150 | I=   18410 | Kórházi igény=    2273 | Halottak=  315756
t=175 | I=    8075 | Kórházi igény=    1004 | Halottak=  318990
t=200 | I=    3143 | Kórházi igény=     392 | Halottak=  320330
t=225 | I=    1167 | Kórházi igény=     146 | Halottak=  320839
t=250 | I=     426 | Kórházi igény=      53 | Halottak=  321027
t=275 | I=     154 | Kórházi igény=      19 | Halottak=  321095

Szimuláció befejezve.

ÖSSZEGZÉS
----------------------------------------
Összes halálozás: 321119
Csúcs kórházi igény: 9165
Kapacitás túllépés: IGEN
Halálozási arány: 32.11%
Halálozási okok; a rendszer alulkalibrált, a kiszolgáló szakszemélyzet képzetlen, túlterhelt, a kórházak elavultak. a fertőzési csúcs alatt a kórházi igény túlcsúszása a halálozás „megugrása” túlterheléskor
görbék szétválása (rendszer-instabilitás)
--------------------


Nincsenek megjegyzések:

Megjegyzés küldése