Zanim dopadnie nas grypa...

Dodatek do artykułu w Delcie 12/19

W artykule w Delcie 12/19 podałem kilka przepowiedni na temat tegorocznej grypy. Zapowiedziałem, że w pierwszych miesiącach 2020 roku będę regularnie sprawdzał swoją przepowiednię i aktualizował ją na podstawie bieżących danych.

Poniżej aktualne prognozy, a najpierw trochę uzupełnień.

Co na ten temat mówi sam NIZP-PZH?

Poniżej bieżący szkic sytuacyjny pochodzący wprost ze strony internetowej NIZP-PZH. Zwróć uwagę na to, że skala na osi pionowej jest logarytmiczna.

Zachorowania i podejrzenia zachorowań na grypę. Średnia dzienna zapadalność (na 100 tys. ludności) wg tygodniowych meldunków w sezonie 2019/20 w porównaniu z sezonami 2015/16 - 2018/19. (Źródło: NIZP-PZH)

Co na ten temat mówi Google Trends?

Zanim weźmiemy się za modelowanie i ekstrapolację w czasie, zobaczmy, co inni mają do powiedzenia na temat grypy. Skorzystamy z (bardzo modnego na koniec roku) narzędzia Google Trends, które pozwala zobaczyć zmiany popularności danego hasła. Szczegóły algorytmu owiane są tajemnicą (Dane w Trendach Google to przykładowe, obiektywne dane z wyszukiwarki Google. Tylko mały odsetek wyszukiwań jest używany do kompilowania danych w Trendach. - to cytat z oficjalnej informacji o usłudze), ale wyniki są w pełni jawne:

Trendy w ciągu ostatnich 5 lat

Okazuje się, że Google rozróżnia wyszukiwanie hasła "grypa" i tematu "Grypa". Jednak jak widać z poniższego wykresu, oba podejścia generują piki w identycznym terminie.

(Obrazek z Google Trends czasem nie ładuje się. Spróbuj wtedy odświeżyć stronę, to może pomóc.)

Trendy tegoroczne

Poniższy wykres jest na bieżąco aktualizowany i przedstawia trendy dla tematu "Grypa" dla ostatnich 12 miesięcy od dziś.

(Obrazek z Google Trends czasem nie ładuje się. Spróbuj wtedy odświeżyć stronę, to może pomóc.)
Warto zauważyć, jak świetnie on współgra z tym, co zawierają twarde dane z raportów NIZP-PZH, o których pisałem w Delcie 10/19. Poniższy wykres przedstawia unormowane dane o zachorowalności (styczeń-grudzień 2019) pochodzące z NIZP-PZH, na tle trendów Google dla tematu "Grypa":
Trendy z danych zgadzają się z trendami Google

Nie tylko coroczny pik zachorowań pokrywa się z pikiem zainteresowania tematem, ale także (również występujący co roku) wrześniowy szybki przyrost zgłoszeń też zgadza się z wynikami Google trends.

Wyniki prognozowania

10 grudnia 2019

Pisząc latem do Delty zapowiadałem, że w grudniu nie będzie więcej niż 140 tysięcy zachorowań w tygodniu, co wynikało z prostej liniowej ekstrapolacji. Obecnie jest 115 tysięcy - więc biorąc pod uwagę, że zwykle do października do grudnia jest stabilizacja liczby zachorowań - należy przypuszczać, że ta przepowiednia się spełni, i to z dużym zapasem.

Argumentowałem, że trend liniowy musi się zatrzymać (raczej prędzej niż później) i nie ma on związku z przebiegiem grypy. Rzeczywiście, w ostatnich 3 latach liczba zachorowań w pierwszym tygodniu grudnia była na mniej więcej stałym poziomie (a nawet lekko zmalała). Dlatego wszystko wskazuje na to, że epidemia wystartuje z niższego niż przewidywałem poziomu - a tym samym przerażająca wizja 400 tysięcy zachorowań w lutym (na szczęście) (chyba) się nie ziści!

W grudniu jeszcze jest za wcześnie, by cokolwiek zamodelować i na tej podstawie zaktualizować prognozę, ponieważ nasz model sprawdza się wtedy, gdy liczba zachorowań zaczyna już zmierzać w stronę rocznego maksimum. Ale mimo wszystko możemy pokusić się o prognozę na podstawie uśrednionych wartości historycznych parametrów modelu. Wątpię, by dało to coś dobrego, ale spróbujmy:

