• Nebyly nalezeny žádné výsledky

ZADÁNÍ BAKALÁŘSKÉ PRÁCE Název:

N/A
N/A
Protected

Academic year: 2022

Podíl "ZADÁNÍ BAKALÁŘSKÉ PRÁCE Název:"

Copied!
59
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

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.

(2)
(3)

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.

(4)
(5)

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ž

(6)
(7)

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.

(8)

Č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.

(9)

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.

(10)

Keywords weather forecast, data analysis, weather forecast accuracy, fore- cast verification metrics, Python, Java

viii

(11)

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

(12)

Bibliografia 39

A Zoznam použitých skratiek 41

B Obsah priloženého CD 43

x

(13)

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

(14)
(15)

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

(16)
(17)

Ú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.

(18)
(19)

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

(20)

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

(21)

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

(22)

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

(23)

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.

(24)

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

(25)

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

(26)

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

(27)

2.2. Štruktúra systému

Obr. 2.1: Architektúraforecast-server

(28)

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

(29)

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

(30)
(31)

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.

(32)

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

(33)

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.

(34)

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

(35)

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í.

(36)

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 utn

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

(37)

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

(38)

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

(39)

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.

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

4.5. Zrážky

Obr. 4.6: YR - početnosť jednotlivých kategórii zrážok v závislosti na čase predpovedi

(48)

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

(49)

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.

(50)

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

(51)

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 čísel35010by 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

(52)

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

(53)

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í.

(54)
(55)

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).

(56)

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

(57)

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

(58)
(59)

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

Odkazy

Související dokumenty

Cieľom produktovej bakalárskej práce bolo vytvoriť rozhlasový dokument na tému storočnej tradície ochotníckeho divadla v Ploštině, ktorý by poslucháčom

Hlavným cieľom bakalárskej práce bolo poukázať na vývoj manaţmentu a teórie motivácie pracovníkov a následne tieto teoretické poznatky aplikovať pri analýze

Hlavným cieľom tejto práce bolo identifikovať charakteristické rysy procesu globalizácie na finančných trhoch a analyzovať výhody a nevýhody procesu globalizácie v

Hlavným cieľom mojej diplomovej práce je analyzovať vplyv finančnej krízy na poskytovanie úverov podnikateľským subjektom SR, stručným prehľadom vytvoriť obraz

Cieľom tejto diplomovej práce bolo posúdenie efektívnosti vybraných malých a stredných podnikov v oblasti pohostinských služieb v Moravskosliezskom kraji pomocou

Hlavným cieľom mojej bakalárskej práce bolo zanalyzovať a navrhnúť marketingovú komunikácie Futbalového klubu Slávia Staškov. V úvode tejto bakalárskej práce som sa

Cieľom tejto práce bolo pomocou analýzy faktorov vplývajúcich na kreditné riziko štatisticky vyhodnotiť pravdepodobnosť nesplatenia úveru potenciálneho dlžníka

Hlavným cieľom bakalárskej práce bolo zhodnotiť finančné zdravie spoločnosti Doprava a mechanizácia a.s., na základe zhotovenej finančnej analýzy. Porovnať jej výsledky