Wie gut sind Wettervorhersagen eigentlich?

Ein Thema, das mich schon lange umgetrieben hat ist, wie präzise mittlerweile eigentlich die Vorhersagen von Wetterdiensten sind. Liegen die Prognosen regelmäßig 10 Grad daneben oder funktionieren die Modelle mittlerweile ganz gut? Um das herauszufinden, habe ich im Mai 2021 angefangen, systematisch Vorhersagedaten eines Online-Wetterdienstes zu speichern und zu visualisieren. Zeit also für eine Auswertung!

Schritt 1: Eine geeignete Quelle finden

Leider ist es gar nicht so leicht, überhaupt an verfügbare Wetterdaten zu kommen. Der DWD wäre natürlich super, allerdings stellt der natürlich keine öffentliche API bereit. Regelmäßig die Website zu crawlen war mir zu aufwendig. Bisher hatte ich ansonsten Weather Underground genutzt, die hatten jedoch kurz vorher den kostenlosen API-Service eingestellt (mittlerweile gibt es die aber wieder!). Daher entschied ich mich für OpenWeather, einen Wetterdienst aus UK, der eine kostenlose API zur Verfügung stellt, die immerhin Daten für die nächsten 5 Tage im 3-Stunden-Raster liefert.

Schritt 2: Daten abrufen und speichern

Die nächste Frage war die der Speicherung: Speichere ich jeden Abruf der Daten mit dem Zeitstempel der Erhebung ab, sodass ich für Abfragezeitpunkt X einen Wert für X+3h, X+6h usw. habe oder ordne ich die abgerufenen Werte gleich dem Zeitpunkt zu, für den die Prognose bestimmt war? Ersteres wäre einfacher zu speichern, zweiteres einfacher auszuwerten. Praktischerweise ermöglicht InfluxDB als Zeitreihendatenbank die Möglichkeit, recht unkompliziert einen Wert zu einem Zeitpunkt zu speichern, auch wenn der Zeitpunkt bereits in der Datenbank existiert. Unter MariaDB hingegen hätte der erste Vorhersagepunkt eine Zeile anlegen müssen, die dann von allen weiteren Vorhersagen lediglich aktualisiert wird. (Alternative wäre sonst noch ein Schema mit Primärschlüssel aus Zeitpunkt und Vorhersagezeit gewesen, aber das hätte Berechnungen unnötig kompliziert gemacht).

Zuletzt hatte ich InfluxDB irgendwann auf MariaDB migriert, dort gibt es jetzt ein wunderschönes Schema aus 410 Spalten:

Ausschnitt des Datenbankschemas

Zum Befüllen der DB entschied ich mich für einen kleinen Flow in Node Red:

Soweit, so gut – Daten fließen. Mittlerweile sind es in MariaDB knapp 117.000 Einträge und damit knapp 50 Millionen Datenpunkte geworden.

Schritt 3: Erste Visualisierungen

Neugierig wie Nachbars Lumpi war der nächste Schritt, die Daten erstmalig einem Grafana-Dashboard zuzuführen. Hier zahlte es sich aus, die Zugehörigkeit der Datenpunkte gleich dem Zeitpunkt zuzuordnen, für den die jeweilige Prognose gedacht war. Ansonsten hätte jede Zeitreihe um jeweils eine bestimmte Zeit verschoben werden müssen.

aktuelle Wettervorhersage ab 19.01.2024

Et voila – erste Erkenntnis: so absurd sieht das gar nicht aus! Um die Zeitreihen voneinander unterscheiden zu können, habe ich sie umso dunkler eingefärbt, je weiter sie in der Zukunft liegen. Im Screenshot ist die aktuelle Zeit mittig zu sehen, sodass die Prognosen nach rechts immer weiter auslaufen, bis zuletzt nur die dunkelste Linie 120 Stunden in die Zukunft reicht. Die tatsächliche Temperatur (allerdings auch nur vom Wetterdienst ermittelt) ist grün eingefärbt.

In Summe lassen sich so die Jahreszeiten seit Beginn der Erhebung auch ganz gut erkennen:

Übersicht über alle Vorhersagen seit Mai 2021

Schön, aber wie präzise ist es denn nun?? Ergebnis: Wechselhaft, aber erstaunlich präzise!

ziemlich Präzise Vorhersagen für Ende November 2024

Natürlich sind immer wieder mal Schwankungen erkennbar – im großen und ganzen sind die Abweichungen aber meistens in der ersten Nachkommastelle. Was aber sehr von der aktuellen Wetterlage abhängt. Andere Zeiten sehen dann doch ganz anders aus:

Vorhersagen für Ende Dezember 2024 mit größeren Abweichungen

Um die Frage nach der Güte bewerten zu können, braucht es also eine weitere Analyse!

Schritt 4: Auswertung

Für eine genauere Auswertung habe ich die Daten von 2024 genommen und als Matrix dargestellt: Auf der Y-Achse ist die Zeit im 3h-Rhythmus zu sehen, in der 1. Spalte der jeweilige Ist-Wert. Nach rechts dann fortlaufend die Prognose bis zur +120h-Prognose in der letzten Spalte (andersherum wäre vllt. intuitiver gewesen, naja…)

Vorhersagen für die erste Januarhälfte 2024