Prognoza z 10 grudnia

Przyjąłem, że do stycznia liczba zachorowań będzie taka sama, jak w chwili obecnej i uruchomiłem model od 1 stycznia 2020. Jak widać z powyższego obrazka, gdyby ta prognoza miała się sprawdzić, to pik zachorowań powinien wypaść 7 lutego, z liczbą zachorowań około 220 tysięcy.

Naturalnie, gdybym puścił model nie od 1 stycznia, tylko od 23 grudnia, to samo maksimum mielibyśmy tydzień wcześniej!

Pamiętajmy, że grypa jest chorobą kapryśną i jak tylko trafi się okazja, to nie będzie się słuchać danych historycznych... A więc - czapki na uszy, szaliki na szyje! Grypa nadchodzi!

16 stycznia 2020
Niespodziewanie... pierwsza moja prognoza z Delty sprawdziła się całkiem dobrze! Przewidywane na poziom 140 tysięcy grudniowe maksimum zachorowań w rzeczywistości wyniosło 138 tysięcy i przypadło na ostatni tydzień grudnia.

Po noworocznym spadku zachorowań (czy może raczej: zgłaszanych zachorowań?), w drugim tygodniu stycznia nastąpiło wyraźne odbicie krzywej zachorowań w górę - patrz wykres na początku strony.

Standardowo największą zachorowalność obserwuje się u dzieci w wieku szkolnym lub młodszych - i ten rok nie jest wyjątkiem. Ponieważ przerwa w szkole trwała aż do 6 stycznia należy przypuszczać, że - nawet jeśli dziecko zachorowało - w wielu przypadkach nie było to zgłaszane lekarzowi i po prostu zostawało pod pierzyną w domu, z dodatkiem malinowej herbatki do smartfona. Jednak w drugim tygodniu stycznia (jak zapewne sami zauważyliście wśród koleżanek i kolegów) liczba chorych szybko wzrastała - nawet nieco szybciej niż rok temu.

Dysponując na razie danymi jedynie z dwóch tygodni stycznia, nasz model daje następujące przewidywania, wyraźnie bardziej pesymistyczne od tych z 10 grudnia:

Prognoza z 15 stycznia
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty). Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Trudno oczekiwać, by na podstawie dwóch pomiarów można było postawić dobrą prognozę na miesiąc, czy nawet dłużej! Z drugiej strony, ze względu na grudniową anomalię (spowolnienie tempa zachorowań i noworoczny dołek), nie warto korzystać z danych wcześniejszych. Dlatego na razie nie przejmujmy się tym, co model przewiduje w tej chwili: dane z nadchodzących tygodni to zweryfikują.

Warto też zauważyć, że jak dotąd pogoda nas rozpieszcza: jest całkiem ciepło, jak na styczeń, temperatury wyraźnie dodatnie i nie pada. Czy dla wirusa to też sprzyjające warunki? Zobaczymy już wkrótce.

31 stycznia 2020

Choć oczy wszystkich skierowane są na koronawirusa z Wuhan, być może kogoś jeszcze interesuje tegoroczna zwyczajna grypa... zwłaszcza, że nasz model wreszcie może coś sensownego wygenerować. Byłem niedawno w przychodni i kłębiący się tam tłum zakatarzonych (zagrypionych?) ludzi wyraźnie zwiększył mój pesymizm co do tempa rozwoju epidemii. Zobaczmy, co na to odpowie nasz prościutki model.

Prognoza z 31 stycznia
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty). Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Mamy już dane za cały miesiąc. (Punkty na wykresie odnoszą się do początku tygodnia, którego dotyczy raport NIZP-PZH.)

Jak widać, średni trend jest przypadkiem bardzo podobny do tego z pierwszego tygodnia. Ponieważ krzywa, którą dopasowujemy nie trzyma się niewolniczo wartości z poczatku pomiaru (to dlatego na powyższym rysunku czerwona krzywa wypada nieco poniżej pierwszego punktu pomiarowego), możemy przypuszczać, że realne maksimum - przewidywane na trzeci tydzień lutego - może przekroczyć 300 tysięcy.

