Categoriearchief: modellen

Een eenvoudig virusverspreidingsmodel

Mooi lesmateriaal van Wouter Burger van het Stedelijk Gymnasium Haarlem. Een model in Coach en SIR model + corona. Grote dank!

Wanneer je geïnteresseerd bent in lesmateriaal, stuur me dan een mailtje.

Aanleiding

Gisteren ontving ik een mail van het steunpunt NLT. NLT is een relatief nieuw vak voor de bovenbouw HAVO en VWO. De letters staan voor Natuur, Leven en Technologie. Het is een zogeheten snijvlakvak, een vak waar de bètavakken biologie, natuurkunde, scheikunde, wiskunde en aardrijkskunde bij elkaar komen. Er worden onderwerpen behandeld die vaak bij de monovakken blijven liggen. Mijn school, De Populier in Den Haag maakt zich sterk voor de bètavakken en wij bieden dit vak dus ook aan.

In dit vak proberen we ook een plek te reserveren voor de actualiteit. Als er eens nieuwe satelliet wordt gelanceerd of er is een vulkaanuitbarsting of het Higgsdeeltje is gevonden, dan is dit de plek om het daarover te hebben. Goed. Die mail dus. In die mail werd verteld dat er een module is die je goed zou kunnen gebruiken om het Corona-virus te bespreken. Doordat we zo hard bezig zijn dat vermaledijde afstandsonderwijs vorm te geven hadden we nog helemaal niet hierover gedacht. Maar toen ik mijn NLT-collega’s en de directie voorstelde om lesjes te maken over het Corona-virus, was iedereen meteen heel enthousiast! “Dat moeten we doen!” En zoals dat bij ons gaat, na 20 minuten (online) overleg waren we eruit. We doen allemaal waar we goed in zijn. Marten doet de biologie, Lindsey de scheikunde en ik doe de modellen.

Modelleren

En dan ga je op zoek. Ik wil met mijn leerlingen gaan modelleren. Er zijn wel een paar voorwaarden:

  • Leerlingen moeten thuis zelf aan de slag kunnen gaan. Modelleren wordt het practicum van deze “noodmodule”. Dus de software moet liefst gratis maar in ieder geval toegankelijk zijn.
  • Het moet begrijpelijk zijn voor alle leerlingen. We doen dit voor alle leerlingen die nu nog NLT volgen: HAVO 4, VWO 4 en VWO 5.
  • Het moet wel een beetje echt aanvoelen. Alleen exponentiële groei is niet genoeg. Liefst moet “flattening the curve” in het model aan te tonen zijn.

Eerst Google hulp vragen. Er zijn plekken waar de effecten van ingrijpen (en niet ingrijpen) prachtig wordt laten zien, zoals hier, in The Washington Post, met schitterende animaties, die het extreem helder laten zien. En deze Epidemic calculator is ook prachtig! Maar de onderliggende wiskunde kan ik daar niet helemaal uithalen. Dan maar even langs mijn slimme YouTubekanalen. De video’s van 3Blue1Brown (1 en 2) en de video van Numberphile. En die laatste bracht me op het spoor van een model, het zgn. SIR-model of in het Nederlands, het Ziektecompartimentenmodel. Eigenlijk kinderlijk eenvoudig:

Het model

Je begint met een aantal mensen N waarvan een klein deel geïnfecteerd is (I). De rest van het aantal mensen is dan Vatbaar (S, Susceptable). In het begin is er nog geen groep die genezen is (R Recovered) en de ziekte dus ook niet meer kan krijgen (ik weet het, dat is nog niet 100% zeker). Wat je daarna doet is stapjes nemen in de tijd. En elke keer als je zo’n stapje neemt, verandert het aantal geïnfecteerden I, het aantal genezen mensen R en dus ook het aantal vatbaren S.

