Het einde van de coronacrisis voorspellen met Tableau

Het RIVM actualiseert dagelijks een rapport waarin de ernst van de coronacrisis naar voren komt. Wat er niet in staat is welke aantallen we nog kunnen verwachten in de komende periode. In deze blog neem ik je mee hoe ik met Tableau en R de data prepareer en een groeimodel gebruik om de maxima te voorspellen voor onze GGD regio’s.

Van beschrijvende naar voorspellende analyse

Het RIVM rapporteert al enige tijd dagelijks over de situatie omtrent het nieuwe coronavirus. De update bestaat uit allerlei gegevens over wat er in de afgelopen periode gebeurd is. Ik heb enige tijd dagelijks de resultaten bekeken in de hoop meer inzicht te kunnen krijgen over een prognose. Dankzij een goede tip kwam ik achter het bestaan van het werk van de TU/e terecht, maar ook deze voorspellingen kwamen vorige maand tot hun einde. Overigens had ik deze wetenschappers gevraagd of ze ook hun voorspellingen voor Noord-Nederland wilden doen, maar ik kreeg nul op het rekest. Voorspellen wat eraan zit te komen is voor iedere Nederlander een kans om inzicht te krijgen in wat we van deze pandemie kunnen verwachten als we veilig met elkaar blijven omgaan. Laat deze voorspellingen je vooral voorzien van nieuwe inzichten en respecteer intussen de hygiëneregels van het RIVM.

Het groeimodel volgens Gompertz

De Gompertz curve wordt in de biologie ingezet om zaken als bevolkingsgroei, tumorgroei of metabole activiteit te modelleren. Het Gompertz model is een gespecialiseerd model, omdat het altijd gebaseerd is op een tijdreeks en het is een afgeleide van het logistische groeimodel. Het logistische groeimodel kan in vele vakgebieden gebruikt worden, bijvoorbeeld om de opbrengst van gewassen te relateren aan de zuurgraad van de bodem of om de algehele aanvaarding van nieuwe producten of gedachtegoed te modelleren.

Het einde van de coronacrisis voorspellen met Tableau - Gompertz model

In deze blog zal ik de Gompertz groeicurve loslaten op de aantallen infecties, ziekenhuisopnames en sterfgevallen binnen Nederland ten gevolge van het coronavirus (SARS-CoV-2) en de ziekte die eruit volgt (COVID-19). Als je gelijk naar het eindresultaat wilt en de datapreparatie wilt overslaan klik je hier.

Data verzamelen en prepareren met Tableau Prep

Datarep Flow Corona

Het kostte nogal wat tijd om betrouwbare bronnen te vinden met het detailniveau wat ik zocht. Om deze analyse goed te kunnen doen, zocht ik naar de aantallen voor iedere dag en gemeente. Uiteindelijk heb ik toegang gekregen tot actuele data van allecijfers.nl en tot een uitgebreide export van lekkercryptisch.nl. Ik ben dankbaar dat ik met deze datasets alvast een begin heb kunnen maken met het ontwikkelen van dit groeimodel. Als je geïnteresseerd bent in de details van hoe deze flow precies in elkaar steekt, kun je een berichtje achterlaten, of je stelt je vragen persoonlijk tijdens de virtuele Tableau Prep training van 19 en 20 mei die ik verzorg.

In grote lijnen komen er vanuit drie verschillende bronnen data bij elkaar die de coronacrisis omschrijven per gemeente. Ik heb links bovenin nota bene koppeltabellen gemaakt met daarin de postcodes per gemeente en de gemeentes per GGD. Dit heb ik enerzijds gedaan om gebruik te kunnen maken van maatwerk geografieën in Tableau en anderzijds om langs alle feiten steevast dezelfde gemeentenamen terug te laten komen. In het eindresultaat staat ook het aantal inwoners per GGD en zodoende kan ik de aantallen standaardiseren.

Overigens is het alweer even geleden dat de eerste patiënt werd opgemerkt en op basis van dit gegeven doe ik de aanname dat op 1 januari en 1 februari van dit jaar nog geen sprake was van het coronavirus en dus zet ik op deze twee datums alle meetwaarden op de waarde 0 voor alle gemeentes. Dit helpt om enerzijds de lijngrafieken altijd te laten beginnen bij het begin van dit kalenderjaar en anderzijds om de groeimodellen een betrouwbaar startpunt te geven.

Web data ophalen met Tableau Prep en R

In de vorige sectie refereerde ik aan twee van de drie bronnen. De derde bron is beschikbaar dankzij CoronaWatchNL en terug te vinden op Github. Tableau Prep kan sinds versie 2019.3 verbinding maken met externe applicaties zoals R en Python en zo kan met wat code alsnog deze databron worden toegevoegd. Om een eerste indruk te krijgen hoe je een connectie opzet met R kun je het beste de documentatie en de community van Tableau raadplegen.

Voordat ik het script kan implementeren in Tableau heb ik een werkende code nodig. De feitelijke data is beschikbaar in JSON formaat en die haal ik op met het volgende R-script:

Om ditzelfde script in Tableau Prep te laten draaien, moet ik een drietal aanpassingen doen:

  • Dit script moet ingepakt zijn in een functie.
  • Een script kan niet gebruikt worden als input van een Tableau Flow en dus heeft het een kapstok nodig waar ik de data aan vastplak.
  • Als het schema van de data uitvoer anders is dan de invoer, dan moet het schema van het resultaat gespecificeerd worden in het script.

Als kapstok gebruik ik een CSV met 1 miljoen regels data met daarin alleen de kolom ID. Als ik voor 355 gemeentes voor alle 366 dagen van 2020 een regel terugkrijg, weet ik dat de kapstok lang genoeg is. Na enkele mislukte pogingen kwam ik op de volgende oplossing uit:

Groeimodellen analyseren in Tableau Desktop

Wiskundige modellen programmeren in R kan snel heel complex worden. Aan de hand van de uitstekende voorbeelden van groeimodellen is het toch nog mogelijk en haalbaar om binnen korte tijd een groeimodel op te zetten.

Uiteraard geldt ook voor deze visualisatiestap dat ik eerst een voorspellend model ontwikkel in R om het daarna gemakkelijk te kunnen implementeren in Tableau. De volgende R code ligt ten grondslag aan een viertal berekende velden in Tableau:

Om dit script in Tableau Desktop te kunnen implementeren, moet ik gebruik maken van een tabelberekening (“table calc”) met daarin de volgende formule om de modelwaardes terug te krijgen (verderop gevisualiseerd als lijn in de rechter grafiek).

Uiteindelijk is het onderstaande dashboard het resultaat, eindelijk inzicht in plafondwaardes van het coronavirus! Dit dashboard delen via Tableau Public is helaas niet mogelijk omdat Tableau Online dergelijke scripts heeft uitgeschakeld. Als je het dashboard zelf wilt uitproberen, neem dan even contact met me op.

Het einde van de coronacrisis voorspellen met Tableau - Dashboard

Als laatste wil ik opmerken dat ik tijdens het schrijven bekend werd met de route die uitgestippeld is door ons kabinet (zie artikel op rijksoverheid.nl). Ook uit deze positieve ontwikkeling blijkt dat we nog steeds voorzichtig met elkaar moeten omgaan – al was het maar om een tweede golf te voorkomen. Alleen samen krijgen we corona onder controle.

Zelf voorspellen in Tableau?

Wil jij ook gebruik maken van voorspellende analyses in Tableau? Neem dan contact met ons op of download hier de proefversie van Tableau.