Co ciekawe - przez lekką stagnację po święcie Trzech Króli - prognozowany moment wystąpienia maksimum przesunął się jeszcze bardziej w czasie. Mimo to ja jednak dalej obstawiałbym, że nastąpi to wcześniej: w Delcie przepowiadałem drugi tydzień lutego.

Druga ciekawa obserwacja dotyczy porównania między zachorowaniami raportowanymi przez NIZP-PZH - ktorych liczba przez cały styczeń rosła - a trendami Google, które - uwaga! - przez pierwszą połowę stycznia miały tendencję malejącą, potem rosły aż do 28 stycznia, by potem na nowo zacząć maleć. Czy więc Google sugeruje, że pik jest już w zasadzie za nami? Byłoby miło (i całkowicie niezgodnie z prognozami naszego modelu).

10 lutego 2020

Nasz model przewidywał ostatnio, że maksimum wypadnie w trzecim tygodniu lutego. Jednak dane z samego końca stycznia wyraźnie pokazywały bardzo szybki wzrost liczby zachorowań. Gdyby to ostatnie tempo miało się utrzymać, "szansa" na osiągnięcie aż 400 tysięcy zachorowań jeszcze przed tym terminem stawałaby się realna...

Pierwszy tydzień lutego przyniósł jednak - zgodnie z tym, co przepowiadały trendy Google - uspokojenie sytuacji i lekki spadek liczby nowych zachorowań. To daje nadzieję na to, że faktycznie maksimum mamy już za sobą i tegoroczna grypa będzie miała łagodniejszy przebieg od poprzedniej.

Prognoza z 10 lutego
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty). Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Przy okazji warto zauważyć, jak dobrym indykatorem okazały się trendy Google. (Czy to naprawdę Was zaskoczyło?) O malejącym zainteresowaniu hasłem grypa wiedzieliśmy już od 1 lutego. Dane z NIZP-PZH, które ze swojej natury przychodzą z pewnym opóźnieniem (tydzień zbierania, a potem kilka dni na publikację), w zasadzie tylko ilościowo potwierdzają jakościowe wskazania z Google Trends.

A więc - jeśli jest prawdą, że maksimum minęło - to teraz nasz model myli się znacznie, przewidując dalszy wzrost do 220 tysięcy!

24 lutego 2020

Niespodziewanie grypa wróciła!

Prognoza z 24 lutego
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty). Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Co prawda liczba zachorowań nie jest jakaś oszałamiająca, ale wyraźnie przekroczyła wszystkie tegoroczne wartości. Mamy więc nowe maksimum na poziomie 212 tysięcy, a prognoza modelu wraca praktycznie do stanu z początku naszych obserwacji... Zabawne...

11 marca 2020

Trudno myśleć o grypie, gdy cały świat wstrzymuje oddech w obliczu pandemii koronawirusa... Od 11 marca nie odbywają się zajęcia kontaktowe na UW, od 15 marca zamknięte są szkoły w całej Polsce. Rząd zachęca ludzi do ograniczenia kontaktów, a tym samym do spowolnienia transmisji wirusa. Internet, radio i TV na okrągło trąbią o konieczności mycia rąk, a w miejscach, gdzie w sklepie był regał z mydłem, świecą puste półki.

Z punktu widzenia dalszego powodzenia wirusa grypy, wszystko to są bardzo złe wieści. Mycie rąk i ograniczenie kontaktów wpłynie na zwiększenie trudności przenoszenia się każdego wirusa: zarówno grypy, jak i SARS-CoV-2. Mało tego, zamknięcie żłobków, przedszkoli i szkół to dla grypy brzmi jak ostateczna katastrofa, gdyż grypą najlepiej zarażają się (a przy okazji - zarażają się nawzajem) właśnie dzieci w wieku do lat czterech (a w grupie wiekowej 5-14 lat zapadalność jest niewiele niższa).

Zatem w najbliższych tygodniach spodziewałbym się drastycznego zdławienia grypy - tym razem wbrew Google Trends:

Google Trends z 14 marca
14 marca Google Trends przewidywał ostry wzrost zapytań o Grypę w nadchodzących dniach.

Wyjaśnijmy sobie przy tym, że nie znaczy to, że Google Trends błędnie odczytuje trend, gdyż ten serwis bada liczbę wyszukiwań hasła grypa, a nie - liczbę chorych na grypę. W zwykłych warunkach jedno i drugie jest dobrze skorelowane (por. wykres na początku strony) i dlatego może być sensownym prognostykiem liczby chorych. (Kiedy wyszukiwałabyś hasła grypa? - Gdy czujesz się niewyraźnie i być może tę grypę właśnie już masz...)

