Ing. Karel Klouda, Ph.D.
vedoucí katedry doc. RNDr. Ing. Marcel Jiřina, Ph.D.
děkan
ZADÁNÍ BAKALÁŘSKÉ PRÁCE
Název: Analýza veřejných systémů pro předpovědi počasí
Student: Radka Bodnárová
Vedoucí: Ing. Tomáš Kalvoda, Ph.D.
Studijní program: Informatika Studijní obor: Znalostní inženýrství
Katedra: Katedra aplikované matematiky Platnost zadání: Do konce zimního semestru 2020/21
Pokyny pro vypracování
Prozkoumejte míru úspěšnosti různých veřejně dostupných předpovědí počasí.
* Proveďte rešerši on-line služeb poskytující strojově zpracovatelná data o počasí. Pod daty zde máme na mysli například údaje o aktuální teplotě, tlaku, oblačnosti či srážkách v daném místě.
* Zjistěte, zda-li a v jaké formě tyto služby poskytují statistické údaje o úspěšnosti svých předpovědí.
Proveďte rešerši existujících analýz úspěšnosti předpovědí počasí.
* Vytvořte systém umožňující pravidelně získávat data o aktuálním počasí a data o předpovědích počasí ve vybraných místech z vybraných zdrojů. Dbejte na snadnou rozšiřitelnost o další zdroje dat a na následnou snadnou zpracovatelnost dat.
* Nasbíraná data analyzujte, zejména porovnejte skutečné zaznamenané počasí s dřívějšími předpověďmi.
Graficky přehledně reprezentujte spolehlivost různých zdrojů dat v závislosti na délce předpovědi, místě a různých ukazatelích počasí.
Seznam odborné literatury
Dodá vedoucí práce.
Bakalárska práca
Analýza veřejných systémů pro předpovědi počasí
Radka Bodnárová
Katedra aplikovanej matematiky
Vedúci práce: Ing. Kalvoda Tomáš Ph.D.
Poďakovanie
V prvom rade by som sa chcela poďakovať vedúcemu tejto práce Ing. Tomášovi Kalvodovi, Ph.D. za nápad na zaujímavú tému, za cenné rady, odborné vedenie a pomoc pri realizácií tejto práce. Ďalej sa chcem poďakovať môjmu priateľovi za zaujímavé pripomienky a oporu pri písaní práce. Veľká vďaka patrí taktiež
Prehlásenie
Prehlasujem, že som predloženú prácu vypracoval(a) samostatne a že som uviedol(uviedla) všetky informačné zdroje v súlade s Metodickým pokynom o etickej príprave vysokoškolských záverečných prác.
Beriem na vedomie, že sa na moju prácu vzťahujú práva a povinnosti vyplývajúce zo zákona č. 121/2000 Sb., autorského zákona, v znení neskorších predpisov, a skutočnosť, že České vysoké učení technické v Praze má právo na uzavrenie licenčnej zmluvy o použití tejto práce ako školského diela podľa
§ 60 odst. 1 autorského zákona.
České vysoké učení technické v Praze Fakulta informačních technologií
© 2020 Radka Bodnárová. Všetky práva vyhradené.
Táto práca vznikla ako školské dielo na FIT ČVUT v Prahe. Práca je chránená medzinárodnými predpismi a zmluvami o autorskom práve a právach súvisia- cich s autorským právom. Na jej využitie, s výnimkou bezplatných zákonných licencií, je nutný súhlas autora.
Odkaz na túto prácu
Bodnárová, Radka.Analýza veřejných systémů pro předpovědi počasí. Bakalár- ska práca. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2020.
Abstrakt
Táto bakalárska práca sa zaoberá analyzovaním úspešnosti služieb pre pred- povede počasia. Preskúmane sú on-line služby verejne poskytujúce strojovo spracovateľné dáta o predpovediach. Navrhnutý a implementovaný je systém pre automatický zber dát z vybraných služieb. Nad nazbieranými dátami je vykonaná analýza predpovedí a graficky je zobrazená presnosť služieb v zá- vislosti na čase, lokalite a rôznych ukazateľoch počasia.
Kľúčové slová predpoveď počasia, dátová analýza, presnosť predpovedí po- časia, metriky verifikácie predpovedí, Python, Java
Abstract
This bachelor thesis deals with the analysis of accuracy of weather forecast services. On-line services which publicly provide machine-processable data are reviewed. The application for automatic data collection from selected services is designed and implemented. An analysis of collected data is done and accu- racy of services is graphically visualized based on time, location and various weather elements.
Keywords weather forecast, data analysis, weather forecast accuracy, fore- cast verification metrics, Python, Java
viii
Obsah
Úvod 1
Cieľ práce . . . 1
1 Prieskum existujúcich riešení a služieb 3 1.1 Služby poskytujúce dáta o počasí . . . 3
1.2 Existujúce riešenia analýzy úspešnosti predpovedí počasia . . . 5
2 Návrh 7 2.1 Vybrané služby . . . 7
2.2 Štruktúra systému . . . 10
2.3 Schéma databázy . . . 12
3 Realizácia 15 3.1 Zvolené technológie . . . 15
3.2 Spúšťanie systému a beh v cloude . . . 16
3.3 Zálohovanie databázy . . . 17
3.4 Rozšíriteľnosť . . . 17
4 Analýza dát 19 4.1 Metriky presnosti predpovedí . . . 19
4.2 Popis dát . . . 20
4.3 Čítanie dát z databázy . . . 23
4.4 Teplota . . . 23
4.5 Zrážky . . . 27
4.6 Tlak vzduchu . . . 33
4.7 Rýchlosť vetra . . . 34
4.8 Smer vetra . . . 35
Záver 37
Bibliografia 39
A Zoznam použitých skratiek 41
B Obsah priloženého CD 43
x
Zoznam obrázkov
1.1 Výstup z aplikácie Forecast Advisor . . . 6
2.1 Architektúra forecast-server. . . 11
2.2 Schéma databázy . . . 12
4.1 Mapa s vyznačením vybraných lokalít . . . 21
4.2 Graf rozptýlenia absolútnej chyby teploty pre predpovede v 6- hodinových intervaloch zo služby YR . . . 24
4.3 VývojRM SE,M ADpre predpovede teploty podľa času pred pred- poveďou . . . 25
4.4 RM SE pre predpovede teploty podľa intervalu dňa . . . 26
4.5 Dark Sky - početnosť jednotlivých kategórii zrážok v závislosti na čase predpovedi . . . 30
4.6 YR - početnosť jednotlivých kategórii zrážok v závislosti na čase predpovedi . . . 31
4.7 Porovnanie výsledkov metrík úspešnosti predpovedí zrážok pre obi- dve služby . . . 32
4.8 VývojRM SE pre predpovede tlaku vzduchu . . . 33
4.9 VývojRM SE pre predpovede rýchlosti vetra v hodinových inter- valoch od služby Dark Sky . . . 34
4.10 Vývoj RM SE pre predpovede rýchlosti vetra v 6-hodinových in- tervaloch od služby YR . . . 35
4.11 Vývoj RM SE, M AD pre predpovede smeru vetra v hodinových intervaloch . . . 36
Zoznam tabuliek
2.1 Popis databázových stĺpcov, dátové typy pozri obrázok 2.2 . . . . 13 4.1 Rozdelenie hodnôt predpovedí zrážok v mm za hodinu . . . 27 4.2 Kontingenčná tabuľka zrážok . . . 27
Úvod
Predpoveď počasia hraje veľkú úlohu v našich každodenných plánovacích čin- nostiach a pre ľudstvo je dôležitá už od dávnej minulosti. Či už chceme vedieť ako sa na ďalší deň obliecť, či si vziať so sebou dáždník alebo čo si napláno- vať na víkend. Predpoveď ale neslúži len širokej verejnosti, ale je nevyhnutná taktiež v mnohých odvetviach verejnej a privátnej sféry. Letecká doprava, pravdepodobne viac ako ktorýkoľvek iný druh dopravy, je výrazne ovplyv- nená počasím. Poľnohospodári zas potrebujú poznať predpoveď, aby mohli správne naplánovať siatie a zber úrody, pripraviť sa na mráz alebo výkyvy teplôt a tak maximalizovať produkciu.
Aj keď sa úspešnosť predpovedí štatisticky zvyšuje, musíme si uvedomiť, že vždy bude obsahovať určtú mieru neistoty. Čím bližšia je predpoveď počasia v čase, tým presnejšia by mala byť. Dlhodobé predpovede tak majú samozrejme väčšiu chybovosť, pretože existuje viac neznámych premenných.
Info o predpovedi sa k nám denne dostáva zo všetkých strán. Noviny, rádio, TV, no najčastejšie sa k nej dnes dostávame na internete. Ale ako si vybrať z toľkého množstva zdrojov ten najspoľahlivejší? V tejto práci sa budem zaoberať úspešnosťou predpovedí počasia od niekoľkých vybraných služieb.
Cieľ práce
Prvým cieľom je urobiť rešerš existujúcich on-line služieb poskytujúcich stro- jovo spracovateľné dáta o počasí. Následne je treba zistiť, či tieto služby po- skytujú štatistické údaje o úspešnosti svojich predpovedí. Praktickú časť práce má tvoriť systém, ktorý umožňuje pravidelne zbierať dáta o aktuálnom po- časí a o predpovediach pre určité miesta z vybraných zdrojov. Systém musí byť navrhnutý tak, aby bol jednoducho rozšíriteľný o nový zdroj dát a aby nazbierané dáta bolo možné ďalej ľahko spracovávať. Ďalším cieľom je nazbie- rané dáta analyzovať a graficky prehľadne reprezentovať spoľahlivosť zdrojov v závislosti na dĺžke predpovedi, mieste a rôznych ukazateľoch počasia.
Kapitola 1
Prieskum existujúcich riešení a služieb
1.1 Služby poskytujúce dáta o počasí
Na internete je možné nájsť mnoho služieb verejne poskytujúcich dáta o po- časí. Niektoré sú úplne zdarma, pri iných sa platí v závislosti na využívaní služby. Ja som sa pozrela hlavne na služby, z ktorých je možné získať strojovo spracovateľné dáta o počasí zdarma, prípadne poskytujú určitý počet stiahnutí zdarma.
1.1.1 YR
YR je spoločná služba Norwegian Meteorological Institute a Norwegian Bro- adcasting Corporation. Je pomerne známa a využívaná. Podľa YR1 sa služba od svojho založenia v roku 2007 dostala veľmi rýchlo do povedomia ľudí. Pries- kum z júna 2008 ukázal, že už vtedy službu poznalo 87% nórskej populácie a dnes ju využíva až 9 miliónov ľudí týždenne. Ako jedna z mála služieb v Európe ponúka mnoho informácií o počasí úplne zdarma. Ponúka predpoveď počasia v angličtine pre takmer 1 milión miest v Nórsku a 10 miliónov miest po celom svete. Z tejto služby je možné získať dva typy predpovedí:
• predpoveď na 10 dní v 6 hodinových intervaloch,
• predpoveď na 48 hodín v hodinových intervaloch.
Počet stiahnutí nie je limitovaný, služba ale odporúča nesťahovať veľké množ- stvá dát naraz, ale sťahovať ich podľa potreby s aspoň 60 minútovou pauzou.
Služba poskytuje svoje dáta pomocou rozhrania REST. K dátam je tak možné pristúpiť odoslaním požiadavky HTTP GET a výsledok je vrátený vo forme XML.
1https://hjelp.yr.no/hc/en-us/articles/206550539-Facts-about-Yr
1. Prieskum existujúcich riešení a služieb
1.1.2 Dark Sky
Softvérový startup Dark Sky Company2 sa špecializuje na predpoveda- nie a vizualizáciu dát o počasí. Do povedomia ľudí sa dostali hlavne svojou aplikáciou, ktorá bola medzi uživateľmi iPhonu hodnotená ako jedna z naj- lepších aplikácii na počasie pre svoje
”desivo presné predpovede“. Dark Sky zhromažďuje dáta od viacerých poskytovateľov. To znamená, že na rozdiel od spoliehania sa na jeden zdroj informácií o predpovediach, tak kombinuje viacero zdrojov za účelom dosiahnutia čo najpresnejších výsledkov. Podľa jed- ného zo zakladateľov Adama Grossmana, je Dark Sky iný v tom, že využíva numerický a štatistický prístup, radšej než meteorologický.
”Viete, je to tak:
zatiaľ čo počasie sa stáva chaotickým a nepredvídateľným vo veľkých časových intervaloch (hodiny až dni), jeho správanie sa stáva čoraz lineárnejšie v men- ších a menších časových intervaloch.“[2] (preklad autorky)
Dark Sky poskytuje tieto služby:
• aktuálne počasie,
• predpoveď v minútových intervaloch na nasledujúcu hodinu,
• hodinovú predpoveď na nasledujúcich 48 hodín,
• dennú predpoveď na 7 dní,
• reálne namerané hodnoty počasia v minulosti.
Všetky tieto dáta sú prístupné zdarma, avšak je obmedzený počet stiahnutí.
Prvých 1000 stiahnutí denne je zdarma, každé ďalšie nad limit potom stojí
$0.0001. Dark Sky poskytuje dáta cez rozhranie REST. Stiahnutie sa realizuje formou požiadavky HTTP GET a výsledok je vrátený vo formáte JSON.
1.1.3 OpenWeatherMap
OpenWeatherMap3 je malá IT spoločnosť, ktorej cieľom je poskytovať jed- noduché a rýchle rozhranie pre prácu s rozsiahlou databázou údajov o počasí.
Ideológia je inšpirovaná OpenStreetMap a Wikipédiou, ktoré poskytujú infor- mácie zdarma a sú dostupné pre všetkých. Jeden z ich hlavných produktov - grafické mapy počasia a predpovedí využívajú služby OpenStreetMap. Open- WeatherMap poskytuje zdarma tieto služby:
• aktuálne počasie,
• predpoveď v 3 hodinových intervaloch na 5 dní,
• mapy zobrazujúce aktuálny stav počasia.
2https://darksky.net
3https://openweathermap.org
4
1.2. Existujúce riešenia analýzy úspešnosti predpovedí počasia Obmedzenie je maximálne 60 stiahnutí za hodinu. Zdrojom dát tejto služby sú hlavne NOAA (Narodný úrad pre oceán a atmosféru) a Canadian Envi- ronment, doplnené o nespracované dáta z meteorologických staníc. Dáta z OpenWeatherMap sú opäť vystavené pomocou rozhrania REST a získať sa dajú odoslaním požiadavky HTTP GET, pričom je možné špecifikovať, či má byť výstup vo formáte XML alebo JSON.
1.1.4 Weatherbit
Weatherbit4 je služba, ktorá kombinuje dáta z viac ako 20 rôznych zdrojov.
Od údajov z meteorologických staníc, cez údaje z viacerých modelov až po údaje z atmosférickej analýzy. Pri maximálne 500 stiahnutiach denne je možné zdarma získať tieto dáta:
• aktuálne počasie,
• dennú predpoveď na nasledujúcich 16 dní.
Dáta poskytuje cez rozhranie REST vo formáte JSON.
1.2 Existujúce riešenia analýzy úspešnosti predpovedí počasia
Ani jedna z vyššie spomínaných služieb na svojich stránkach neposkytuje šta- tistické údaje o presnosti svojich predpovedí. Našla som jedinú službu, ktorá v reálnom čase ukazuje presnosť služieb predpovedajúcich počasie a tou je Forecast Advisor.
1.2.1 Forecast Advisor
ForecastWatch je firma zaoberajúca sa monitorovaním a analyzovaním pred- povedí počasia. Zhromažďuje údaje o predpovedi počasia z množstva lokalít po celom svete, hlavne z USA. Ich databáza obsahuje viac ako 800 miliónov predpovedí z rôznych zdrojov. Tieto rozsiahle dáta potom používajú na vyhod- notenie a porovnanie poskytovateľov predpovedí, na zlepšenie rozhodovania vlády a podnikateľských subjektov ovplyvnených počasím a na zdokonalenie samotných predpovedí od meteorológov z celého sveta a poskytuje tak svojím zákazníkom objektívny report.
Forecast Advisor5 je produkt spoločnosti ForecastWatch určený širokej verejnosti. Je to webová aplikácia, na ktorej je možné okrem predpovedi po- časia na 5 dní zistiť taktiež úspešnosť niekoľkých služieb predpovedajúcich počasie. Medzi nimi je aj spomínaná služba Dark Sky. Obmedzené je to však
4https://www.weatherbit.io
5https://www.forecastadvisor.com
1. Prieskum existujúcich riešení a služieb
len na lokality v USA. Obrázok 1.1 zobrazuje premenlivosť počasia a pres- nosť služieb za posledný mesiac a rok pre lokalitu Columbus, Ohio. Celková percentuálna presnosť je podľa Forecast Advisor vypočítaná z percentuálnej presnosti pre teplotu a zrážky. Presnosť teploty predstavuje percento pred- povedí správne v rámci 3 stupňov. Presnosť zrážok tvorí percento správnych predpovedí.
Obr. 1.1: Výstup z aplikácie Forecast Advisor
6
Kapitola 2
Návrh
Praktická časť tejto práce sa skladá z 2 samostatných častí. Prvou je systém, ktorý automaticky v pravidelných intervaloch sťahuje dáta o počasí z vybra- ných zdrojov a ukladá ich do databázy a druhou je potom analýza nazbiera- ných dát. V tejto kapitole je bližšie popísaná architektúra systému a databázy pre zber dát a taktiež výber služieb.
2.1 Vybrané služby
Z preskúmaných služieb som sa rozhodla vybrať YR a Dark Sky a ukladať budem tieto dáta:
• YR
– predpoveď v 6 hodinových intervaloch – predpoveď v hodinových intervaloch
• Dark Sky
– predpoveď v hodinových intervaloch – aktuálne počasie
Službu YR som vybrala preto, že poskytuje dáta kompletne zdarma a medzi ľuďmi v mojom okolí je to asi najvyužívanejší zdroj pre predpoveď počasia.
U služby Dark Sky ma zaujalo to, že pri krátkodobých predpovediach poča- sia používajú viac štatistické než meteorologické postupy. Dark Sky poskytuje 1000 stiahnutí denne zdarma, čo bude stačiť pre získavanie predpovedí a ak- tuálneho stavu počasia. Zdrojové kódy 2.1 a 2.2 zobrazujú ako vyzerá výstup z oboch služieb.
2. Návrh
{
"latitude":48.716385,
"longitude":21.261074,
"timezone":"Europe/Bratislava",
"hourly":{
"summary":"Foggy this morning and later this morning.",
"icon":"fog",
"data":[
{
"time":1575450000,
"summary":"Foggy",
"icon":"fog",
"precipIntensity":0,
"precipProbability":0,
"temperature":-5.05,
"apparentTemperature":-9.81,
"dewPoint":-6.31,
"humidity":0.91,
"pressure":1032.1,
"windSpeed":3.24,
"windGust":3.84,
"windBearing":190,
"cloudCover":1,
"uvIndex":1,
"visibility":0 },
{
"time":1575453600,
"summary":"Foggy",
"icon":"fog",
"precipIntensity":0,
"precipProbability":0,
"temperature":-3.68,
"apparentTemperature":-8.28,
"dewPoint":-5.16,
"humidity":0.89,
"pressure":1032.1,
"windSpeed":3.38,
"windGust":4.02,
"windBearing":191,
"cloudCover":1,
"uvIndex":1,
"visibility":0 }
] } }
Zdrojový kód 2.1: Ukážka odpovede pre dopyt na predpoveď v hodinových intervaloch zo služby Dark Sky vo formáte JSON
8
2.1. Vybrané služby
<weatherdata>
<location>
<name>Prague</name>
<type>Capital</type>
<country>Czech Republic</country>
<timezone id="Europe/Prague" utcoffsetMinutes="60" />
<location altitude="202" latitude="50.08804" longitude="14.42076"
geobase="geonames" geobaseid="3067696" />
</location>
<meta>
<lastupdate>2019-12-21T21:43:00</lastupdate>
<nextupdate>2019-12-22T03:51:00</nextupdate>
</meta>
<sun rise="2019-12-21T07:58:33" set="2019-12-21T16:02:00" />
<forecast>
<tabular>
<time from="2019-12-21T23:00:00" to="2019-12-22T00:00:00">
<symbol number="2" numberEx="2" name="Fair" var="02n" />
<precipitation value="0" />
<windDirection deg="203.4" code="SSW" name="South-southwest" />
<windSpeed mps="1.5" name="Light air" />
<temperature unit="celsius" value="3" />
<pressure unit="hPa" value="993.2" />
</time>
<time from="2019-12-22T00:00:00" to="2019-12-22T01:00:00">
<symbol number="2" numberEx="2" name="Fair" var="02n" />
<precipitation value="0" />
<windDirection deg="200.5" code="SSW" name="South-southwest" />
<windSpeed mps="2.1" name="Light breeze" />
<temperature unit="celsius" value="1" />
<pressure unit="hPa" value="992.7" />
</time>
</tabular>
</forecast>
</weatherdata>
Zdrojový kód 2.2: Ukážka odpovede pre dopyt na predpoveď v hodinových intervaloch zo služby YR vo formáte XML
2. Návrh
2.2 Štruktúra systému
Základnou požiadavkou bolo aby bol systém ľahko rozšíriteľný o nový zdroj dát. Pre tento účel je systém zložený zo 4 modulov:
• forecast-connector-api– java rozhranie pre získavanie dát predpovedí
• forecast-connector-dark-sky– implementácia forecast-connector-api pre komunikáciu so službou Dark Sky
• forecast-connector-yrno – implementácia forecast-connector-api pre komunikáciu so službou YR
• forecast-server – samotná aplikácia obsahujúca logiku získavania a ukladania dát
Modul forecast-connector-api definuje jednotný format dát a prístup k ním ako je požadované v aplikácií forecast-server. Keďže každá služba odosiela odpoveď v inom formáte, je nutné špecifikovať ako komunikovať a ako spracovávať výstup. Moduly forecast-connector-dark-sky, forecast- connector-yrnopredstavujú implementácie rozhraniaforecast-connector- apipre získavanie odpovede spolu s pomocnými triedami pre jej spracovanie.
Forecast server je možné rozdeliť na 2 časti:
• Dátová vrstva
• Aplikačná vrstva
Dátová vrstva sa stará o prístup do databáze. Pozostáva z entitných tried a rozhranírepository. Entitné triedy reprezentujú tabuľky v databáze. Jed- notlivé atribúty tried sú tak namapované na stĺpce tabuliek. Tento prístup sa nazýva objektovo relačné mapovanie. Repository je rozhranie, ktoré posky- tuje sadu metód pre komunikáciu s databázou pomocou entitných tried. Pre základné operácie s databázou tak nie je nutné písať dopyty v jazyku SQL.
Výhodou je taktiež to, že pri zmene databázy nie je potreba robiť zásahy do kódu aplikácie.
Aplikačná vrstva sa skladá z tried ForecastController a ForecastSer- vice. ForecastService obsahuje metódy, ktoré tvoria aplikačnú logiku. Tieto metódy získavajú dáta od služieb pomocou vyššie spomínaných knižníc, spra- covávajú ich a komunikujú s databázou cez rozhranie repository. ForecastCon- troller má na starosti spúšťanie týchto metód v určitých časových intervaloch.
Toto rozdelenie je znázornené na obrázku 2.1.
10
2.2. Štruktúra systému
Obr. 2.1: Architektúraforecast-server
2. Návrh
2.3 Schéma databázy
Schéma databázy, ktorú je možné vidieť na obrázku 2.2 je generovaná z entit- ných tried modulu forecast-server pomocou ORM frameworku Hibernate.
Tabuľka 2.1 predstavuje popis databázových stĺpcov.
Obr. 2.2: Schéma databázy
Analýza týchto dát už nie je súčasťou systému, ale prebieha samostatne v prostredí Jupyter notebook. Toto prostredie je bližšie popísane v sekcii 3.1.5.
12
2.3. Schéma databázy
tabuľka FORECAST
period_from začiatok intervalu, pre ktorý je predpoveď vydaná period_to koniec intervalu, pre ktorý je predpoveď vydaná
create_date dátum a čas zverejnenia predpovedi (ak to zdroj uvádza) temperature predpoveď teploty
precipitation predpoveď zrážok
wind_speed predpoveď rýchlosti vetra wind_direction predpoveď smeru vetra pressure predpoveď tlaku vzduchu
timestamp dátum a čas kedy bola predpoveď stiahnutá hash unikátny identifikátor predpovedi, zabraňuje
uloženiu rovnakého záznamu dvakrát
tabuľka WEATHER
timestamp dátum a čas stiahnutia nameraných hodnôt temperature nameraná teplota
precipitation namerané zrážky
wind_speed nameraná rýchlosť vetra wind_direction nameraný smer vetra pressure nameraný tlak vzduchu
tabuľka LOCATION
name názov mesta
country štát
region okres/región latitude zemepisná šírka longitude zemepisná dĺžka altitude nadmorská výška
tabuľka SOURCE
name unikátny názov zdroja
endpoint url, cez ktoré je možné získať dáta
Tabuľka 2.1: Popis databázových stĺpcov, dátové typy pozri obrázok 2.2
Kapitola 3
Realizácia
3.1 Zvolené technológie
Keďže v zadaní nie sú striktne definované požadované technológie, rozhodla som sa pre realizáciu použiť technológie popísane v tejto sekcii.
3.1.1 Java, Maven
Prvá časť praktickej časti je systém, ktorý ma za úlohu pravidelne v určených časových intervaloch zbierať dáta z vybraných zdrojov a ukladať ich do da- tabázy. Pre túto časť som si vybrala programovací jazyk Java. Tento jazyk reprezentuje objektovo orientovaný prístup, čo umožní zdrojový kód logicky štruktúrovať, bude udržovateľný, prehľadný a tak urýchli vývoj aplikácie. Pre túto časť by boli určite rovnako vhodné aj iné objektovo-orientované jazyky ako napríklad C++, C# alebo aj v poslednej dobe obľúbený interpreto- vaný jazykPython. Pri výbere som teda pozerala hlavne na moje skúsenosti s danými jazykmi a dostupnosť knižníc a frameworkov, ktoré by sa dali pri implementácií využiť.
Zostavovanie celej aplikácie, správa závislostí a pluginov je zaistená ná- strojomMaven [6].
3.1.2 Spring framework
K jave som sa rozhodla použiť jeden z najpopulárnejších a najviac používaných frameworkov – Spring framework [10]. Jedná sa o open source framework, ktorý má niekoľko výhod ako napríklad správu závislostí medzi triedami alebo podporu pre prácu s databázou. Jeho časť Scheduling tasks zas ponúka podporu pre vytváranie úloh, ktoré sa majú pravidelne spúšťať v určitých intervaloch, čo je veľmi potrebnou súčasťou systému.
3. Realizácia
3.1.3 MySQL
Ako databázu som si vybrala MySQL databázu. Je to open-source relačná databáza. Vybrala som si ju hlavne pre jej jednoduché použitie a konfiguráciu, a taktiež preto, že som ju už viackrát v minulosti používala.
3.1.4 Python
Analýza a spracovanie nazbieraných dát je realizovaná v jazykuPython. Dô- vod výberu tohoto jazyka je fakt, že momentálne patrí medzi najviac využí- vané jazyky pre dátovú analýzu [4]. Obsahuje mnoho knižníc pre manipuláciu a reprezentáciu dát, ktoré výrazne uľahčujú prácu pri analýze. Ja som si vy- brala knižnicu Pandas [8] pre manipuláciu s dátami. Vizualizácia je potom realizovaná pomocou knižnice Plotly [9]. Samotné načítanie dát z databázy je uskutočnené pomocou knižniceSQLAlchemy [12].
3.1.5 Jupyter notebook
NástrojJupyter notebook [5] je webová aplikácia pre interaktívne vytvára- nie dokumentov, v ktorých je možné kombinovať kód a jeho výstup, obyčajný text, matematické vzorce, vizualizácie a iné multimédia. Aplikácia je založená na princípe klient-server, kde server reprezentuje jadro vybraného jazyka, na ktorom prebiehajú výpočty. Uživateľ sa potom cez webový prehliadač pripojí k serveru ako klient a komunikuje s ním. Priamo v prehliadači je tak možné editovať kód s podporou automatického zvýrazňovania syntaxe a následne kód spustiť a zobraziť výsledky. Jeden dokument (notebook) sa skladá z niekoľkých buniek, ktoré je možné potom vyhodnotiť buď jednotlivo alebo všetky naraz a vytvoriť tak kompletný výstup. Vďaka tomu, že kombinuje kód a textové či multimediálne prvky, je ideálnym nástrojom pre popis analýzy s výsledkami.
Notebook je možné exportovať do formátu HTML alebo PDF. Celá analýza dát tejto práce tak prebieha v prostredí Jupyter notebook.
3.2 Spúšťanie systému a beh v cloude
Zdrojové kódy projektuforecast-analyzer, ktorý je dostupný na priloženom CD je možné skompilovať príkazommvn clean install. Následne sa v adre- sáritargetmoduluforecast-servervytvorí spustiteľná aplikácia vo formáte JAR. Modul forecast-server obsahuje v adresári src/main/resourcessúbor aplication.properties, kde je definovaný prístup do databáze. Keďže je nevyhnutné, aby bola aplikácia nepretržite spustená, a tak zbierala dáta, je umiestnená na školskom cloud serveri. Na virtuálnom stroji s operačným sys- témom Ubuntu beží ako proces na pozadí, ktorý je obsluhovaný pomocou sys- témusystemd. Spúšťanie aplikácie na pozadí je definované v konfiguračnom súbore forecast-service obsahujúci zdrojový kód 3.1.
16
3.3. Zálohovanie databázy [Unit]
Description=forecast-server After=syslog.target
[Service]
User=bodnarad
ExecStart=/var/forecast-app/forecast-server.jar SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Zdrojový kód 3.1: Kód forecast-service pre systemd
3.3 Zálohovanie databázy
Nazbierané dáta sú nevyhnutnou súčasťou tejto práce a preto je potrebné zais- tiť zálohovanie. Pravidelné zálohovanie je jedným z najdôležitejších a najspo- ľahlivejších spôsobov ochrany dát pred ich stratou alebo poškodením. MySQL poskytuje príkazmysqldump, ktorý vykoná zálohu vybraných tabuliek, prí- padne celej databázy v závislosti na definovaných parametroch. Výstupom je potom textový súbor, ktorý obsahuje SQL príkazy pre jednoduchú obnovu da- tabázy. Pre tento účel je v projekte forecast-server vytvorená metóda, ktorá zaisťuje volanie príkazu mysqldump. Tá je následne automaticky spúšťaná pomocou Spring Scheduling library raz týždenne. Zálohu je potrebné ukládať aj na úložisko mimo virtuálneho stroja, na ktorom beží aplikácia.
3.4 Rozšíriteľnosť
3.4.1 Pridanie lokality
Systém si pred každou automatickou úlohou najprv stiahne z databázy infor- mácie o všetkých lokalitách. Ak teda chceme pridať zber dát pre novú lokalitu, stačí pridať záznam o lokalite do databázovej tabuľkyLOCATION.
3.4.2 Pridanie zdroja Pre nový zdroj je potrebné:
• vytvoriť ďalšiu implementáciu moduluforecast-connector-api,
• pridať informácie o zdroji do databázovej tabuľky SOURCE,
• do triedyForecastControllerv aplikáciiforecast-servervytvoriť au- tomatickú úlohu podobne ako v príklade 3.2.
3. Realizácia
private Function<LocationEntity, String> getDarkskyLocationId = e -> e.getLatitude()+","+e.getLongitude();
private static final String DARKSKY_SRC = "darksky";
@Scheduled(cron = "0 */60 * * * *") public void saveDarkSkyData() {
logger.debug("Calling save dark sky 1 hour forecast task");
ForecastConnector conn = new DarkSkyForecastConnector();
SourceEntity source = forecastService.getSourceByName(DARKSKY_SRC);
forecastService.saveForecastData(conn, source, getDarkskyLocationId);
}
Zdrojový kód 3.2: Metóda pre automatické získavanie dát zo zdroja Dark Sky V tomto príklade funkciagetDarkskyLocationIdvráti ID lokality, ktoré sa potom využíva v url pri získavaní dát zo zdroja. Každý zdroj má spôsob vytvárania tohto ID iné, preto je potrebné to špecifikovať. Dark Sky napríklad využíva geografické súradnice, YR vyžaduje ID zložené z názvu mesta, regiónu a štátu.
Literál DARKSKY_SRC označuje názov zdroja, podľa ktorého je zá- znam o zdroji vyhľadaný v databáze.
18
Kapitola 4
Analýza dát
4.1 Metriky presnosti predpovedí
V tejto sekcii predstavím niekoľko metrík, ktoré sa používajú na výpočet pres- nosti predpovedí v prípade spojitých premenných. Tieto metriky sa využívajú nielen v súvislosti s počasím, ale niektoré z nich taktiež na meranie úspešnosti modelov v strojovom učení. Základom všetkých týchto metrík je chyba (er- ror) alebo tiež nazývané rezíduum. Chybu pre numerické hodnoty definujeme takto:
e=f −a,
kdef znamená predpovedaná hodnota aaje reálne nameraná hodnota. Z tohto príkladu teda vyplýva, že chyba bude dosahovať kladné hodnoty, ak je réalne nameraná hodnota menšia ako predpovedaná a záporné hodnoty v opačnom prípade. Nulová chyba znamená zhodu predpovede s realitou.
4.1.1 Mean Absolute Error (M AE)
M AE je jednoducho, ako už názov napovedá, priemerom absolútnych chýb.
Absolútna chyba je absolútna hodnota rozdielu medzi predpovedanou hodno- tou a skutočnou pozorovanou hodnotou. M AE nám hovorí, aká veľká chyba sa dá v priemere očakávať od predpovede. Čím menšia je hodnota, tým pres- nejšia je predpoveď. Ideálne skóre je 0.
M AE= 1 n
∑n
k=1
|Fk−Ak|,
kde Fk je predpovedaná hodnota, Ak je reálna nameraná hodnota v k-tom časovom kroku an značí počet predpovedí.
4. Analýza dát
4.1.2 Mean Absolute Deviation (M AD)
V preklade priemerná absolútna odchýlka je priemerná absolútna vzdialenosť chyby od priemeru. Dáva nám predstavu o variabilite v súbore údajov.
M AD= 1 n
∑n
k=1
|x−m(x)|,
kde x je absolútna chyba jedného záznamu predpovede, m(x) je priemerná chyba predpovedí anznačí počet predpovedí.
4.1.3 Root Mean Square Error (RM SE)
RM SE je najviac využívaná metrika pre výpočet presnosti predpovedí. Je to smerodajná odchýlka reziduí. Nižšia hodnota RM SE znamená presnejšie predpovede, vyššia RM SE znamená menej presné predpovede. V perfektnej sade predpovedí by sa mala RM SE rovnať nule.
RM SE= vu ut∑n
k=1
(Fk−Ak)2
n ,
kde Fk je predpovedaná hodnota, Ak je reálna nameraná hodnota v k-tom časovom kroku anznačí počet predpovedí.
4.2 Popis dát
Dáta pozostávajú z predpovedí nazbieraných za necelé 3 mesiace z 2 služieb.
Jedná sa o takmer 700 000 záznamov predpovedí. Zo služby Dark Sky sú získané predpovede v hodinových intervaloch, zo služby YR predpovede v hodinových a 6-hodinových intervaloch. Reálne namerané hodnoty sú potom získané zo služby Dark Sky. Predpovede sa týkajú 7 lokalít a pozorovaných bolo celkom 5 meteorologických prvkov. Tieto lokality a prvky sú popísané v nasledujúcich sekciách.
20
4.2. Popis dát 4.2.1 Vybrané lokality
Pre pozorovanie som vybrala celkom 7 lokalít. Jedná sa o hlavné mestá štá- tov po celom svete. Snažila som sa, aby bol výber zároveň pestrý z pohľadu časových a podnebných pásiem. Na obrázku 4.1 sú vyznačené vybrané lokality:
• Praha, Česko
• Manado, Indonézia
• Berlín, Nemecko
• Londýn, Veľká Británia
• Los Angeles, USA
• Rejkjavík, Island
• Kampala, Uganda
Obr. 4.1: Mapa s vyznačením vybraných lokalít
4. Analýza dát
4.2.2 Sledované prvky
Počasie je okamžitý stav atmosféry v určitom mieste a čase a je dané súhrnom hodnôt meteorologických prvkov a javov. Meteorologické prvky sledované v tejto práci sú bližšie popísané v tejto sekcii.
Teplota vzduchu [13] je meteorologický prvok udávajúcí tepelný stav ovzdušia, čiže schopnosť vzduchu prijímať alebo predávať tepelnú energiu.
Teplota sa meria teplomerom, ktorý je najčastejšie umiestnený v búdke, chrá- nený pred dažďom, snežením a priamym slnečným žiarením. Teplota je v dá- tach uložená v jednotkách°C.
Tlak vzduchu [14] (atmosférický, barometrický tlak) je sila vyvolaná hmotnosťou vzduchového stĺpca nachádzajúceho sa od sledovanej hladiny až k hornej hranici atmosféry. Základnou jednotkou tlaku je Pascal (tlak vyvo- laný silou 1 N (Newton) na 1 m2). V meteorológii sa tlak najčastejšie udáva v hektopascaloch – hPa, rovnako je to aj v našich dátach. Tlak vzduchu je premenlivá veličina a závisí od teploty a vlhkosti vzduchu, zemepisnej šírky a nadmorskej výšky. Pre vzájomné porovnávanie dát je nutné tlakové údaje na- merané na rôznych staniciach redukovať na teplotu 0 °C, zemepisnú šírku 45°
a nadmorskú výšku 0 m (hladina mora). Normálny tlak za týchto podmienok je1013,25 hPa.
Vietor[15] je meteorologický prvok popisujúci pohyb vzduchu v určitom mieste atmosféry. V meteorológii sa sleduje rýchlosť a smer vetra.Smer vetra znamená, z ktorej svetovej strany vietor vanie. Obvykle sa udáva v uhlových stupňoch (napr. 90° = východný vietor, 180° = južný vietor, 270° = západný vietor, 360° = severný vietor atď.).Rýchlosť vetraje vzdialenosť, ktorú urazí pohybujúci sa vzduch za jednotku času. Udáva sa v metroch za sekundu alebo v kilometroch za hodinu. V našich dátach je smer udaný v uhlových stupňoch a rýchlosť v metroch za sekundu.
Zrážky[1] sú častice vody, ktoré vznikajú kondenzáciou alebo desublimá- ciou vodnej pary. Vyskytujú sa v ovzduší pri poklese teploty vzduchu na tep- lotu rosného bodu a dopadajú na zemský povrch alebo vznikajú na ňom alebo na predmetoch v atmosfére. Číslo, ktoré sa nachádza v dátach pod pojmom precipitation vyjadruje úhrn zrážok v milimetroch. Úhrn (množstvo) zrážok udáva výška vodného stĺpca v milimetroch: 1 mm zrážok zodpovedá 1 litru vody na ploche 1 m2. Je to vrstva vody zo spadnutých a z usadených zrážok, ktorá by sa na vodorovnom povrchu vytvorila bez vyparovania, vsiaknutia a odtoku.
22
4.3. Čítanie dát z databázy
4.3 Čítanie dát z databázy
Nasledujúci príklad kódu 4.1 ukazuje možnosť načítania dát z databázy priamo do pandas dataframe. Dataframe je dátová štruktúra, s ktorou sa pracuje vo frameworku pandas. Je to dvojdimenzionálna tabuľka s označenými osami (riadky a stĺpce), kde každý stĺpec môže obsahovať iné dátové typy.
conn_str = 'mysql+pymysql://'+dbuser+':'+dbpass+'@'+host+'/'+dbName db_conn = create_engine(conn_str)
df = pd.read_sql("select * from forecast", con=db_conn) Zdrojový kód 4.1: Načítanie dát z databázy do pandas dataframe
4.4 Teplota
V prípade spojitých premenných, do ktorých patrí aj teplota, sa podľa [3]
na prvotné preskúmanie dát často využíva krabicový graf (z angl. box plot).
Krabicový alebo tiež nazývaný graf rozptýlenia, je metóda, ktorá umožňuje preskúmanie rozsahu dát pomocou kvartilov. Kvartily delia súbor dát na 4 časti. Predstavujú percentily s hladinou 25%, 50% a 75%. Krabicový graf je vlastne grafické znázornenie 5 hodnôt: minima, prvého kvartilu, mediánu, tre- tieho kvartilu a maxima. Niekedy sa zobrazuje navyše aj priemer a smerodajná odchýlka.
Graf na obrázku 4.2 je graf rozptýlenia absolútnej chyby teploty pre pred- povede v 6-hodinových intervaloch zo služby YR. Na osi x je zobrazený čas pred predpoveďou a na osi yje hodnota absolútnej chyby. Spodná strana kra- bičky reprezentuje prvý kvartil a horná tretí kvartil. Prerušovaná čiara, ktorá prechádza cez krabičku značí priemer, plná čiara prechádzajúca krabičkou je medián. Horná čiara nachádzajúca sa nad krabičkou reprezentuje maximum, dolná čiara minimum. Ak prezentované dáta obsahujú extrémné hodnoty, tie sa zobrazujú zvlášť ako samostatné body.
Z grafu na obrázku 4.2 je možné vidieť, že najmenšia chybovosť predpovedi teploty je v miestach Manado a Kampala. V týchto 2 miestach si chybovosť drží takmer stále rovnakú hodnotu (krabičky sa so zvyšujúcim počtom dní nezväčšujú). V prípade ostatných lokalít je vidieť ako sa so zvyšujúcim počtom dní zvyšuje chybovosť (zväčšujú sa krabičky).
Grafy rozptýlenia absolútnej chyby teploty pre ostatné služby je možné nájsť v dokumente temperature.htmlna priloženom CD.
4. Analýza dát
Obr. 4.2: Graf rozptýlenia absolútnej chyby teploty pre predpovede v 6- hodinových intervaloch zo služby YR
24
4.4. Teplota Na grafe na obrázku 4.3 je zobrazený vývoj metríkRM SE aM AD podľa času pred predpoveďou. SlužbaDark Skydosahuje menšiu chybovosť v pred- povedaní teploty ako službaYR. Najmä pre predpovede zverejnené menej ako 5 hodín vopred sú hodnotyRM SE u Dark Sky výrazne nižšie ako u YR. Od 5 hodín vyššie rastie RM SE rovnako rýchlo u obidvoch služieb.
Obr. 4.3: VývojRM SE,M AD pre predpovede teploty podľa času pred pred- poveďou
4. Analýza dát
Graf na obrázku 4.4 zobrazuje hodnoty metriky RM SE pre predpovede teploty zverejnené menej ako 48 hodín vopred, rozdelené do 4 časových in- tervalov dňa. Najmenšia chybovosť je v prípade všetkých služieb v časovom intervale 00:00-06:00. Služba YR v prípade predpovedí v 6 hodinových inter- valoch najviac chybuje v intervale 06:00-12:00, v prípade predpovedí v hodi- nových intervaloch je to interval 12:00-18:00. U Dark Sky je možné pozorovať najvyššiu chybovosť v intervale 06:00-12:00.
Obr. 4.4:RM SE pre predpovede teploty podľa intervalu dňa
Pre výpočet percentuálnej úspešnosti predpovedí teploty bola zvolená tole- rancia 3°C. To znamená, že je predpoveď označená za úspešnú, ak je absolútna chyba menšia ako 3. Služba Dark Sky predpovedala teplotu s úspešnosťou 96.1% v prípade predpovedí v hodinových intervaloch. Služba YR predpo- vedala teplotu s úspešnosťou90.04%v prípade predpovedí v hodinových in- tervaloch a úspešnosť77.83%dosiahla v prípade predpovedí v 6-hodinových intervaloch.
26
4.5. Zrážky
4.5 Zrážky
V prípade zrážok boli analyzované hodinové predpovede zo zdrojov YR a Dark Sky. Úspešnosť predpovedí zrážok sa podľa [7] často vyhodnocuje pomo- cou kontingenčnej tabuľky. Kontingenčná tabuľka je štatistická reprezentácia vzťahu medzi dvoma alebo viacerými kategorickými premennými. V tomto prípade sa jednalo o hodnoty áno/nie podľa toho, či dážď nastal alebo bol predpovedaný.
Ako hranica bola zvolená hodnota 0.1 mm. Podľa YR [16] je slabý dážď klasifikovaný hodnotou minimálne 0.1 mm za hodinu. Tabuľka 4.1 zobrazuje, že ak vezmeme do úvahy len záznamy, ktoré obsahujú hodnotu zrážok väčšiu ako 0, tak 75% záznamov sa nachádza pod hodnotou 0.28. Priemer má hod- notu 0.229954. Preto nebolo nutné zrážky rozdeľovať do ďalších kategórií ako napríklad stredne silný a silný dážď.
mm/hod mean 0.229954 std 0.410329 min 0.010000 25% 0.020000 50% 0.080000 75% 0.280000 max 9.420000
Tabuľka 4.1: Rozdelenie hodnôt predpovedí zrážok v mm za hodinu Záznamy boli rozdelené do 4 kategórii nasledovne:
• hit – bol predpovedaný dážď a pršalo,
• miss – nebol predpovedaný dážď a pršalo,
• f alse alarm – bol predpovedaný dážď a nepršalo,
• correct negative – nebol predpovedaný dážď a nepršalo.
Celkový počet pozorovaných a predpovedaných situácií kedy dážď nastal a nenastal, sa uvádza v dolnej a pravej časti kontingenčnej tabuľky 4.2 a nazýva sa marginálne rozdelenie.
Tabuľka 4.2: Kontingenčná tabuľka zrážok realita
áno nie súčet
predpoveď áno hits false alarms C nie misses correct negatives D
súčet A B súčet všetkých
4. Analýza dát
Hodnoty A,B,C,D vyjadrujú súčet situácií:
• A = kedy nastal dážď (hits+misses)
• B = kedy dážď nenastal (f alse alarms+correct negatives)
• C = kedy bol predpovedaný dážď (hits+f alse alarms)
• D = kedy nebol predpovedaný dážď (misses+correct negatives) Accuracy vyjadruje aké percento predpovedí bolo správnych. Je to naj- jednoduchší výpočet skóre, ktorý však môže byť trochu zavádzajúci. Je výrazne ovplyvnený situáciami kedy dážď nebol predpovedaný a nenastal. Nadobúda hodnoty 0 až 1, kde 1 vyjadruje, že 100% predpovedí bolo správnych.
Accuracy = hits+correct negatives total
Bias score meria pomer frekvencie predpovedaných zrážok k frekvencii pozorovaných zrážok.
BIAS= hits+f alse alarms hits+misses
Hodnota z intervalu (0, ∞) indikuje preceňovanie (BIAS > 1) alebo podce- ňovanie (BIAS < 1) predpovedí oproti realite. V prípade zrážok je známy pojem wet bias.
Wet bias je termín, ktorý označuje tendenciu upravovať predpovede zrá- žok tak, že sa prikláňa k horšiemu scenáru než je reálne predpokladané. Nate Silver toto skúmal vo svojej knihe
”The Signal and the Noise“ a zistil, že mnoho meteorologických služieb toho využíva z jednoduchého dôvodu.
”Ľu- ďom nevadí, keď je predpovedaný dážď a ukáže sa, že je to nakoniec pekný deň. Ale ak prší v deň kedy by nemalo, tak preklínajú meteorológa za zničenie ich pikniku.“ [11] (preklad autorky)
Probability of detection odpovedá na otázku: Aké percento pozorova- ných zrážok bolo správne predpovedaných? Nadobúda hodnoty 0 až 1, kde 1 vyjadruje, že 100% pozorovaných zrážok bolo správne predpovedaných.
P OD = hits hits+misses
Threat scorevyjadruje do akej miery zodpovedajú predpovedané zrážky realite. Odaccuracysa líši tým, že neberie do úvahy situácie, kedy dážď nebol 28
4.5. Zrážky predpovedaný a nenastal (correct negatives).T hreatscoreteda kalkuluje len s predpoveďami, ktoré sa
”počítajú“. Je totiž jednoduché predpovedať, že dážď nebude na miestach, kde prší zriedkavo. Aj v tomto prípade je hodnota v najhoršom prípade 0 a ideálne skóre je 1.
T S= hits
hits+misses+f alse alarms
4. Analýza dát
Nasledujúce grafy na obrázkoch 4.5 a 4.6 zobrazujú početnosť kategórií zrážok v závislosti na čase. Na osi y je zobrazený čas v hodinách, kedy bola predpoveď stiahnutá predtým než má platiť. Modrá a oranžová farba značí situácie, kedy bola predpoveď úspešná. Je možné pozorovať, že vo väčšine prípadov sa so zvyšujúcim časom zmenšuje časť, ktorú tvoria tieto 2 farby. To znamená, že sa so zvyšujúcim časom prirodzene zmenšuje presnosť predpovedí.
Z grafov sa dá ďalej vyčítať, že najmenej pršalo v Los Angeles a obom zdrojom sa to darilo predpovedať takmer rovnako úspešne. Je to poznať kvôli výraznemu podielu modrej farby, ktorá značí situácie, kedy dážď nebol pred- povedaný a nenastal. Naopak najviac zrážok spadlo v meste Kampala, kde to značí podiel oranžovej a červenej farby. Na pohľad ale vidno, že v tomto prípade bol zdroj Dark Sky úspešnejší (menší podiel červenej farby oproti oranžovej). Mesiace september až november, kedy bola aj väčšina predpovedí zozbieraná, sú známe ako obdobia dažďov v mesteKampala.
Obr. 4.5: Dark Sky - početnosť jednotlivých kategórii zrážok v závislosti na čase predpovedi
30
4.5. Zrážky
Obr. 4.6: YR - početnosť jednotlivých kategórii zrážok v závislosti na čase predpovedi
4. Analýza dát
Graf na obrázku 4.7 zobrazuje vývoj metríkaccuracy, probability of detec- tion, threat scoreabias score v čase. Je možné pozorovať, že so zvyšujúcim sa časom klesá presnosť a zvyšuje sa bias. Služba Dark Sky dosahuje výrazne vyššie hodnotyaccuracy, probability of detection a threatscore, čo znamená, že v predpovedaní zrážok je úspešnejšia akoYR. Hodnotybias scoresú však u Dark Sky po celý čas nad hodnotou 1, čo znamená, že na nich trochu vplýva wet bias. Predpovede služby YR sa naopak držia okolo hodnoty 1, takže ich predpovede sú objektívnejšie awet bias u nich takmer nie je.
Obr. 4.7: Porovnanie výsledkov metrík úspešnosti predpovedí zrážok pre obi- dve služby
32
4.6. Tlak vzduchu
4.6 Tlak vzduchu
Pre zobrazenie úspešnosti tlaku vzduchu bola použita metrika RM SE. Dáta boli najprv zoskupené podľa času pred predpoveďou a potom bola vypočí- taná hodnota RM SE. Nasledujúci graf na obrázku 4.8 zobrazuje ako sa táto hodnota mení pre obidve služby. So zvyšujúcim sa časom sa RM SE zvyšuje, teda klesá presnosť predpovedí. Najhoršie sú na tom 6-hodinové predpovede od služby YR.
V predpovedaní tlaku vzduchu je na tom službaDark Skylepšie akoYR.
Hlavne pre blízke predpovede dosahuje výrazne nižšiu chybovosť. Neskôr sa ale hodnoty chybovosti predpovedí v hodinových intervaloch pre obe služby približujú.
Obr. 4.8: Vývoj RM SE pre predpovede tlaku vzduchu
Percentuálna úspešnosť predpovedí tlaku vzduchu predstavuje koľko per- cent predpovedí malo absolútnu chybu menšiu ako 3. SlužbaDark Skypred- povedala tlak vzduchu s úspešnosťou 98.88% v prípade predpovedí v ho- dinových intervaloch. Služba YR predpovedala tlak vzduchu s úspešnosťou 96.94%v prípade predpovedí v hodinových intervaloch a 69.77%úspešnosť dosiahla v prípade predpovedí v 6-hodinových intervaloch.
4. Analýza dát
4.7 Rýchlosť vetra
Grafy na obrázkoch 4.9 a 4.10 zobrazujú ako sa so zvyšujúcim časom zvy- šujú hodnoty RM SE a presnosť predpovedí pre rýchlosť vetra sa znižuje.
Každý stĺpec reprezentuje určitý počet hodín, prípadne dní pred predpove- ďou. Farebné rozdelenie ukazuje aká bola chybovosť v jednotlivých lokalitách.
V prípade obidvoch služieb tak dosahovala najvyššie hodnoty v lokaliteReyk- javik. Naopak najmenšiu chybovosť je možné pozorovať v miestach Manadoa Los Angeles a v prípade služby YR aj v mesteKampala.
Pre výpočet percentuálnej úspešnosti predpovedí pre rýchlosť vetra bola zvolená tolerancia 3 m/s. Každá predpoveď, ktorá dosahovala absolútnu chybu menšiu ako 3, tak bola označená ako úspešná. Služba Dark Sky predpove- dala rýchlosť vetra s úspešnosťou97.11%v prípade predpovedí v hodinových intervaloch. Služba YR dosahovala úspešnosť 95.92% v prípade predpovedí v hodinových intervaloch a 92.1% v prípade predpovedí v 6-hodinových in- tervaloch.
Obr. 4.9: VývojRM SE pre predpovede rýchlosti vetra v hodinových interva- loch od služby Dark Sky
34
4.8. Smer vetra
Obr. 4.10: Vývoj RM SE pre predpovede rýchlosti vetra v 6-hodinových in- tervaloch od služby YR
4.8 Smer vetra
Smer vetra je v dátach uložený v uhlových stupňoch. Pri výpočte chyby v prípade uhlových stupňov je potrebné postupovať inak ako v prípade nume- rických hodnôt. Ak by bola predpovedaná hodnota napríklad 350° a nameraná hodnota 10°, vypočítaním rozdielu čísel350−10by vyšla chyba 340. Čo je však v tomto prípade zle, pretože rozdiel uhlov 350° a 10° je v skutočnosti 20°. Kód 4.2 predstavuje metódu, ktorá bola použitá pre výpočet chyby smeru vetra.
def wind_dir_error(a, b):
diff = a - b
res = (diff + 180) % 360 - 180 return abs(res)
Zdrojový kód 4.2: Metóda pre výpočet chyby smeru vetra
4. Analýza dát
Graf na obrázku 4.11 zobrazuje vývoj metríkRM SEaM ADpre hodinové predpovede smeru vetra. SlužbaDark Sky dosahuje nižšie hodnotyRM SE než službaYRa teda je v predpovedaní smeru vetra presnejšia. Krivky hod- nôtM AD ukazujú ako sa hodnoty absolútnych chýb vzdiaľujú od priemernej absolútnej chyby.
Obr. 4.11: Vývoj RM SE, M AD pre predpovede smeru vetra v hodinových intervaloch
Pre percentuálnu úspešnosť predpovedí smeru vetra bola zvolená toleran- cia 45°. Ak vezmeme do úvahy 4 svetové strany (sever, juh, východ, západ) spolu so 4 vedľajšími smermi (severovýchod, juhovýchod, juhozápad, severo- západ), tak jednotlivé smery medzi sebou zvierajú uhol 45°. Za úspešné tak boli klasifikované predpovede s absolútnou chybou menšou ako 45°.
SlužbaDark Skydosiahla v predpovedaní smeru vetra úspešnosť72.64%
v prípade predpovedí v hodinových intervaloch. SlužbaYRpredpovedala smer vetra s úspešnosťou69.58%v prípade predpovedí v hodinových intervaloch a 57.24%úspešnosť dosiahla v prípade predpovedí v 6-hodinových intervaloch.
36
Záver
Hlavným cieľom tejto bakalárskej práce bolo vytvoriť systém, pomocou kto- rého je možné zbierať dáta o predpovediach počasia, ako aj reálne namerané hodnoty na určitých miestach z vybraných on-line služieb a tieto dáta potom analyzovať. V úvodnej kapitole bol vykonaný prieskum dostupných služieb a existujúcich analýz. Z preskúmaných služieb boli vybrané 2, presnejšie YR a Dark Sky.
Navrhnutý a implementovaný bol systém umožňujúci automatický zber dát z vybraných služieb pre 7 lokalít. Systém bol navrhnutý tak, aby ho bolo možné v budúcnosti jednoducho rozšíriť o nový zdroj dát a lokalitu. Pri nepretržitom pustení systému bolo nazbieraných takmer 700 000 záznamov predpovedí v priebehu 3 mesiacov.
Porovnané boli predpovede teploty, zrážok, tlaku vzduchu, rýchlosti a smeru vetra s reálne nameranými hodnotami. Graficky znázornené boli miery chybovosti obidvoch služieb a vypočítaná bola percentuálna úspešnosť. Po- tvrdilo sa, že presnosť predpovedí klesá tým viac, čím ďalej do budúcnosti sú. Taktiež bolo pozorované, že sa presnosť mení aj v závislosti na lokalite.
Výsledky ukázali, že služba Dark Sky bola v predpovedaní teploty, zrážok, tlaku vzduchu, rýchlosti a smeru vetra úspešnejšia ako YR. Služba YR ale bola v niektorých prípadoch len tesne za Dark Sky a tiež je možné ju označiť za spoľahlivý zdroj predpovede počasia.
Výstupom práce je funkčná aplikácia, umožňujúca zber dát predpovedí a nameraných hodnôt počasia a Jupyter notebooky obsahujúce kód, pomocou ktorého je možné dáta analyzovať a zobraziť interaktívne grafy. Čitateľ je tak oboznámený nie len s výsledkami, ale aj s postupmi, ktoré sa používajú pre verifikáciu predpovedí. Všetky ciele definované v úvode práce boli splnené.
Do budúcna by bolo zaujímavé pomocou systému nazbierať dáta za väčšie časové obdobie, pridať ďalšie zdroje a lokality. Na existujúcej analýze je možné stavať, pridať nové pohľady na dáta a zistiť ako sa mení presnosť v závislosti na iných ukazateľoch, napríklad podľa ročných období.
Bibliografia
[1] Atmosférické zrážky.url:https://beliana.sav.sk/heslo/atmosfericke- zrazky(cit. 08. 12. 2019).
[2] Caitlin Dempsey.Explaining How Dark Sky Works.url:https://www.
gislounge.com/explaining-how-dark-sky-works/(cit. 12. 10. 2019).
[3] Forecast Verification methods Across Time and Space Scales. 2018.url:
https://www.cawcr.gov.au/projects/verification.
[4] Bob Hayes. Programming Languages Most Used and Recommended by Data Scientists. 2019. url: https : / / businessoverbroadway . com / 2019/01/13/programming-languages-most-used-and-recommended- by-data-scientists/.
[5] Jupyter. [online]. [cit. 2019-10-20].url:https://jupyter.org.
[6] Maven. [online]. [cit. 2019-10-20]. url:https://maven.apache.org.
[7] Pertti Nurmi. Recommendations on the verification of local weather fo- recasts. October 2003. url: https://www.cawcr.gov.au/projects/
verification/Rec_FIN_Oct.pdf.
[8] Pandas. [online]. [cit. 2019-10-20]. url:https://pandas.pydata.org.
[9] Plotly. [online]. [cit. 2019-10-20]. url:https://plot.ly/python.
[10] programmer9. Largest Java Developer Survey 2018. 2018.url: https:
//programmer9.com/2019/02/06/largest-java-survey-2018.html.
[11] Nate Silver. The Signal and the Noise: Why Most Predictions Fail – but Some Don’t. Penguin Group, 2012. isbn: 978-1-101-59595-4.
[12] SQLAlchemy. [online]. [cit. 2019-10-20].url:https://www.sqlalchemy.
org.
[13] Teplota vzduchu.url: https://www.meteocentrum.cz/zajimavosti/
encyklopedie/teplota-vzduchu (cit. 08. 12. 2019).
Bibliografia
[14] Tlak vzduchu.url: https://www.kstst.sk/pages/vht/meteo/tlak.
htm(cit. 08. 12. 2019).
[15] Vítr.url:https://www.meteocentrum.cz/zajimavosti/encyklopedie/
vitr(cit. 08. 12. 2019).
[16] What does «light» and «heavy» rain mean? url:https://hjelp.yr.
no / hc / en - us / articles / 115003696813 - What - does - light - and - heavy-rain-mean(cit. 01. 12. 2019).
40
Dodatok A
Zoznam použitých skratiek
API Application Programming Interface – rozhranie pre programovanie ap- likácií
XML Extensible markup language – rozšíriteľný značkovací jazyk
REST Representational State Transfer – architektúra rozhrania, navrhnutá pre distribuované systémy
JSON JavaScript Object Notation – JavaScriptový objektový zápis
HTTP Hypertext Transfer Protocol – internetový protokol určený pre ko- munikáciu s WWW servermi
SQL Structured Query Language – jazyk používaný pre prácu s dátami v relačnej databáze
CRUD Create, Read, Update, Delete – základné funkcie trvalého ukladania dát
JAR Java ARchive - formát súboru RMSE Root Mean Square Error MAD Mean Absolute Deviation MAE Mean Absolute Error POD Probability of Detection
Dodatok B
Obsah priloženého CD
readme.txt ...stručný popis obsahu CD jupyter
html...exportované Jupyter notebooky vo formáte html src ...zdrojové Jupyter notebooky forecast-analyzer ...zdrojové kódy aplikácie pre zber dát thesis...zdrojové kódy práce vo formáte LATEX text...text práce BP_Bodnarova_Radka_2020.pdf...text práce vo formáte PDF