Jack Bauer et les équations différentielles

Publié le 11 novembre 2008 par Timothée Poisot

Le titre de cette note est sans doute un peu obscur. Laissez moi préciser. Ceux qui ont vu la saison 3 de 24 savent que Jack Bauer, le super-flic qui sauve le monde Los Angeles est exposé à un virus très contagieux que des narco-traficants utilisent pour faire pression sur le gouvernement.

Quand je parle de virus très contagieux, je pèse mes mots. Il faut comprendre très contagieux au sens “série télé”, ce qui veut dire… très contagieux. On a droit à une description de quelques caractéristiques du virus, histoire de mettre l’auditeur dans l’ambiance.

Le temps d’incubation non contagieuse est de 14 heures. La mort survient entre 6 et 10 heures plus tard. Les prédictions sont : 200 cas en 24 heures (en introduisant une souche unique), et 9% du conté de Los Angeles atteints après une semaine.

A ce moment là, 99% des téléspectateurs se disent Ca fait peur. Le petit 1% qui reste — dont je fais partie — se dit Hey… Attend voir, et attrape un bloc notes.

En fait de bloc note, soyons honnête, j’ai attrapé R, le package simecol, et un bouquin d’épidémiologie qui traînait sur mon bureau.

Ce que j’avais en tête? Essayer de modéliser la dynamique infectieuse, à partir des quelques informations disponibles. En utilisant un modèle qui ressemble à celui (de type SI) que j’ai présenté dans ma dernière note, et qui est présenté juste ci-dessous.

Ce modèle est de type SEI, c’est-à-dire Susceptible, Exposed, Infected. Un individu commence par être sain, puis exposé au virus, et enfin infecté. J’explique rapidement les paramètres.

? est la mortalité liée au virus. ? est le taux de mortalité naturelle (et le taux de natalité aussi, puisque sur une semaine, ça ne change pas énormément — il est beaucoup plus faible que les autres paramètres). ? est le taux d’exposition, que j’ai défini en considérant qu’on avait à faire à de l’action “de masse”, c’est-à-dire qu’il varie en même temps que la population totale, et que le pourcentage d’individus atteints dans la population totale.

Comme vous avez bien suivi la dernière note, vous aurez commencé dans votre tête à reconstruire les équations de ce système, et vous aurez trouvé le résultat suivant :

Remarquons déjà qu’on fait une hypothèse forte : il n’y a pas de possibilité de survivre à l’infection. Autrement dit, quand vous êtes infectés, vous êtes certains de passer soit par le cas “mortalité naturelle” (mais avec mes paramètres, vous avez peu de chances), soit par la case “mortalité induite”, c’est-à-dire de succomber à l’infection.

Autre chose : j’ai simplifié un peu la formulation de dS/dt, pour alléger l’écriture. Vous aurez remarqué que comme on gagne autant qu’on perd à chaque pas de temps (?•S), le marquer deux fois n’est pas vraiment nécessaire.

On peut maintenant passer à la partie “implémentation” du modèle. Pour commencer, quelques données. On nous parle, dans la série, du comté de Los Angeles, que Wikipédia estime à 10.245.672 habitants. Et on introduit 1 individu infecté. On peut maintenant fixer les paramètres d’après ce qu’on connaît de la dynamique épidémique.

Nous allons prendre des journées (24 heures) comme pas de temps (pas pour la simulation en elle même, dans laquelle nous allons travailler avec 10-3 heures, mais pour fixer les paramètres). La phase d’incubation dure 14 heures, soit 14/24 de notre pas de temps.

Une chose à gérer est que les périodes exposé/infectieux ne correspondent pas exactement aux périodes incubation/symptomes. Pour faire simple, on va estimer que ces deux périodes sont confondues (et en plus, on ne dispose pas des données pour faire mieux).

Donc, on sait qu’on passe du statut exposé à infecté avec une probabilité de (24-14)/24, soit 3/12, soit encore 1/4 (valeur de ?). Si la mort survient en environ 6 heures, on va fixer ? à (24-6)/24, soit 18/24, soit encore 3/4.

Pour le calcul de ? il est fait à chaque itération, d’après la formule

où ? est fixée à 1.1 (ad hoc).

Pour vérifier si les paramètres sur la dynamique d’infection qu’on nous donne sont recevables, il suffit de faire tourner le modèle pendant neuf jours, et de regarder les résultats (code R sur demande, attention au pas de temps pour l’intégration numérique, ça peut prendre pas mal de temps — pour ce que c’est).

Commençons par le nombre total de pertes au cours du temps, dans le graphique ci-dessous.

Vous remarquerez qu’à 24 heures, on est bien aux environs de 200 cas, et qu’après 150 heures (soit une petite semaine), on atteint déjà les 106, soit 9% de la population de départ environ.

Si vous voulez regarder plus attentivement la variation de la population, vous pourrez voir un effet d’emballement à partir de ce moment, qui amène la population à s’éteindre (parce que plus il y a d’individus infectés, plus il y a de nouveaux cas créés).

Pour preuve (les couleurs sont les même que dans le modèle) :

Je tiens à préciser qu’il aurait fallu apporter des subtilités à ce modèle (comme une dynamique spatiale, par exemple), puisque si le virus se retrouve dans une ‘poche’ sans possibilité d’infecter de nouveaux hôtes, il va rapidement s’éteindre. Mais je n’avais pas le temps…

Pour conclure, qu’est-ce qui fait que ce virus est aussi performant?

Pour commencer, son cycle est très rapide. Pour information, la rougeole est latente entre 6 et 9 jours, et contagieuse pendant une semaine environ, et on peut y survivre. Dans le cas de ce virus théorique, tout est réglé en 24 heures maximum, et la majorité de ce temps est consacré à de la phase infectieuse (les 6 premières heures sont de la pré-incubation, ce qui laisse 18 heures pour se disséminer, avant de tuer l’hôte très rapidement).

Ecologiquement, il y a une densité de population importante, qui permet au virus de se répandre très facilement. Pour résumer, phase contagieuse longue, mort rapide, et conditions de propagation optimales.

Sur ce, je vais regarder la fin de la saison finir ma biblio…


Billets similaires