Jednak w obecnej sytuacji, gdy każdy kaszel i kichnięcie budzi dreszcz przerażenia, ludzie chcą sprawdzić, czym różnią się objawy COVID-19 od zwykłej grypy. Więc wstukują do wyszukiwarki zarówno hasło koronawirus lub podobne - to ścisła czołówka wyszukiwań - a ci bardziej dociekliwi uzupełniają swą wiedzę także na temat grypy. Stąd wyszukiwań może być coraz więcej, ale chorych (na co liczę) - coraz mniej.

Tymczasem przyjrzyjmy się prognozom z naszego modelu - zabawki. Ostatnie dane z NIZP-PZH dotyczą okresu 1-7 marca:

Prognoza z 10 marcaPrognoza z 10 marca - z wagami
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty). Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych. Po lewej - wynik działania standardowego dopasowania modelu do danych z NIZP-PZH. Po prawej - dopasowanie jest wizualnie lepsze, gdy pominięto czwarty punkt danych.

Niebieska krzywa - oparta wyłącznie na raportach NIZP-PZH - zdaje się faktycznie wypłaszczać i lekko zaczyna maleć. Już widać, że tegoroczna grypa była specyficzna: maksimum zachorowań wystąpiło (jak się dziś wydaje) dwa tygodnie później, niż zwykle. (Oglądając wykresy z lat wcześniejszych zaczynam mieć wrażenie, że w każdym roku grypa jest na jakiś sposób specyficzna.)

Mając coraz więcej danych zauważamy, że czwarty punkt pomiarowy wygląda mocno nietypowo. Gdyby go pominąć - lub nadać mniejszą wagę niż pozostałym - dostajemy wykres o wiele lepiej pasujący do pozostałych punktów pomiarowych. Takie zadanie optymalizacyjne - minimalizacji błędu średniokwadratowego z wagami - pozwala nam lepiej dopasować parametry modelu w przypadku, gdy kilka pomiarów jest obarczonych większym błędem niż pozostałe. Nie należy wszakże przesadzać z tym dopasowywaniem, gdyż dane z raportów ze swojej natury są obarczone błędem natury losowej: nie wszystkie zachowania są zgłaszane, nie wszystkie rozpoznania są poprawne, czasem pacjenci nie zgłaszają się do lekarza mimo objawów, itp. Dopasowując na siłę krzywą tak, by idealnie przechodziła przez wybrane punkty, możemy w rzeczywistości pogorszyć zgodność parametrów modelu z odpowiadającą mu rzeczywistością.

Warto też zwrócić uwagę na to, jak w sumie trafne było przewidywanie ewolucji grypy oparte dla modelu, którego parametry zostały wyznaczone jako średnie z lat ubiegłych, a punkt początkowy ustaliliśmy na liczbę zachorowań w pierwszym tygodniu stycznia! To oczywiście w dużej mierze szczęśliwy zbieg okoliczności - ale warty odnotowania...

Jak by nie patrzeć, wszystkie wykresy produkowane przez model twierdzą zgodnie: tegoroczna grypa weszła w fazę schyłkową. Wkrótce zobaczymy, jak zareaguje na nadzwyczajne środki spowodowane COVID-19.

Życzę Czytelnikom zdrowia i jak najmniejszej ekspozycji na wstrętne wirusy. Cieszmy się na myśl o nadchodzącej drastycznej redukcji zachorowań: przynajmniej na grypę.

23 marca 2020

Proszę Państwa, jesteśmy (aktywnymi) świadkami niebywałego eksperymentu! Przyjrzyjmy się poniższemu wykresowi:

Prognoza z 23 marca (bez ostatnich dwóch pomiarów)
Czerwona linia - to przewidywania modelu na podstawie danych (niebieskie punkty) - ale z pominięciem dwóch ostatnich raportów. Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Myślę, że już przyzwyczailiśmy się do myśli, że używany przez nas model całkiem nieźle przewidywał rozwój grypy. Nie pomylił się zanadto ani w sprawie terminu, ani wysokości maksimum (no dobrze, trochę się pomylił - ale przecież to tylko prymitywna zabawka dla dzieci!)