Neue Datensätze wandern in dieser Darstellung als Diagonale ins System. Der Datensatz für den 04.01.2024 0:00 Uhr bringt den Ist-Wert für 0:00 Uhr in der 1. Spalte mit sowie in der 2. Spalte den Vorhersagewert für 3 Uhr, in der 3. Spalte den Vorhersagewert für 6 Uhr, in der 4. Spalte die Vorhersage für 9 Uhr usw. Das führt dazu, dass Wechsel des Vorhersagemodells beim Wetterdienst als gut erkennbare Diagonale sichtbar werden. So wie im dargestellten Ausschnitt am 02.01.2024 9:00 Uhr, wo fast alle Prognosewerte in die Zukunft um fast 5 Grad herabgestuft wurden, was an der klaren Kante zwischen Hell- und Dunkelblau erkennbar ist.

Neben der reinen Darstellung der absoluten Werte lässt sich damit auch das Delta zwischen Vorhersage und Ist-Wert visualisieren, um Abweichungen besser erkennen zu können:

Januar 2024: Abweichungen der Vorhersagen

Die eben erwähnte Änderung der Vorhersage taucht hier als rötlicher Bereich auf, da er gegenüber dem tatsächlichen Ist-Wert deutlich überhöht war.

Neben der direkt erkennbaren deutlichen Korrektur der Wetterdaten sind nun ein paar spannende Muster erkennbar, eine völlige Verschätzung bis zum letzten Wert z.B.:

eine völlig vermurkste Vorhersage… 😉

Regelmäßig lassen sich auch „Wellenmuster“ erkennen:

ein häufiges Muster: nachts passend, tagsüber deutlich zu kalt

Was bedeutet das? Die Prognosen der Nächte war hier Mitte Mai offenbar größtenteils präzise während die Vorhersagen tagsüber deutlich zu gering ausgefallen sind. Hier hatte es tagsüber regelmäßig bereits 24°C während die Prognosen – offenbar über mehrere Tage – jeweils bis 12h vorher noch von 17-18°C ausgingen.

Im gleichen Screenshot ebenfalls erkennbar ist, dass ab +9h offenbar ein anderes Prognosemodell genutzt wird, wodurch in den Spalten 2 bis 4 jeweils deutlich andere Farbschattierungen auftreten. Aber noch mehr: Durchgehend durch das gesamte Jahr scheinen die Prognosen +6h und +9h jeweils „nach unten verschmiert“ zu sein. Heißt: Der Prognosewert von +9h würde eigentlich besser zu +6h passen und der von +6h besser zu +3h. Warum es dazu kommt, lässt sich nur mutmaßen…

Auffällig ist, dass die Vorhersagen für +3h und +6h zeitlich verschoben („verschmiert“) zu sein scheinen

Betrachtet man die Varianz der Vorhersagen über das ganze Jahr, bestätigt sich diese Anomalie:

Varianz der Vorhersageläufe

Je dichter die Prognose rückt, desto geringer wird die Varianz – mit Ausnahme der Prognosen für +6h und +9h, in denen die Genauigkeit gegenüber +12h sogar wieder sinkt!

Mit Blick auf das ganze Jahr wäre auch noch interessant, wie groß die Abweichungen im Schnitt sind:

Häufigkeit der Prognosegenauigkeiten (von -8°C bis +8°C Abweichung)

Gauß wäre begeistert (aber wenig überrascht): Die Präzision aller Vorhersagewerte bildet eine klassische Normalverteilung: Die mit Abstand meisten Werte sind entweder sehr präzise oder liegen bis ein Grad unter der Realität. Abweichungen über -2°C bzw. +1°C werden hingegen recht selten.

Schritt 5: Zusammenfassung und Ausblick

Zusammenfassend lässt sich sagen:

  • Die Prognosedaten von OpenWeatherMap sind erstaunlich gut – für einen kostenlosen Online-Wetterdienst enorm brauchbar und in den meisten Fällen sehr präzise!
  • Wenn Vorhersagen abweichen, dann meistens durchgehend in eine Richtung. Dass eine Vorhersage erst zu niedrig und dann zu hoch ist (oder andersherum) kommt quasi nicht vor.
  • In bestimmten Wetterlagen ist die Prognose über Tage hinweg ähnlich zu hoch/zu niedrig.
  • OpenWeatherMap scheint für bestimmte Horizonte unterschiedliche Modelle zu nutzen – die zu deutlich anderen Ergebnissen kommen, wodurch die Vorhersagen für +6h und +9h durchschnittlich deutlich schlechter sind als die früheren Prognosen.

So viel für dieses Mal – neben der Temperatur habe ich auch Bewölkung, Luftfeuchtigkeit, Luftdruck, Niederschlag, Windrichtung und Windgeschwindigkeit mit erhoben, die nun natürlich auch auf ihre Auswertung warten – stay tuned!

Möchtest du einen tieferen Blick in die Daten werfen? Hier findest du die Rohdaten dazu. Und falls du die anderen 50 Mio. Datenpunkte auswerten möchtest, freue ich mich jederzeit über Post von dir! 🙂


One Comments

  • Ferdi

    19. Januar 2025

    Wow, da steckt viel Arbeit drin! Sehr interessant, und super Plots 📊.

    Reply

Schreibe einen Kommentar