epidemiology

Par mkurman · zorai

Modélisation des maladies et analyse épidémiologique : modèles compartimentaux SIR/SEIR, estimation du R0, simulation d'épidémies, prévision de l'incidence/prévalence et modélisation de l'impact des interventions.

npx skills add https://github.com/mkurman/zorai --skill epidemiology

Aperçu

Modélisation épidémiologique avec modèles compartimentaux (SIR, SEIR), estimation de R0, simulation d'épidémies, prévision d'incidence/prévalence et analyse d'impact des interventions. Couvre l'approche fondamentale basée sur les EDO utilisée en santé publique et en recherche sur les maladies infectieuses.

Installation

uv pip install scipy numpy matplotlib

Modèle SIR

import numpy as np
from scipy.integrate import solve_ivp

def sir(t, y, beta, gamma):
    S, I, R = y
    dS = -beta * S * I
    dI = beta * S * I - gamma * I
    dR = gamma * I
    return [dS, dI, dR]

beta, gamma = 0.3, 0.1
R0 = beta / gamma
print(f"R0 = {R0:.2f}")

sol = solve_ivp(sir, [0, 160], [0.99, 0.01, 0], args=(beta, gamma), dense_output=True)

Modèle SEIR

def seir(t, y, beta, sigma, gamma):
    S, E, I, R = y
    dS = -beta * S * I
    dE = beta * S * I - sigma * E
    dI = sigma * E - gamma * I
    dR = gamma * I
    return [dS, dE, dI, dR]

sol = solve_ivp(seir, [0, 200], [0.99, 0.005, 0.005, 0], args=(0.3, 0.2, 0.1))

Paramètres clés

  • R0 (nombre de reproduction de base) : nombre moyen de cas secondaires provenant d'une personne infectée dans une population naïve
  • Beta : taux de transmission (contacts × probabilité d'infection par contact)
  • Gamma : taux de guérison (1 / période infectieuse)
  • Sigma : taux d'incubation (1 / période d'incubation)

Workflow

  1. Estimer les paramètres à partir de la littérature ou de données de cas
  2. Définir les équations des compartiments (SIR, SEIR, étendus avec strates d'âge/risque)
  3. Résoudre l'EDO avec solve_ivp
  4. Tracer les courbes S, I, R en fonction du temps
  5. Exécuter l'analyse de sensibilité : modifier beta/gamma et observer le timing du pic, le nombre total de cas
  6. Ajouter des interventions en réduisant beta au fil du temps (confinement, port du masque, vaccination)
  7. Comparer les scénarios : pas d'intervention vs vaccination vs mesures de santé publique

Références

Skills similaires