Teraz musimy niestety zająć się detalami powyższego obrazka: czym dokładnie są daty zaznaczane na osi poziomej? Kiedy szykowałem kod generujący te obrazki myślałem, że nie będzie to miało większego znaczenia, ale tym razem jest to kluczowe, zatem wyjaśnijmy:

Ostatni niebieski punkt - punkt danych z raportów NIZP-PZH - został przypisany dacie 16 marca. To trochę mylące, gdyż w rzeczywistości jego wartość pochodzi z raportu dotyczącego tygodnia od 16 do 22 marca. Analogicznie, poprzednia niebieska kropka - dla 8 marca - naprawdę odpowiada zachorowaniom pomiędzy 8 a 15 marca.

Jak pamiętamy, już 4 marca stwierdzono pierwszy przypadek koronawirusa w Polsce, 10 marca Rektor ogłosił zawieszenie zajęć na UW, a w środę 11 marca rząd zdecydował o zamknięciu szkół od poniedziałku, zachęcając, by dzieci natychmiast przestały chodzić do szkoły.

Na powyższym obrazku widać niesamowitą skuteczność podjętych kroków w ograniczaniu rozprzestrzeniania się grypy! Niebieska krzywa - dane z raportów - załamuje się właśnie w tygodniu po 8 marca. Czerwona krzywa modelu odpowiada mniej więcej standardowemu przebiegowi sezonu grypowego i przewidywała, że w tygodniu po 16 marca powinno jeszcze być 150 tysięcy zachorowań. Tymczasem w rzeczywistości zachorowań było około 30% mniej! Efekt jest tak silny, bo to właśnie dzieci i młodzież chorują najwięcej w populacji.

Po uwzględnieniu wszystkich dostępnych danych, standardowa prognoza wygląda tak, jak przebiega czerwona krzywa:

Prognoza z 23 marca (na podstawie wszystkich pomiarów)
Czerwona linia - to przewidywania modelu na wszystkich dostępnych danych (niebieskie punkty). Zielona - to wynik, gdy dopasowanie jego parametrów ograniczyliśmy wyłącznie do ostatnich trzech punktów pomiarowych. (Oczywiście, tego wariantu nie da się ekstrapolować w przeszłość!) Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Na pewno mocno przeszacowuje przyszłe zachorowania, gdyż tkwi wciąż jeszcze zbyt mocno w starej ("normalnej") rzeczywistości! Gdyby zaś po raz kolejny nagiąć zakres stosowalności modelu - i zastosować go wyłącznie do ostatnich trzech raportów, dostalibyśmy prognozę zachorowań zaznaczoną na wykresie na zielono. Przewiduje ona następny tydzień na poziomie około 44 tysięcy, a w kolejnym - nieco poniżej 30 tysięcy.

Pozostaje poczekać - i sprawdzić. A tymczasem, trzymajmy się z dala od wszystkich wirusów!

27 kwietnia 2020

Czas kończyć nasze spotkania z grypą, bo i sama grypa definitywnie(?) się skończyła... wystarczy popatrzyć na dane: (niebieska linia)

Prognoza z 27 kwietnia
Czerwona linia - to (w obecnej sytuacji bezwartościowr) przewidywania modelu na wszystkich dostępnych danych (niebieskie punkty). Zielona - to wynik, gdy dopasowanie jego parametrów ograniczyliśmy wyłącznie do punktów pomiarowych z okresu społecznej izolacji. (Oczywiście, tego wariantu nie da się ekstrapolować w przeszłość!) Dla porównania - w kolorze fuksji - wynik otrzymany dla parametrów modelu będących średnią z danych historycznych.

Zamykamy mocnym akcentem, czyli idealnym dopasowaniem zielonej linii do najnowszych danych. Na podstawie wyznaczonego parametru modelu możemy ilościowo oszacować skuteczność wprowadzonych ograniczeń (m.in. zamknięcie szkół, ograniczenie kontaktów, pracy sklepów, korzystania z komunikacji) na współczynnik modelu, a - przy pewnej dozie dobrej woli - nawet różnicować wpływ nowych reguł na wartość parametru.

Wszystkich wytrwałych Czytelników zapraszam na podsumowanie naszej zabawy w czerwcowym numerze Delty.