piątek, 20 marca 2020

SIR - Podstawowy model epidemii

Nazwa tego modelu to skrót od trzech stanów osoby zarażonej. S oznacza “susceptible” czyli „podatny”, I to “infected” czyli „zainfekowany/chory”, wreszcie R to “recovered” czyli “wyleczony” (i chwilowo odporny). Tą odporność możemy uznać za trwałą lub nietrwałą, przy czym z biologicznego punktu widzenia może to oznaczać dwie rzeczy:
  1.     Zanik “pamięci immunologicznej” dla danego drobnoustroju, co raczej zdarza się w normalnych warunkach rzadko (choć niektóre “czynniki zakaźne” wymagają kilku kolejnych szczepień, żeby odporność była trwała)
  2.     Mutacje drobnoustroju, powodującą że jego nowe szczepy uciekają przed odpornością nabytą już przez żywicieli. To znacznie częstszy przypadek, gdyż ewolucja bakterii, a zwłaszcza wirusów przebiega o kilka rzędów wielkości szybciej niż ewolucja człowieka.
Dla naszego prostego modelu mechanizm tego zaniku nie będzie jednak istotny. Bardzo ważne będą natomiast prawdopodobieństwa zarażenia (Infection), sposób wychodzenia zarażonych z populacji (wyzdrowienie, śmierć), i prawdopodobieństwo lub czas utraty odporności - o ile będziemy chcieli się tym zająć.
Ponieważ stany SIR możemy zakodować jako liczby całkowite, nasz model może być wykonany w konwencji probabilistycznego automatu komórkowego. Poniżej przedstawiłem bardzo ogólny algorytm. Występuje tam słowo “sieć”, ale nie przejmujcie się tym. Automat komórkowy to też rodzaj sieci - bardzo regularnej.
Zwróćcie uwagę że jeśli zamiast automatu synchronicznego użyjecie wersji Monte Carlo to krok uaktualnienia stanów automatu nie będzie poza wewnętrzną pętlą, tylko uaktualnienie będzie zachodzić po prostu w trakcie wykonywania pętli po losowych agentach. Pytanie też kiedy kończymy. Można do tego użyć jakiejś statystyki - np. Liczby chorych. Ale w Processingu możemy też kończyć po prostu gdy uznamy że już nic ciekawego się nie dzieje.
Macie wybór, jeśli chodzi o sposób uaktualniania modelu. Sugeruję jednak, żeby komórki wybierać metodą Monte Carlo. To bardziej realistyczne. Istoty żywe rzadko działają synchronicznie, a jeśli to robią, to dużym nakładem sił, używając odpowiednich mechanizmów synchronizacyjnych.
Liczba interakcji z sąsiadami komórki automatu może być różna - to dobry parametr modelu. Interakcja polega na „przekazaniu wirusa”, co jest możliwe tylko między aktualnie chorym, a aktualnie zdrowym osobnikiem. Reszta interakcji z punktu widzenia modelu jest „bezpłodna”.
Początkowy przyjmiemy dla ułatwienia że choroba trwa około jeden dzień, czyli do następnego wylosowania agenta.
Musimy mieć jednak “z tyłu głowy”, że czas trwania infekcji może być bardzo różny, więc powinniśmy mieć możliwość odliczania upływu czasu od początku infekcji agenta.
Upływ czasu może polegać na zmianie stanu komórki na liczbę dni od początku choroby i wreszcie zmianie stanu komórki chorej na stan odporności, po upływie zadanej liczby dni. To zgodnie z zasadą, że “katar leczony trwa siedem dni, a nie leczony tydzień”.
Alternatywnie możemy też przyjąć, nieco nierealistycznie, że w każdym dniu choroby mamy pewne prawdopodobieństwo wyleczenia (albo śmierci!) i wtedy czas trwania choroby będzie zmienny.

Teraz pomyślcie sami…
Może uda wam się zaimplementować model, zanim opublikuje moje rozwiązanie.

CDN




Brak komentarzy:

Prześlij komentarz