Netwerksimulatie: lockdown helpt niet snel tegen virusverspreiding
Introductie
Zijn lockdowns een beetje efficiënt om de verspreiding van virussen te vertragen? Zo’n virus springt van persoon naar persoon omdat je contact hebt. Je komt in elkaars buurt of in dezelfde binnenruimte. Het contact kun je beperken, maar hoeveel moet je het beperken voordat het een goed effect gaat hebben? Daar is veel discussie over. De bekende wetenschapper Ionnidis, die ook voor de WHO onderzoek doet, vond het effect van lockdowns wat tegenvallen.
Voor de lol heb ik een extreem simpel speelgoedmodelletje gemaakt om het effect van contactbeperking op de verspreiding van het coronavirus te bekijken. Personen en contacten kun je nabootsen (simuleren) met een zogenaamde “graaf”, in het Engels “graph”. Grafen worden in de informatica veel gebruikt. Ze bestaan uit nodes, de bolletjes, en edges, de lijntjes die de bolletjes met elkaar verbinden. Hieronder zie je een visuele representatie van zo’n graaf.

Implementatie
Sommige mensen zitten altijd thuis, en anderen ontmoeten tientallen mensen op een dag. In mijn simulatie hebben de nodes wisselende hoeveelheden contacten; gemiddeld zijn het er veertien. Dat getal heb ik uit een studie gehaald: Social Contacts and Mixing Patterns Relevant to the Spread of Infectious Diseases (2008).
Although mixing patterns are known to be crucial determinants for model outcome, researchers often rely on a priori contact assumptions with little or no empirical basis. source
In het plaatje hierboven zie je ook een soort groepjes. Ik heb ingesteld dat de helft van de contacten (nodes) verbinding maakt (edge) “in de buurt”, dus met een node die bijna hetzelfde volgnummer heeft. De andere helft van de verbindingen (contacten) wordt willekeurig over de hele populatie gemaakt.
Je kunt besmet worden door een contact. De kans dat je besmet wordt is gemiddeld niet heel groot. Volgens Rajiv Bhatia is die kans maar 1 op 3836 (0,000261). Dat is mede zo laag omdat je de meeste contacten met mensen hebt die niet ziek zijn. Ik heb dat getal als b in mijn code gezet, maar als je in one pass snel de spreiding wilt simuleren schiet dat niet op, dus ik vermenigvuldig het met een “booster”.
In mijn simulatie kan ik ook contacten verbreken. Dan wordt bijvoorbeeld 20% van de contacten verwijderd, op willekeurige basis.
Vraag
Als je het aantal contacten met x% vermindert, hoeveel effect heeft dat dan op de besmettingen?
Resultaat
Bij n=5000 (dus vijfduizend nodes of mensen) met een enkele pass en een boost van 100 krijg ik dit resultaat:
contact [%] | besmet [n] | besmet [%] |
---|---|---|
10 | 139 | 2,8 |
20 | 226 | 4,5 |
30 | 323 | 6,5 |
40 | 420 | 8,4 |
50 | 467 | 9,3 |
60 | 534 | 10,7 |
70 | 559 | 11,2 |
80 | 587 | 11,7 |
90 | 615 | 12,3 |
100 | 601 | 12,0 |
Tabel: Resultaten bij n=5000.
Bespreking
Het valt op dat het verschil tussen geen contacten verbreken (100% contact) en de helft van de contacten verbreken (50% contact) nogal klein is; het verschil in het aantal besmettingen is maar ca. drie procent. Daarna gaat het wel sneller. In dit model moet je dus een echt zware lockdown toepassen om significant effect te sorteren. Als dit model de werkelijkheid weerspiegelt, dan zou dat betekenen dat de kosten van een effectieve lockdown erg hoog zijn (cultureel, maatschappelijk, economisch, en qua gezondheid).
Nu is het niet zo dat we kunnen aannemen dat dit speelgoedmodelletje ook maar in de buurt komt van een realistische modellering. Wel is het zo dat professionele modellen ook vaak beroerde voorspellende waarde hebben getoond in het afgelopen jaar rondom COVID-19. Problemen met modellen zijn inherent: het is een simplificatie van de werkelijkheid en het hangt aan elkaar van aannames. De uitkomsten zijn dus hoogst afhankelijk van de vaak impliciete aannames die gemaakt zijn bij het ontwerp. De meeste modellen gebruiken formules en matrixberekeningen. Dat geeft de schijn van exactheid en wetenschappelijkheid, maar ik vermoed dat dikwijls intuïtie beter werkt. Modellen zijn wel geschikt om mee te spelen, zodat je nieuwe inzichten en gedachten kunt opdoen. Maar dat resultaat wordt meestal alleen verkregen door de makers van het model, die er zelf mee stoeien.
Mijn modelletje gebruikt een netwerkmodel geïmplementeerd met pointers, als graaf, en zou daardoor mogelijk wel iets kunnen zeggen over het gedrag van netwerken die “redundante” verbindingen hebben. De spreiding van informatie of virussen in zo’n netwerk wordt weinig gehinderd door verbindingen (contacten) te verbreken. Het netwerk is robuust. Mogelijk geldt hetzelfde voor netwerken van menselijke contacten. Dat zou kunnen helpen verklaren waarom lockdowns maar beperkt effect hebben.
Technische details
Het model is geïmplementeerd in C met behulp van een
struct
en pointers. Ik werkte op mijn Arch Linux
installatie. Om enkele beginvariabelen in te stellen maak ik gebruik van
een simpele #define
die met een sed
vanuit een
script gewijzigd kan worden. Daarna is het een kwestie van
hercompileren; dat gaat zo snel dat het de moeite niet waard was om
verder nog moeite te doen om het “netter” te implementeren.
gcc -Wall -lm virusimnet.c -o virusimnet
De executable maakt ook een .dot
bestand aan,
dat bedoeld is voor Graphviz.
dot -Tpng virusimnet.dot -o virusimnet.png
Behalve een .dot
wordt ook een .tsv
bestand
gemaakt; een tabgescheiden
waarden bestand. Dat is direct te openen met een spreadsheetprogramma
zoals Gnumeric.
Zie verder de broncode.
Referenties
- Assessing Mandatory Stay‐at‐Home and Business Closure Effects on the Spread of COVID‐19. Eran Bendavid, Christopher Oh, Jay Bhattacharya, John P.A. Ioannidis. Jan. 2021, in: European Journal of Clinical Investigation. https://doi.org/10.1111/eci.13484
- Social Contacts and Mixing Patterns Relevant to the Spread of Infectious Diseases. Joël Mossong et al. Mar. 2008, in: PLOS Medicine. https://doi.org/10.1371/journal.pmed.0050074
- Estimated Average Probabilities of COVID-19 Infection, Hospitalization, and Death From Community Contact in the United States. Rajiv Bhatia. Jun. 2020, medRxiv preprint. https://doi.org/10.1101/2020.06.06.20124446
- Introduction to The Design & Analysis of Algorithms. Anany Levitin, 2003. Book. ISBN-13: 9780201743951.

Deze blogpost werd in december 2022 overgezet van WordPress naar een methode gebaseerd op Markdown; het is mogelijk dat hierbij fouten of wijzigingen zijn ontstaan t.o.v. de originele blogpost.