Om te weten hoe deze veranderen, heb je een infectiefactor nodig; hoe hoger dit getal, hoe meer mensen geïnfecteerd raken. Je hebt ook een getal nodig dat vertelt hoe groot het percentage is van de geïnfecteerden dat gedurende de tijdstap geneest. In dit model staat “genezen, R” eigenlijk voor twee groepen: zij die daadwerkelijk genezen en zij die eraan sterven (n het Engels lossen ze dit op door voor R niet “Recovered” te zeggen, maar “Removed”, verwijderd uit de groep die gevaar loopt. Beide groepen zijn (best cru natuurlijk) niet meer vatbaar.

We hebben dus de volgende gegevens:

  • het totaal aantal mensen in de bevolking N
  • aantal vatbare mensen S
  • aantal geïnfecteerde mensen I
  • aantal genezen mensen R
  • infectiefactor i
  • geneesfactor g
  • de tijd t. Elke keer als je een stapje neemt wordt t 1 groter

Als eerste bereken je het aantal geïnfecteerde mensen I op tijdstip t. Omdat te kunnen berekenen bereken je allereerst wat erbij komt. Dit hangt natuurlijk af van de infectiefactor i,  het aantal mensen dat vatbaar is S en welk gedeelte van de bevolking geïnfecteerd is, de infectiegraad I/N Deze getallen vermenigvuldig je: extra geïnfecteerden= S(t-1) * I(t-1) / N.  De t-1 verwijst naar de vorige dag. Je berekent de nieuwe dag op grond van de getallen van de vorige dag.

Er zijn ook geïnfecteerden die beter worden. Die gaan van dat getal af. Dat aantal is afhankelijk van de geneesfactor g en het aantal geïnfecteerden: minder geïnfecteerden=g*I(t-1). 

De verandering van het totaal aantal geïnfecteerden per dag is dan dI=i*I(t-1)*S(t-1) – g*I(t-1)

Dan kunnen we dus het aantal geïnfecteerden op tijdstrip t berekenen:
I(t)=I(t-1) + dI

Het aantal genezen personen is vervolgens eenvoudig uit te rekenen. Daar komt bij:
dR=g*I(t-1), dat wat eraf ging bij het aantal geïnfecteerden. Dan wordt het aantal genezen personen op tijdstip t:
R(t)=R(t-1) + dR

Het aantal vatbaren S is nu zeer eenvoudig uit te rekenen. Het is namelijk het totaal aantal mensen – de geïnfecteerden – de herstelden. In een formule: S(t)=NI(t) – R(t)

Op een rijtje:
dI=i*I(t-1)*S(t-1) – g*I(t-1)
dR=g*I(t-1)

I(t)=I(t-1) + dI
R(t)=R(t-1) + dR
S(t)=NI(t) – R(t)

Overigens wordt vaak gesproken over de R0, het getal dat vertelt hoeveel mensen er aangestoken worden t.o.v. het aantal mensen dat beter wordt. Als dit groter dan 1 is, dan is dat niet goed, we moeten ervoor zorgen dat het kleiner dan 1 wordt. In dit model is R0 ook te vinden. Het is namelijk de verhouding van de infectiefactor en de geneesfactor: i/g. Vergelijk dit met de verhouding van moederneutronen en dochterneutronen bij kernsplijting in een kernreactor. Als die groter is dan 1, gaat de reactor harder (al snel een atoombom); als die 1 is, een is het vermogen contant en als deze kleiner is dan 1, dooft de kernreactor uit.

Ik heb later nog de mortaliteit toegevoegd. Het maakt voor het model niet veel uit. Wat je in feite doet is de groep “genezen” splitsen in een groep die echt genezen is en een groep die sterft. Ik heb er wel even over nagedacht maar ik vind dat als je een model maakt dat je moet proberen het zo nauwkeurig mogelijk te doen. Ook al is het model dan donkerder. Ik deel hier beide modellen. Kun je kiezen.

De verandering is dat er van de groep geïnfecteerden ook nog afgaat de groep die overlijdt:
dD= – m*I(t-1). Hierin is m ( (welke percentage sterft tijdens een tijdstap) de mortaliteit. We gebruiken D voor het aantal overledenen.

Het model met ook de groep overleden ziet er dan zo uit:

dI=i*I(t-1)*S(t-1) – g*I(t-1)
dR=g*I(t-1)
dD=-m*I(t-1)

I(t)=I(t-1) + dI
R(t)=R(t-1) + dR
D(t)=D(t-1) +dD
S(t)=NI(t) – R(t)

Software

In de video van Numberphile doen ze dit in het gratis programma Geogebra. Een schitterend programma dat heel veel kan. Ik heb het echter zelf even geprobeerd en twee dingen zorgden ervoor dat ik het niet ga gebruiken. Ten eerste is er toch nog een hoop “abracadabra“. Wat gebeurt er precies? De tijdstappen zie je bijvoorbeeld niet. Bovendien kreeg ik het niet goed voor elkaar in het programma. Het heeft, een redelijk steile leercurve. En dat is niet handig.

Ik overlegde even met mijn bètamakkers in het land en besloot eens te zien of ik het in Excel zou kunnen doen. Dat heeft een paar grote voordelen: alle leerlingen hebben er wel eens mee gewerkt, de mesten hebben het thuis op de computer staan (vanwege het feit dat we als school via het bestuur een licentie hebben) en het is heel makkelijk om te zetten naar andere spreadsheetprogramma’s waarvan er een aantal helemaal gratis en/of webbased zijn (Google Sheets bijvoorbeeld).

Excel en Google Sheets
Had ik dat maar meteen gedaan. Kinderlijk eenvoudig om het te maken en direct kwamen daar de gewenste curves uit! Flattening the curve is meteen zichtbaar als je de infectiefactor verkleint en ook het bijzondere effect dat als die factor heel laag is, dat dan niet iedereen wordt geïnfecteerd. Ik heb de Excel files ook direct in Google Sheets geïmporteerd waar alles precies zo werkte.

Modelleertaal
In het eindexamenprogramma natuurkunde is modelleren een onderdeel en dat kun je doen in Coach van CMA. Dat is een (prima) betaald programma dat niet alle scholen zullen hebben aangeschaft. Gelukkig is er ook een gratis alternatief, de webbased Modelleertaal van mijn onvolprezen makker Tom Kooij. Hierin heb ik dit beide modellen (met en zonder mortaliteit)  ook geladen en dat ging zo mogelijk nog gemakkelijker dan in Excel. Later heeft Tom dit model er apart ingezet en verbeterd. Je kunt in dit model ook de tijdspat veranderen. In de Excel-modellen heb ik dat weggelaten. Dit levert nl. moeilijkheden waar ik leerlingen niet mee lastig wil vallen. Het kan wel overigens.

Mitsen en maren

Dit model is natuurlijk slechts een model. Er is veel over te zeggen en wellicht ook wel wat aan te doen.

  • Je zou het model kunnen wijzigen zodanig dat de infectiefactor kan veranderen gedurende de run. Dan kun je de effecten van maatregelen beter zien.  In de software die we gebruiken is dat mogelijk. Vergt wel iets meer gebruikerslenigheid.
  • Het zou wellicht handig zijn om wat te kunnen spelen met de tijd. Veel langer of kortere tijdstappen.
  • Wellicht is het beter om aan de knop van R0 te draaien. Kan gemakkelijk wordt geregeld in de Excel-files.
  • In de jongste video van 3Blue1Brown laat de auteur allemaal prachtige modellen zien waar hij willekeurige mensen door elkaar heen laat lopen en elkaar aansteken. Dat weet vermoedelijk betere voorspellingen, is beter te finetunen en te verbeteren. Dit is echter veel ingewikkelder, vergt programmeer-vaardigheden en valt buiten de scoop van onze lessen. Wel mooi om naar te kijken en zeer instructief. Het is leuk om eens na te denken of er geen fysiek spel mee te maken is die je in een klas kunt doen (als we weer in een lokaal mogen zitten).

Files

Vanzelfsprekend deel ik de Excel-files, de Google Sheets en de files voor de Modelleertaal. Voor collega’s die dit willen gebruiken in de lessen over het virus of voor anderen die wel eens aan de knoppen willen zitten. Als je er mee aan de slag gaat, er dingen aan verbetert (en daar reken ik op) of er anderszins opmerkingen over hebt, deel ze met mij, dan deel ik dat weer hier. Ik gaf hier zelf nog lessen mee maken. Die zal ik hier ook delen.

  Model   Beschrijving   Excel   Google Sheets   Modelleertaal
  1   Zonder overlijden Model01   Virus01   Virus011
  2   Met overlijden Model02   Virus02   Virus02

1 Tom  heeft het model direct beschikbaar gemaakt! Als je een grafiek wil met alle interessante grootheden, dan moet je even klikken op Plot meerdere grafieken (klein linksonder). Dan kun je kiezen om de grafieken voor S,I en R aan te zetten.

Als laatste

En als een ding duidelijk is, is het dat een lagere infectiegraad, echt helpt. Dus, volg de richtlijnen van het RIVM en de regering, wees zelfs nog iets strenger en dan zal het altijd beter gaan. Stay safe!

Arjan van der Meij