České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů. Diplomová práce Nástroje pro ekonomické modelování

Rozměr: px
Začít zobrazení ze stránky:

Download "České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů. Diplomová práce Nástroje pro ekonomické modelování"

Transkript

1 České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů Diplomová práce Nástroje pro ekonomické modelování Bc. Václav Götthans Vedoucí práce: doc.rndr. Josef Kolář, CSc. Studijní program: Elektrotechnika a informatika, strukturovaný, Navazující magisterský Obor: Výpočetní technika 8.května 2009

2 iv

3 Poděkování Na tomto místě bych chtěl poděkovat panu docentovi Josefu Koláři bez jehož podnětu by tato práce nevznikla a chtěl bych mu poděkovat za jeho rady během vývoje aplikace. Dále bych chtěl poděkovat lidem, kteří za mnou pří psaní diplomové práce stáli a podporovali, hlavně mým rodičům a mým dobrým kamarádům, kteří mě vždy dovedli zvednout náladu a dodat chuť k další práci. A poděkování patří také mému nadřízenému v práci za to, že mě dal při dokončování práce volno, abych mohl diplomovou práci dokončit. Všem vám za vše moc děkuji. v

4 vi

5 Prohlášení Prohlašuji, že jsem práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Prachaticích dne vii

6 viii

7 Abstract This diploma thesis is about economic modeling by using three methods: Winter s method, method of multiple linear regresion and causal s models. Outcome from this diploma thesis is implementation of these methods in Java language with prefered on GUI (Graphics User Interface). Abstrakt Práce se zabývá ekonomickým modelováním pomocí tří metod: Wintersova metoda, metoda vícenásobné lineární regrese a kauzálním modelem. Cílem této práce je implementovat tyto metody v jazyce Java se zaměřením se na uživatelské rozhraní. ix

8 x

9 Obsah Obsah... xi Seznam obrázků... xiii Úvod...1 Popis problému, specifikace cíle Ekonometrie Teoretické základy implementovaných modelů Wintersova metoda Metoda vícenásobné lineární regrese Kauzální modelování Požadavky na implementaci a cíle práce...14 Analýza a návrh řešení Analýza zdrojů Návrh řešení Implementační prostředí Technologie Swing...18 Realizace Rozdělení aplikace Implementace modelů Wintersova metoda Model vícenásobné lineární regrese Kauzální modelování...44 Testování...49 Závěr...53 Literatura...55 Instalační a uživatelská příručka...57 A.1. Instalace...57 A.2. Uživatelská příručka...57 A.2.1. Wintersova metoda...58 A.2.2. Vícenásobná lineární regrese...63 A.2.3. Kauzální model...66 Obsah přiloženého CD...69 xi

10 xii

11 Seznam obrázků OBRÁZEK 2 ÚVODNÍ OKNO...23 OBRÁZEK 3 UKÁZKA KOMPONENTY METHODMENU...25 OBRÁZEK 4 UKÁZKA KOMPONENTY DOUBLELABEL...26 OBRÁZEK 5 ERRWINDOW...26 OBRÁZEK 6 UKÁZKA KOMPONENTY LABEL_DOUBLETEXTFIELD...26 OBRÁZEK 7 UKÁZKA KOMPONENTY LABEL_TEXTFIELD...26 OBRÁZEK 8 UKÁZKA DVOU KOMPONENT TRIPLELABEL...27 OBRÁZEK 9 OKNO PO NAČTENÍ SOUBORU SE ZOBRAZENÝM VÝSLEDKEM...32 OBRÁZEK 10 EDITACE POLOŽEK...34 OBRÁZEK 11 ZALOŽENÍ NOVÉHO SOUBORU...34 OBRÁZEK 12 WARNING PŘI ZADÁNÍ ŠPATNÉ HODNOTY ALFA...35 OBRÁZEK 13 UKÁZKA DIALOGOVÉHO OKNA MYPRINTDIALOG...36 OBRÁZEK 14 ÚVODNÍ OKNO APLIKACE...57 OBRÁZEK 15 NASTAVENÍ JAZYKA...58 OBRÁZEK 16 PRÁZDNÉ OKNO WINTERSOVA MODELU...59 OBRÁZEK 17 ZALOŽENÍ NOVÉHO SOUBORU...60 OBRÁZEK 18 ZOBRAZENÍ VYPLNĚNÝCH HODNOT...61 OBRÁZEK 19 UKÁZKA HISTOGRAMU...62 OBRÁZEK 20 VÝBĚR TIŠTĚNÝCH POLOŽEK...62 OBRÁZEK 21 NAČTENÝ MODEL LINEÁRNÍ REGRESE...64 OBRÁZEK 22 EDITACE FORMULE V REGRESNÍM MODELU...65 OBRÁZEK 23 INTERPOLACE...66 OBRÁZEK 24 HLAVNÍ OKNO MODELU PO NAČTENÍ SOUBORU...67 OBRÁZEK 25 EDITAČNÍ OKNO KAUZÁLNÍHO MODELU...68 xiii

12 xiv

13 1 Kapitola 1 Úvod Při rozmýšlení nad tím, co bych chtěl dělat jako diplomovou práci jsem věděl jen to, že bych rád dělal nějakou implementační práci a jelikož jsem v té době nastoupil také do práce, kde programujeme v Javě, chtěl jsem dělati nějakou aplikaci v Javě, abych se v ní zdokonalil. Proto mě zaujala nabídka od pana doc.rndr. Josefa Koláře, CSc., vedoucího mé diplomové práce, na zhotovení aplikace pro ekonomické modelování, resp. rozšíření stávající verze, která byla naprogramována vedoucím práce v Pascalu zhruba před 20 roky. Zadání práce bylo jednoduché: vzít stávající verzi, vybrat z ní funkční část požadovaných metod, naprogramovat je v Javě a k nim navrhnout a implementovat vhodné grafické uživatelské rozhraní, u něhož jsem se měl soustředit hlavně na jeho uživatelskou přívětivost. Jelikož původní verze byla psaná v Pascalu, kde se prakticky nedala oddělit výpočetní logická část od zobrazovací (grafické) části, tak moji snahou bylo tyto dvě části v nové verzi oddělit, a tím kód aspoň trochu zpřehlednit. Zadání jsem přijal, protože bylo pro mě zajímavé a také jsem chtěl proniknout a zdokonalit se v práci se Swingem (což je knihovna pro práci s GUI, která se nachází v balíčku javax.swing).

14 2 Kapitola 1. Úvod

15 3 Kapitola 2 Popis problému, specifikace cíle 2.1. Ekonometrie Co je ekonometrie? Je to část ekonomie zpracovávající statistická data pomocí matematicko-statistického aparátu a v oblasti vícerovnicových modelů tento aparát dále rozvijí do vlastních metod a postupů. [1] Ekonomická analýza nám poskytuje teoretické poznatky, které jsou kvalitativní, ale bohužel nejsou kvantitativní (dostáváme například veličiny, které se nedají číselně zachytit) a nedají se ani matematicky popsat. Jelikož ekonometrie, zpracovává statistická data pomocí matematiky, tak potřebujeme, aby teoretické poznatky byly nějak matematicky popsány a k tomu nám slouží ekonomické hypotézy. Z teoretických poznatků se vytvoří ekonomická hypotéza, která se formalizuje a následně se z ní vytvoří ekonomický model. Formalizace hypotézy nám zavádí nějaké předpoklady. Při aplikaci matematického aparátu zavádíme např. tyto předpoklady: předpoklad o algebraickém tvaru modelu (např. lineární, mocninný, exponenciální, apod.), předpoklad na to, jak se budou ekonomicky interpretovat matematické operace (derivace, integrace a jiné). Při aplikaci statistického aparátu zavádíme hlavě předpoklad, aby ekonomické veličiny měly charakter náhodného výběru. Vzniklý ekonomický model je potom vlastním nástrojem ekonometrie. Složitost modelu se může pohybovat od jedné rovnice (zkoumá ekonomické hypotézy na jediné části reprodukčního procesu) až po soustavu rovnic, kde každá rovnice vyjadřuje hypotézu příslušné části procesu a celá soustava vyjadřuje hypotézu celého reprodukčního procesu. Formulace vztahu mezi ekonomickými veličinami předpokládá jednoznačné postavení veličin v modelu. Tím se veličiny dělí na vysvětlované (závislé, endogenní) a vysvětlující (nezávislé, exogenní). V modelu nás zajímají parametry modelu, které nám říkají, jakou měrou působí vysvětlující veličiny modelu na vysvětlovanou veličinu. Určení hodnot parametrů (tzv. kvantifikace modelu) se provádí statickým odhadem a to takto: přijetím předpokládané matematické formulace modelu na základě určitého počtu pozorování specifikovaných proměnných modelu po zavedení předpokladů o rozdělení náhodné složky modelu

16 4 Kapitola 2. Popis problému, specifikace cíle Ekonomický model můžeme tedy definovat jako soubor ekonomických struktur. Z pohledu výpočtu představuje soubor ekonomických struktur (ekonomický model) soustavu rovnic, jejímž řešením určíme hodnoty vysvětlovaných veličin. Vstupními hodnotami do soustavy jsou hodnoty známých vysvětlujících veličin. Shrnutí. Ekonometrie zkoumá vztahy mezi ekonomickými veličinami s cílem vyjádřit, ověřit a aplikovat ekonomické hypotézy na základě statistických údajů za použití matematicko-statistických metod. Nástroj který ekonometrie přitom používá je ekonomický model.[1] 2.2. Teoretické základy implementovaných modelů Wintersova metoda Wintersova metoda patří do skupiny metod sloužících k analýze časových řad a posléze k předpovědi jejich budoucího chování. Všechny tyto metody jsou založeny na principu, že se historie opakuje. Časovou řadou rozumíme posloupnost hodnot ukazatelů měřených v určitých časových intervalech. Tyto intervaly jsou zpravidla rovnoměrné. Zapisují se takto: y 1, y 2, y 3, y n neboli y t, t = 1,2,,n kde y značí analyzovaný ukazatel, t je časová proměnná s celkovým počtem měření n. [3] Při analýze časových řad vycházíme z předpokladu, že každá časová řada může obsahovat tyto složky: trend (Tr t ) sezónní složku (Sz t ) cyklickou složku (C t ) náhodnou složku (E t ) rozklad časové řady na tyto složky se nazývá dekompozice časové řady. Trend vyjadřuje obecnou tendenci vývoje zkoumaného jevu za dlouhé období. Může být rostoucí, klesající nebo řada nemusí mít žádný trend.

17 Kapitola 2. Popis problému, specifikace cíle 5 Sezónní složka je pravidelně se opakující odchylka od trendové složky. Perioda této složky je menší než délka celého sledovaného období. Cyklická složka udává kolísání kolem trendu. Toto kolísání je způsobeno ekonomickými, ale i neekonomickými faktory, které se často špatně pozorují. Náhodná složka vyjadřuje nahodilé a nesystematické výkyvy. Většinou jsou to chyby v měření, kterých se dopustíme. Předpokládáme, že hodnoty v této složce jsou náhodné veličiny s nulovou střední hodnotou a konstantním rozptylem. Máme na výběr ze dvou forem dekompozice a to aditivní a multiplikativní. Dále se budu zabývat jen multiplikativním modelem, poněvadž je použit v aplikaci. Informace o aditivním modelu lze získat v [2] a [3]. Vyrovnání trendu Při sledování se může trend měnit. Metody, které vycházejí z předpokladu, že se trend po celou námi sledovanou dobu nemění a tudíž je možné ho popsat matematickou křivkou, se nazývají neadaptivní metody. V některých případech se trend během pozorování mění a nemůžeme ho tedy vyrovnat na celé časové řadě. Tento problém řeší adaptivní metody: metoda klouzavých průměrů a exponenciální vyrovnání. Exponenciální vyrovnání se snaží stanovenou křivkou vyrovnat vždy všechna minulá pozorování. Přitom se předpokládá, že význam pozorování do minulosti klesá exponenciálně, čehož se dosáhne tím, že starším pozorováním se přiřadí exponenciálně klesající váhy. [2] Nyní se dostáváme k samotné Wintersově metodě, která umožňuje adaptivně odhadovat sezónní složku (tzn. že sezónní faktor se během pozorování může měnit). Navíc je Wintersova metoda zobecněním exponenciálního vyrovnání, což umožňuje adaptivně vyrovnávat trend. Předpokládejme, že se trend v krátké době vyvíjí zhruba lineárně, tj.: T t = b 0 + b 1 t [2.1] kde b 0 a b 1 jsou parametry, jejichž hodnoty chceme odhadnout. Označme model takto: máme k dispozici n pozorování, rok je tvořen m sezónními obdobími. Odhady parametrů b 0 a b 1 a sezónní složky S t v čase t označme b ) ( ), b ) ( ), a s t (t). Odhad úrovně trendu v čase t označme a ) ( ). 0 t 1 t 0 t

18 6 Kapitola 2. Popis problému, specifikace cíle Potom: ) ) ) a t) = b ( t) + b ( t) t 0 ( 0 1 Wintersova metoda používá tři koeficienty zapomínání (vyrovnávací konstanty): α, β, γ. Multiplikativní model Předpokládejme, že model vysvětlované veličiny má tvar y t = T t S t E t. Rekurentní adaptační vzorce pro výpočet hodnot a ) 0 ( t), b ) 1 ( t), s t (t) mají tvar: ) ) [ a ( t 1) + b ( t 1) ] ) yt a ( t) = α + (1 α) 0 1 st m ( t m) ) ) ) ) b t) = β a ( t) a ( t 1) + (1 β ) b ( t 1 0 [ ] ) 1( s t y t () t + (1 γ ) s ( t m) = γ ) a ( t m 0 t) Koeficienty α,β,γ slouží jako váhy mezi minulou a současnou hodnotou. [2.2] [2.3] [2.4] [2.5] [2.6] Vyrovnanou hodnotu dostaneme ze vztahu: ) ) y ( t) = a0 ( t) s ( t) t t [2.7] Počáteční hodnoty parametrů a ) 0 (0), b ) 1 (0), a s t (t), t = 1-m, 2-m,,0 spočteme pomocí vztahů: ) yr y1 b1 (0) = ( r 1)m ) m ) a0 ( 0) = y1 b1 (0) 2 [2.8] [2.9] ( m, t = 1-m, 2-m,,0 s s t t) = s t+ m m i= 1 i [2.10]

19 Kapitola 2. Popis problému, specifikace cíle 7 kde r je počet let, pro která máme k dispozici pozorování, průměr hodnot pozorování y t v roce j, j= 1,,r a y j je aritmetický s 1 1 r * i = s i + mj r j= 0, i = 1,,m, [2.11] s yt =, t = 1,, m.r y (( m + 1) / 2 i) b1 (0) * t ) j [2.12] kde index j v poslední rovnici představuje číslo roku a index i označuje číslo sezónního období, které odpovídá času t, např. když t = m+1, potom j = 2 a i = 1. Pro vyrovnání je třeba ještě stanovit koeficienty zapomínání α,β,γ. Jejich hodnoty se určí metodou nejmenších čtverců, tzn. že se vezme taková kombinace hodnot α,β,γ která dává nejmenší hodnotu součtu čtverců chyb.[2] Metoda vícenásobné lineární regrese Regresí se rozumí regresní model s regresní funkcí. Proč vícenásobná? Protože se zabývá vícenásobnou závislostí, tzn. že závislá proměnná závisí na větším počtu nezávislých proměnných. Proč lineární? Protože při řešení (metodou nejmenších čtverců) se dostaneme k soustavě lineárních rovnic. Nejprve ale začneme, na pochopení lehčí, jednoduchou lineární regresí a potom přejdeme k vícenásobné lineární regresi. Jak jsme si řekli, každá lineární regrese má tzv. regresní funkci (model), která nám říká, jak závisí závislá proměnná na nezávislých proměnných (u jednoduché lineární regrese je jen jedna závislá proměnná a jedna nezávislá proměnná). Pokud předpokládáme lineární závislost závislé proměnné na nezávislé proměnné, potom má regresní model tvar: Y = a + b. x což je rovnice přímky, kde - Y je závislá proměnná - a je absolutní (též prostý) člen - b je regresní koeficient - x je nezávislá proměnná [2.13]

20 8 Kapitola 2. Popis problému, specifikace cíle Nyní se podíváme na to, co ve vztahu [2.13] známe a co chceme vypočítat a hlavně jak to vypočteme. První co se spočte jsou parametry modelu (tj. absolutní člen a regresní koeficient). Tyto parametry se vypočtou pomocí metody nejmenších čtverců (viz níže Metoda nejmenších čtverců). Po získání parametrů modelu můžeme začít odhadovat hodnoty závislé proměnné z hodnoty zadané nezávislé proměnné pomocí modelu regrese. Jinak řečeno: ve vztahu [2.13] už známe a i b a tudíž můžeme odhadnout velikost Y při zadání hodnoty x. Uvedu nyní příklad, abych objasnil co vyžadujeme, aby nám model vrátil. Nechť máme soubor statistických dat, které uvádějí ceny automobilů (jedné značky) v závislosti na stáří automobilu (dá se předpokládat, že cena automobilu bude s rostoucím stářím klesat). Soubor se dá představit jako tabulka se dvěma sloupci, kde v prvním sloupci je stáří automobilu a v druhém jeho cena. Velikost tabulky (tj. počet řádků tabulky) se označuje jako rozsah statistického souboru. Zjištěná statistická data se vezmou, předají se metodě nejmenších čtverců, která na jejich základě určí koeficienty regresního modelu a tím dostaneme regresní model, jenž můžeme použít na odhad ceny automobilu, pokud známe stáří automobilu. (Tj. když budu vlastnit automobil dané značky a budu ho chtít prodat a nevím jakou cenu si mám říct, tak mě tento model na základě zadaného stáří automobilu vrátí průměrnou cenu mého automobilu). Na základě příkladu uvedu interpretaci koeficientů modelu (a, b). Absolutní člen (a) se v příkladu dá interpretovat jako odhadnutá cena nového automobilu. Regresní koeficient (b) nám udává hodnotu částky, kterou automobil ztratí, když zestárne o jeden rok. Metoda nejmenších čtverců Je založena na minimalizaci součtu kvadrátů odchylek (reziduí) tj. minimalizace rozdílu skutečných hodnot a odhadovaných hodnot. Jejím výsledkem je odhad parametrů daného regresního modelu (tj. odhad absolutního členu a všech regresních koeficientů). Nyní budeme uvažovat regresní model, který bude popsán rovnicí roviny, čili: kde - Y je závislá proměnná - a je absolutní (též prostý) člen - b i jsou regresní koeficienty Y = a + b + 1x1 b2 x2 [2.14]

21 Kapitola 2. Popis problému, specifikace cíle 9 - x i jsou nezávislé proměnné Výraz [2.14] představuje vícenásobnou lineární regresi, neboť závislá proměnná (Y) závisí na dvou nezávislých proměnných (x 1, x 2 ). Odchylka (reziduum) jedné naměřené závislé proměnné v závislosti na dvou naměřených nezávislých proměnných se spočte takto: = Y a b 1x1 b2 x2 Úkolem metody nejmenších čtverců je vypočítat parametry a, b, b 1 2 tak, aby součet kvadrátů všech odchylek (reziduí) byl minimální tj. n n 2 2 S( a, bi ) = j = ( Y j a b1 x1 j b2 x2 j ) = Min, j= 1 j= 1 kde n je počet naměřených dat (tj. rozsah statistického souboru) Pokud hledám minimum funkce, tak její derivace musí být rovna nule. A jelikož S je funkcí více proměnných (v tomto případě 3) musí se parciálně derivovat podle všech proměnných: Např. derivace podle a vypadá takto: 2 ( Y j a b1 x1 j b 2 x 2 j ) = 2 ( Y j a b1 x1 j b 2 x 2 j )( 1) = a j j 2 Y j 2 a 2 b1 x1 j 2 b 2 x 2 j = 0 [2.17] j j j j aby výraz na druhé řádce byl roven nule, musí platit: Y j a b1 x1 j b2 x2 j = j j j j 0 [2.15] [2.16] [2.18] jelikož parametry a, b, b 1 2 jsou v sumách nezávislé na j můžeme je vytknout před sumu a upravit výraz [2.18] na tvar: j = a 1 + b1 x1 j + b2 Y x2 j j j j j Analogicky se provedou derivace pro zbylé dvě proměnné, jejichž výsledky vypadají takto: 2 j x1 j = a x1 j + b1 x1 j + b2 Y x1 j x2 j j j j j [2.19] [2.20]

22 10 Kapitola 2. Popis problému, specifikace cíle Y j x2 j = a x2 j + b1 x1 j x2 j + b2 j j j j x 2 2 j [2.21] Nyní máme tři rovnice o třech neznámých a, b, b 1 2. Těmto rovnicím se říká soustava normálních rovnic. Jsou to lineární rovnice, jejímž řešením dostaneme hledané koeficienty regresní funkce (v tomto případě funkce [2.14]). Teď víme jak vypočíst koeficienty regresní funkce. Ještě bych tu uvedl příklad na model [2.14], rozšířím příklad, který jsem uváděl u jednoduché lineární regrese. Nechť máme statistický soubor, který obsahuje ceny automobilů (jedné značky) v závislosti na stáří automobilu a najetých kilometrech. Interpretace jednotlivých proměnných z modelu [2.14] : - Y představuje odhad ceny automobilu - a odhadnutá cena nového automobilu - regresní koeficient b 1 nám udává, o kolik se změnila cena automobilu, když automobil zestárnul o jeden rok a nenajel žádný kilometr (resp. žádných tisíc kilometrů, to kolik má automobil najeto se většinou udává v tisících kilometrech) - regresní koeficient b 2 nám udává, o kolik se změnila cena automobilu, pokud jsme s ním ujeli jeden tisíc kilometrů a automobil mezitím nezestárl o jeden rok (nebo by se také dalo říci, že nám udává o kolik se průměrně liší cena dvou automobilů, jenž mají stejný rok výroby a v počtu najetých kilometrů se liší o jeden tisíc). - x 1 nezávislá proměnná udávající rok výroby - x 2 nezávislá proměnná udávající počet najetých kilometrů A co nám model vrací? Do modelu zadáme rok výroby našeho automobilu a počet najetých kilometrů a on nám prozradí průměrnou cenu našeho automobilu. (Toto vše je ale za podmínky, že máme stejný automobil pro které se sbíraly statistické údaje z kterých vše vychází). Shrnutí: Pokud závislá proměnná závisí na více než jedné nezávislé proměnné, hovoří se o tzv. Vícenásobné lineární regresi. Její model je popsán pomocí rovnice (roviny, nadroviny). Obecný popis modelu vícenásobné lineární regrese má tvar:

23 Kapitola 2. Popis problému, specifikace cíle 11 Y = a + b x i i kde - Y je závislá proměnná - a je absolutní (též prostý) člen - b i jsou regresní koeficient - x i jsou nezávislé proměnné Hodnoty parametrů (a,b i ) se určí metodou nejmenších čtverců. Model lineární regrese nám potom slouží k odhadu hodnoty nezávislé proměnné na základě zadání závislých proměnných. Nyní si řekneme, jak určit další důležité veličiny (charakteristiky) které nás u lineární regrese zajímají. Jednou z nich je koeficient determinace Koeficient determinace R 2 Určuje nám míru úspěšnosti regresního modelu resp. kolik procent rozptylu vysvětlované proměnné se nám podařilo pomocí modelu vysvětlit a kolik zůstalo nevysvětleno. Nabývá hodnot z intervalu <0;1>. Čím větší číslo, tím je model lepší. Výpočet: R S n i 2 A i= 1 = = n ST ( yi y) i= 1 2 ( y ) i y), kde S A je rozptyl vypočtených hodnot, S T je rozptyl pozorovaných hodnot, y ) i je vypočtená (odhadnutá) hodnota, y i je skutečná (zadaná) hodnota, y je aritmetický průměr. Koeficient korelace R Další charakteristika regresního modelu, udávající intenzitu závislosti závislé proměnné y na nezávislých proměnných x. Vypočte se jako druhá odmocnina koeficientu determinace. Nabývá také hodnot z intervalu <0;1>. Čím větší číslo tím je závislost větší. R = 0 => nezávislost R = 1 => funkční závislost 2 [2.22] [2.23]

24 12 Kapitola 2. Popis problému, specifikace cíle Standardní chyba odhadu S Jak název říká, tato charakteristika nám říká, jak velké chyby jsme se u odhadu dopustili. Spočte se takto: n ) 2 ( y y ) S i i E i= 1 [2.24] S = =, p p kde S E je rozptyl reziduí a p je stupeň volnosti (ve vícerozměrné lineární regresi je p=n-m-1) Kauzální modelování Kauzální znamená příčinný a proto se kauzální modelování zabývá příčinami a jejich důsledky. V kauzálním modelu se vyskytují dva druhy proměnných a to exogenní (což jsou vstupní proměnné, obsahují vstupní data) a endogenní (což jsou výstupní proměnné, které ale mohou být použity i ve výpočtu). Dále model obsahuje rovnice, jenž daný model definují a předepisují výpočet endogenních proměnných za použití číselných hodnot endogenních a exogenních proměnných a také za použití číselných konstant. Před začátkem výpočtu musíme znát předpisy pro výpočet každé endogenní proměnné. Nyní uvedu příklad, z kterého bude snad patrné k čemu je kauzální modelování dobré. Bude to triviální úloha ze základní školy. Představte si, že máte válec, jehož podstava má poloměr r = 2cm a výšku v = 8cm. Vaším úkolem je zjistit jaký je obvod podstavy, jakou plochu podložky válec zaujímá pokud stojí na podstavě (čili zjistit obsah podstavy), kolik látky se vejde dovnitř válce, když má výšku v a kolik látky se vejde dovnitř válce, pokud výšku válce zvětšíme o 5 centimetrů. Člověk je od přírody líný tvor a tak si vezme na pomoc nějaký nástroj a proč nepoužít kauzální model. Takže si teď ukážeme postup, jak definovat kauzální model. Nejprve určíme exogenní a endogenní proměnné. Exogenní proměnné budu značit Y i a budou jimi: Y 1 poloměr kruhu = 2

25 Kapitola 2. Popis problému, specifikace cíle 13 Y 2 výška válce = 8 Y 3 konstanta pí = 3.14 jak je vidět, mohu si jako exogenní proměnnou definovat i konstantu. Endogenní proměnné budu značit X i a budou jimi: X 1 obvod kružnice X 2 obsah kruhu X 3 objem válce X 4 objem zvětšeného válce Je dobré si za název exogenní a endogenní proměnné psát vysvětlující komentáře co daná proměnná znamená. Endogenní proměnné mohou za svým názvem a popisem obsahovat rovnítko za kterým následuje název exogenní proměnné (např. X 1 nějaký komentář =Y 2 ). Takováto definice nám říká, že hodnota X 1 vypočtena v této iteraci se v další iteraci výpočtu dosadí za hodnotu Y 2. Každá endogenní proměnná musí mít definovaný předpis výpočtu. Z toho plyne, že počet endogenních proměnných a počet rovnic musí být stejný, neboť každá rovnice definuje hodnotu právě jedné endogenní proměnné. Předpis se značí stejně, jako endogenní proměnná, tj. X i V našem příkladu to znamená toto: X 1 = 2*Y 3 *Y 1 ; X 2 = Y 3 *sqt(y 1 ); X 3 = X 2 *Y 2 ; X 4 = X 2 *(Y 2 + 5); Tímto máme kauzální model vytvořený (definovaný) a nyní by za nás udělal práci počítač, který by hodnoty vypočetl a zobrazil. Kauzální model si můžeme uložit a kdykoliv se k němu vrátit. Jak je vidět z příkladu, kauzální model nám ulehčuje práci tím, že si můžeme nadefinovat libovolný počet endogenních proměnných. Výpočet endogenních proměnných nemusí být tak triviální a při výpočtu jedné endogenní proměnné se mohu odkazovat na hodnotu jiné endogenní proměnné. Asi každý si teď dokáže představit nějakou složitější situaci, kdy výpočet nějaké hodnoty není úplně jednoduchý, obsahuje složitý výraz a nám by se hodilo znát nějaké dílčí výsledky

26 14 Kapitola 2. Popis problému, specifikace cíle výpočtu. Není nic jednoduššího, než si dílčí výpočet nadefinovat jako endogenní proměnnou a potom se odkázat jen na její hodnotu. Ve výsledku modelu bude jak celkový výsledek hledané proměnné tak i hodnota dílčího výpočtu. (Toto je vlastně vidět i v příkladu výše, kde se v rovnici pro výpočet objemu válce (X 3 ) odkazuji na vypočtenou hodnotu obsahu podstavy (X 2 ).) Nyní tu ještě popíši, k čemu je dobré doplňování exogenních proměnných za endogenní v další iteraci výpočtu, resp. proč toto doplňování model podporuje. V ekonomických výpočtech se často jako exogenní proměnné Y 1,,Y m používají ekonomické ukazatele např. průměrná cena nafty, procento růstu HDP, inflace, přírůstek státního dluhu, kurz měny, atd. Tyto ukazatele se vztahují vždy k jednomu roku (předešlý rok). Endogenní proměnné X 1,,X n představují zase nějaké významné ekonomické ukazatele, ale jejich hodnoty se týkají letošního roku. Kauzální model se pokusí vyjádřit závislost jednotlivých endogenních proměnných na exogenních a endogenních proměnných. Toto vyjádření má tvar: X 1 = F 1 (Y 1,, Y m, X 1,, X n ) X n = F n (Y 1,, Y m, X 1,, X n ) Tato soustava se vyřeší Gauss-Seidel-Newtonovou iterační metodou a tím dostaneme hodnoty X i, i=1,,n v aktuálním roce. Můžeme se nyní pokusit o odhad endogenních proměnných pro příští rok, ale to musíme hodnoty některých proměnných Y j změnit, a přiřadit jim letošní hodnotu. Proto model umožňuje v následující iteraci dosazovat vypočtené endogenní proměnné za exogenní Požadavky na implementaci a cíle práce S využitím dodaných materiálů naimplementovat výše popsané modely. Aplikace by měla být intuitivní se standardním ovládáním a hlavně přehledná. V každé metodě by měla být asi možnost založit si nový model (nový soubor), editovat otevřený soubor, uložit změny provedené v modelu, výsledek by se měl nechat dát vytisknout na tiskárně. Pokud byl soubor editován a změny nebyly uloženy, tak při zavírání okna nebo při otevírání nového souboru se zeptat, zda se mají změny uložit (což patří mezi ty standardní vlastnosti aplikace). Snažit se oddělit logické časti modelů od zobrazovacích částí. Cílem práce je odladit aplikaci tak, aby v ní nebyla žádná chyba resp. aby jich tam bylo co nejméně a aby se s aplikací dobře pracovalo.

27 15 Kapitola 3 Analýza a návrh řešení 3.1. Analýza zdrojů Po prostudování zdrojových souborů staré verze, které mě dodal vedoucí práce, jsem si v hlavě začal utvářet a na papír malovat první představy, jak by asi aplikace měla vypadat. Každý model ve staré verzi je uložen v samostatném souboru. V mé aplikaci bude každý model uložen v samostatném balíčku, který bude obsahovat potřebné třídy k fungování modelu. Z každém souboru je kromě výkonnostního kódu modelu ještě spousta kódu, který implementuje zobrazení a rozvržení na obrazovce. V mé aplikaci se budu snažit oddělit výkonnostní kód modelu od kódu zabývajícího se zobrazováním grafických elementů. Některé časti zdrojového kódu ve staré verzi jsou si dost podobné, třeba výzva k ukládání souboru, tisku výsledku, otevírání souboru,, tj. operací které se typicky vyskytují v nějakém menu. Takže v aplikaci bude menu, které bude pro všechny metody stejné a bude obsahovat volání základních operací se souborem: založení nového souboru, otevření existujícího souboru, uložení souboru, vytištění výsledku, zavření okna. Dále by mohla být v menu položka, ve které by se dal nastavit použitý zobrazovací jazyk (čeština, angličtina a možná španělština. Původní verze programu byla psána a určena pro nasazení v Chile, kde je úředním jazykem Španělština). Každá položka menu bude mít nastavenou akci, kterou při vyvolání provede (např. zavolání nějaké metody z modelu). Každý model bude zobrazován v nějakém okně u kterého by se mohly nastavovat jeho vlastnosti, třeba titulek okna, velikost okna, události při zavření okna. Velikost okna by se při zavření mohla zapamatovat a při opětovném otevření se mohla zase nastavit. Toto se bude dělat v každém modelu, takže by se mohla využít jedna užitečná vlastnost OOP (Objektově Orientované Programování) a to dědění s využitím abstraktní třídy, které Java umožňuje vytvářet. Napsat si abstraktní třídu s názvem AbstractOkno, jenž bude potomkem třídy javax.swing.jframe. Tato abstraktní třída bude předkem všech oken u kterých si budu chtít zapamatovat velikost okna při zavření a poté znovu nastavení této velikosti při opětovném otevření tohoto okna. Také bych mohl mít metodu vracející minimální velikost okna jakou musí okno mít.

28 16 Kapitola 3.Analýza a návrh řešení Modely budou mít určitě spoustu stejných vlastností, které se v každém modelu budou provádět, ale mohou se lišit implementací. Takže by asi stálo za to si napsat rozhraní se společnými metodami pro všechny modely (např. ukládání nebo načítání souboru. Každý model bude mít jinou strukturu ukládaného a načítaného souboru, ale možnost uložit soubor a potom ho i načíst chci mít v každém modelu). Interface by měl obsahovat například metodu ulož soubor, která by se zavolala při výběru položky ulož z menu a uložila by model do souboru v patřičném formátu. Podobně i u načítání souboru. Alternativou by mohlo být, místo rozhraní si udělat opět abstraktní třídu jako rodiče všech modelů. Pokud by byla implementace nějaké metody shodná pro více modelů, mohla by se implementovat v této abstraktní třídě. a v potomcích, by se už nemusela implementovat. U potomků, kde by byla implementace odlišná, tak by se jednoduše daná metoda překryla. Metody, jejichž implementace by se lišili ve všech modelech by se nadefinovali jako abstraktní a jejich implementace by se provedla až uvnitř každého modelu. Při editaci údajů se bude muset provádět kontrola, zda zadané údaje odpovídají hodnotám, které v daném poli očekáváme (např. kontrola celočíselného typu, desetinného čísla, formátu roku, atd.). Editace bude muset obsahovat metodu zkontroluj, která bude mít na starosti kontrolu všech polí formuláře. Vytvořím si interface, který bude obsahovat všechny společné metody pro všechny editační okna. Co se týče výpočetní logiky jednotlivých modelů, tak ve Wintersově metodě půjde jen o to dobře naimplementovat rekurentní vzorce (viz.[2.4], [2.5], [2.6]). Lineární regrese je trochu složitější, neboť hodnotami nezávislých proměnných x i v rovnici [2.13] jsou funkční hodnoty funkcí, které definuje uživatel. Tzn. že zadávané hodnoty x i v modelu lineární regrese, se nedosadí do rovnice [2.13], ale dosadí se nejprve do rovnic definovaných v modelu uživatelem a až výsledky z funkcí se dosadí za příslušné x i do rovnice [2.13], tzn. že počet nezávislých hodnot x i v rovnici [2.13], bude roven počtu uživatelem definovaných rovnic v modelu. V kauzálním modelování, stejně tak i v modelu lineární regrese bude trochu problém s načtením rovnic a jejich interpretací. Všechny tyto problémy a záludnosti jsou již vyřešené ve staré verzi, tak si je s dovolením mého vedoucího dovolím převzít a použít v mé aplikaci. To jak jsou tyto problémy řešeny a hlavně zpracování a interpretace rovnic je vysvětleno v Realizaci (Kapitola 4).

29 Kapitola 3.Analýza a návrh řešení Návrh řešení V předešlé kapitole jsem nastínil, jak by asi měla aplikace vypadat. Tuto představu teď zobrazím pomocí UML diagramu a to konkrétně pomocí diagramu tříd. obrázek 1Class diagram

30 18 Kapitola 3.Analýza a návrh řešení 3.3. Implementační prostředí Aplikaci budu programovat v NetBeans IDE 6.5. Toto vývojové prostředí použiji kvůli tomu, že ho používám v práci a také proto, že se mě líbí jeho designér pro návrh formulářů. Jednoduše se na něj umístí komponenty a hlavně se v něm dobře nastavuje rozvržení (layout), i když si jen s designérem nevystačím a nějaké komponenty budu muset do aplikace vložit ručně. Použitý programovací jazyk je Java verze 1.6. Tudíž pro správnou činnost aplikace bude vyžadováno mít na počítači nainstalovánu Javu 1.6 (resp. JRE 1.6) nebo vyšší Technologie Pro práci s GUI jsem použil knihovnu Swing, která se nachází v balíčku javax.swing Swing Každé GUI se skládá z kontejnerů (JFrame, JPanel, ) obsahující komponenty, což jsou různá tlačítka, textová pole, popisky, apod. Důležitou roli v návrhu GUI mají tzv. Layout Managers neboli správci rozmístění, kteří nám určují, jak se budou seskupovat komponenty v kontejnerech. Kontejnery Každé okno aplikace bude samostatný JFrame, bude obsahovat buď rovnou komponenty a nebo bude rozdělen na části pomocí kontejnerů JPanel, do kterých se potom vloží komponenty. K tomuto návrhu rozmístění použiji již zmiňovaný designér obsažený v NetBeans IDE. Layout Manager Java nám nabízí tyto layout managery: BorderLayout umožňuje zarovnat komponentu v kontejneru na pět míst: doprava, doleva, nahoru, dolu nebo do středu kontejneru. BoxLayout uspořádá komponenty v kontejneru do samostatných řádků resp. sloupů CardLayout dovoluje implementovat oblast, ve které se zobrazují různé komponenty v různý čas (tím různým časem mám na mysli

31 Kapitola 3.Analýza a návrh řešení 19 vykonání nějaké události např. změna stavu nějaké komponenty, většinou to bývá combo box nebo kliknutí na tlačítko). FlowLayout je výchozí rozvržení pro každý nově vzniklý JPanel. Umisťuje na jeden řádek jednu komponentu za druhou a když už není kontejner dost široký pokračuje na dalším řádku. GridBagLayout je asi nejflexibilnější, rozdělí kontejner na mřížku a komponenty se mohou umísťovat do jednotlivých částí mřížky. Umožňuje nastavit různé šířky řádků a sloupců, takže dosáhneme skoro libovolného rozvržení komponent v kontejneru. GridLayout rozdělí kontejner na požadovaný počet řádků a sloupců, nastaví všem komponentám stejnou velikost a vyplní jimi danou mřížku GroupLayout pracuje samostatně s vodorovným a svislým rozložením, což má za následek, že každá komponenta v kontejneru musí být definovaná dvakrát SpringLayout umožňuje nastavovat vzdálenosti okrajů mezi jednotlivými komponentami Já budu v aplikaci používat ten nejflexibilnější manažer rozložení a to GridBagLayout. Komponenty JLabel vytvoří popisek. Hlavně se používá k popisu komponenty např. vstupního pole. A nebo se používá k zobrazení nějaké krátké informace pro uživatele. JTextField jednoduché vstupní pole. Konstruktor má dva parametry, prvním je počáteční text, druhým je délka pole (tj. počet znaků). Pro získání či nastavení hodnoty se používají metody gettext() a settext(string s) JButton tlačítko, které ovšem při vytvoření nemá žádnou funkci, jeho funkčnost se mu musí nadefinovat tím, že se mu nastaví posluchač událostí (viz. události) JCheckBox klasická zaškrtávající položka (tlačítko) známá například i v HTML. Konstruktor má dva parametry, prvním je text,

32 20 Kapitola 3.Analýza a návrh řešení který se u tlačítka zobrazí, druhý parametr je true nebo flase a značí počáteční zatržení položky JScrollPane můžeme do ní vložit libovolnou komponentu a tím ji zajisti její scrollování při zobrazení tj. posouvání komponenty pomocí svislých a vodorovných posuvníků JtextArea slouží jako textový vstup, podobně jako JTextField, ale na rozdíl od něj obsahuje více řádku. Tato komponenta se dá využít i jako výstupní, tj. pro zobrazení víceřádkového textu. Dá se ji totiž nastavit vlastnost editable, která když je nastavena na false, tak do komponenty nemůžeme zapisovat Události (events) Při používání událostí mluvíme o tzv. událostmi řízeném programování. Události vznikají činností uživatele při používání aplikace, např. posunutí myši, kliknutí myši, stisknutí klávesy, atd. Komponenta může vyvolat řadu různých událostí. Pro každý typ události existuje v javě její posluchač (listener), který událost zachytí a vyvolá metodu pro obsloužení události. Této metodě se říká handler. Pokud máme na formuláři tlačítko a chceme, aby se při nějaké akci tlačítka (např. stisknutí tlačítka) vypsala do konzole zpráva, musíme provést toto: přiřadit tlačítku posluchače pro akci tj. button.addactionlistener( ) parametrem metody addactionlistener je instance anonymní třídy implementující rozhraní ActionListener, čili vytvoříme novou instanci anonymní třídy: new ActionListener() ve které budeme muset překrýt metodu actionperformed(actionevent e){ } metoda actionperformed(actionevent e){ } bude ve svém těle obsahovat handler zajišťující výpis zprávy. Kód by mohl vypadat takto: JButton but = new JButton( Vypiš zprávu ); but.addactionlistener(new ActionListener(){ //anonymní třída public void actionperformed(actionevent e){ vypiszpravu(); // handler }

33 Kapitola 3.Analýza a návrh řešení 21 }); public void vypiszpravu(){ //implementace handleru System.out.println( Bylo stisknuto tlačítko ); } Shrnutí: Zmínil jsem tu základní dva typy kontejneru (JFrame, JPanel), dále jsem uvedl šest komponent (swing obsahuje samozřejmě daleko více komponent) o kterých si myslím, že je použiji při vytváření aplikace. A dále jsem se zmínil malinko o událostech, bez kterých by aplikace nemohla fungovat. Uvedl jsem zde jen základní pojmy. Povídání o swingu a všech jeho možnostech by vydalo na celou knihu. Já jsem zde uvedl jen ty vlastnosti, které jistě při implementaci použiji. Pro detailnější informace ohledně používání swingu a všech jeho možnostech odkazuji na výborný tutoriál na stránkách společnosti Sun microsystem [5].

34 22 Kapitola 3.Analýza a návrh řešení

35 23 Kapitola 4 Realizace V této kapitole popíši realizace jednotlivých modelů. Zaměřím se hlavně na zajímavé části implementace. Popis se budu snažit prokládat obrázky aplikace. Nejdříve popíši části aplikace Rozdělení aplikace Aplikace se skládá z těchto balíčků: cz.cvut.fel.tes.app v tomto balíčku je třída s hlavní spouštěcí metodou a potom třída s úvodní obrazovkou obrázek 2 Úvodní okno

36 24 Kapitola 4. Realizace cz.cvut.fel.tes.core tento balíček obsahuje třídy o AbstractOkno, což je abstraktní třída a zároveň rodič všech oken aplikace. Obsahuje metodu pro nastavení velikosti okna (velikost okna se načítá ze souboru (property souboru)). Dále obsahuje metodu pro získání operace jenž se má provést při zavření okna pomocí křížku v pravém horním rohu. Standardně je nastavena na hodnotu DISPOSE_ON_CLOSE, což znamená, že se okno při stisku křížku zavře a prostředky které si alokoval se z paměti uvolní. Např. ve třídě s úvodní obrazovkou, která je také potomkem této třídy, je tato metoda překryta a je v ní hodnota nastavena na EXIT_ON_CLOSE, což znamená, že se celá aplikace ukončí a všechny alokované prostředky se z paměti uvolní. o interface EditInterface jenž implementují všechny třídy, které se starají o editaci položek. Obsahuje jen jednu metodu, a to metodu checkallhodn(). o interface ISetMyWindow ve kterém jsou deklarovány metody, jenž musí každé okno implementovat. Např. metody vracející název položky pod kterou je v property souboru uložena šířka a výška okna. o ExitListener obsluhuje událost zavření okna pomocí křížku, kontroluje zda v modelu nastaly změny a pokud ano, tak zobrazí dialog s dotazem na uložení aplikace o MyPrintable připravuje dokument na tisk resp. připravuje jednu stránku pro tisk. Implementuje rozhraní Printable obsahující metodu print, která má na starosti tisk této stránky. o Tisk samotný tisk, odeslání dokumentu na tiskárnu. Konstruktor má dva parametry: objekt typu Book a tiskovou úlohu. Třída obsahuje jen jednu metodu tiskni(). Metoda zobrazí dialog (klasický, ve kterém můžete nastavit vlastnosti tiskárny, počet kopií, atd.) a po potvrzení tisku dokument vytiskne. O objektu Book se ještě zmíním u předka modelů, ve které probíhá příprava textu pro tisk. o Utils obsahuje různé utility, což jsou statické metody, které se dají volat z libovolného místa aplikace. Obsahuje třeba metody, které kontrolují, zda řetězec tvoří desetinné či celé

37 Kapitola 4. Realizace 25 číslo (metody doublecheck(string str), intcheck(string str) ). dále metodu vracející formát desetinného čísla, atd. cz.cvut.fel.tes.core.action tento balíček obsahuje definice jednotlivých akcí položek menu. Na příkladu v kapitole Swing v oddílu události jsem ukazoval zachycení události pomocí anonymní třídy, která implementovala rozhraní ActionListener, tento postup platí vždy. Máme ale i jinou možnost, jak některým komponentám nastavit akci (to některým je důležité, protože to nejde u všech komponent), tj. co se má provést, když je na ni vyvolána akce (většinou jde o kliknutí nebo stisknutí tlačítka enter). Komponentě se nastaví akce pomocí metody setaction(javax.swing.action a). V parametru se předává akce, což není nic jiného, než třída, která je potomkem třídy javax.swing.abstractaction a překrývá metodu actionperformed() ve které je uveden handle (tj. metoda, která se má při vybrání položky provést). Akce se dají nastavovat např. tlačítkům nebo zmíněným položkám v menu. cz.cvut.fel.tes.core.componenty tento balíček obsahuje mnou vytvořené komponenty. o MethodMenu horní menu, které se zobrazuje v každém modelu, nabízející nám mimo jiné operace se souborem obrázek 3 Ukázka komponenty MethodMenu

38 26 Kapitola 4. Realizace o DoubleLabel dvě komponenty JLabel vedle sebe. Používám ji při zobrazování načtených hodnot. První label tvoří popisek (tučné písmo) a druhý hodnotu (netučné písmo). obrázek 4 Ukázka komponenty DoubleLabel o ErrWindow slouží k zobrazení chyby nebo varování obrázek 5 ErrWindow o Label_DoubleTextField komponenta složená z jedné komponenty JLabel (slouží jako popisek) a dvou komponent JTextField (první představuje komentář a druhá hodnotu). Tuto komponentu používám např. v editaci kauzálního modelu, pro zadávání hodnot exo- a endogenních proměnných tj. zadání jak komentáře, co daná hodnota představuje, tak i její hodnotu. obrázek 6 Ukázka komponenty Label_DoubleTextField o Label_TextField komponenta složena z jednoho JLabel a jednoho JTextField. Podobně jako Label_DoubleTextField ji používám v editaci, kdy potřebuji popisek a jedno vstupní pole. obrázek 7 Ukázka komponenty Label_TextField

39 Kapitola 4. Realizace 27 o TripleLabel tři komponenty JLabel za sebou. Používám je pří zobrazování výsledků. Mám u ní napsanou metodu pro speciální ohraničení obrázek 8 Ukázka dvou komponent TripleLabel Na obrázku Ukázka dvou komponent TripleLabel jsou vidět dvě komponenty TripleLabel z nichž první má zapnuté ohraničení spodní části a ohraničení mezi položkami a druhá komponenta má zapnuté ohraničení jen mezi položkami. To jsou dva druhy ohraničení, které se dají u této komponenty nastavit. Ještě existuje možnost nenastavit žádné ohraničení. U komponent sloužících pro zobrazování výsledku či načítání hodnot jsou napsané příslušné metody pro nastavování a získávání textu z polí. Např. u komponenty Label_TextField je metoda getvalue(), která vrátí zadanou (vyplněnou) hodnotu. cz.cvut.fel.tes.core.componenty.fileoperations obsahuje třídy které se starají o zobrazování dialogového okna pro otevření a uložení souboru. Např. ve třídě FileUtils mám definovanou statickou metodu vracející příponu souboru k danému modelu, dále metodu, která mě z cesty k souboru vrátí příponu. cz.cvut.fel.tes.icon obsahuje obrázky ikon zobrazujících se v menu cz.cvut.fel.tes.methods obsahuje jednu abstraktní třídu AbstractMethod jenž je potomkem třídy AbstractOkno a zároveň je rodičem všech modelů. Obsahuje tyto abstraktní metody: o getmethod_name_short() vrací zkratku modelu, která se používá při určování koncovky souboru. Každý model obsahuje znakovou konstantu METHOD_NAME_SHORT, ve které je uložena zkratka modelu. o getborderlabel() vrací klíč pod kterým je v property souboru uložen text pro titulek okna. o nactiparametry() načte obsah otevíraného souboru o vypocet() v této metodě se volá výpočet pro daný model

40 28 Kapitola 4. Realizace o setfirstvypocet(boolean fv) tato metoda se využívá k nastavování viditelnosti resp. aktivnosti některých komponent (ve Wintersově metodě má trochu jiný význam) o edit() vytváří se v ní instance okna pro editování hodnot daného modelu o ulozsoubor(string fpath) uloží soubor na danou adresu. Tato metoda je abstraktní, protože každý model má jinou strukturu ukládaného souboru. o novysoubor() zkontroluje se v ní, zda se soubor neupravil, pokud ano tak zobrazí výzvu k uložení souboru, jinak vyčistí formulář a zobrazí prázdné editační okno pro zadání nových hodnot o gettiskmessage() vrátí text, který se bude tisknout Obsahuje tyto neabstraktní metody (společné všem modelům): o setpathusefile(string str) nastaví třídní proměnnou obsahující absolutní cestu k načtenému (používanému) souboru o nastavtitleokna(string str) titulek okna tvoří název používaného modelu a za ním je dále přidán řetězec obsažený v parametru str o nastavtitleokna() v této metodě se zavolá předchozí metoda s hodnotou parametru o showgraph() tato metoda má prázdné tělo a je překryta pouze ve Wintersově metodě. Je tu připravena pro případ, že by se v budoucnu rozšířila aplikace o zobrazování nějakých grafů. o ulozsoubor() volá se, pokud se v menu vybere položka ulož, v těle této metody se volá abstraktní metoda ulozsoubor(string fpath) s hodnotou parametru fpath rovnu absolutní cestě aktuálně používaného souboru. o tisk() na začátku této metody se zavolá abstraktní metoda gettiskmessage(), potom se vytvoří tisková úloha, zobrazí se dialogové okno, kde se nastaví vlastnosti tištěné stránky (tj. velikost papíru, ), text určený pro tisk se zpracuje, rozdělí

41 Kapitola 4. Realizace 29 se na řádky, spočte se, kolik řádek se vejde na jednu tištěnou stránku, vytvoří se tzv. kniha, což je objekt tipu Book. Jedná se vlastně o takový dokument, který se skládá z jednotlivých stránek, jenž se potom vytisknou. Stránky se do knihy přidávají pomocí metody append(printable painter, PageFormat pf), v mé aplikaci se konkrétně přidává takto: book.append(new MyPrintable(tiskovaArea), pf); kde první parametr je instance mé třídy (viz třída MyPrintable v balíčku cz.cvut.fel.tes.core) a druhý parametr je formát stránky, který se definoval v dialogovém oknu. Když je kniha vytvořená vytvoří se instance třídy cz.cvut.fel.tes.core.tisk které se pomocí konstruktoru předá kniha společně s tiskovou úlohou. Tento balíček obsahuje podbalíčky (winters, regression, kauzalmodel), kde jsou implementovány jednotlivé modely. Na tyto podbalíčky se teď podíváme trochu podrobněji. Ještě se zmíním o tom, co jsou to property soubory. V některých balíčcích jsou obsaženy vedle souborů s příponou.java ještě soubory s příponou properties. Jedná se o tzv. property soubory. Struktura souboru je jednoduchá. Na řádku jsou dva textové řetězce oddělené znaménkem =. Nalevo od = je název klíče a napravo je hodnota tohoto klíče. Pokud chceme získat hodnotu schovanou pod klíčem, tak v aplikaci zavoláme metodu java.util.resourcebundle.getbundle( <<balíček>>,tesapp.uselang). bundle.getstring( <<klíč>> ) kde <<balíček>> - představuje název balíčku, ve kterém se nachází property soubor <<klíč>> - je název klíče, jehož hodnotu chci získat TesApp.useLang je statická proměnná ve třídě TesApp ve které je poznamenaná zkratka právě používaného jazyka. Jak ukázka volání metody naznačuje, používají se property soubory kvůli vícejazyčné lokalizaci. Všechny potřebné texty se zaznamenají do property souborů a potom už stačí přeložit výrazy u jednotlivých klíčů do danného jazyka. Výhodou je, že jsou to samostatné soubory a tudíž se nemusí sahat do kódu a měnit texty tam.

42 30 Kapitola 4. Realizace 4.2. Implementace modelů Podíváme se teď, jak jsem modely realizoval Wintersova metoda Nachází se v balíčku cz.cvut.fel.tes.methods.winters. Hlavní třídou, která vše řídí je třída Winter. Je to potomek abstraktní třídy AbstractMethod takže musí překrývat všechny její abstraktní metody (viz abstraktní metody). Struktura jednotlivých modelů je podobná, takže u tohoto modelu popíši strukturu malinko podrobněji a u zbývajících se zaměřím jen na odlišnosti. Při vytvoření instance této třídy se provede toto: - zavře se (resp. schová se) úvodní okno - inicializuje se kontejner tvořící okno modelu a provede se základní rozdělení kontejneru na části - do jednotlivých částí kontejneru se přidají jednotlivé komponenty - nastaví se posluchač pro zavření okna pomocí křížku - nastaví se titulek okna, přidá se menu - zkusí se načíst hodnoty z naposledy používaného souboru - zobrazí se okno modelu Pokus o načtení hodnot se provádí v metodě tryreadfile() kde se nejdříve otevře property soubor, ve kterém jsou uložené informace týkající se aplikace (rozměry jednotlivých oken a také naposledy používané soubory u jednotlivých modelů), pokud je v souboru uložena adresa naposledy používaného souboru a pokud soubor existuje, tak se jeho hodnoty načtou. Načítání hodnot probíhá v metodě nactiparametry(). Zde se do titulku okna přidá k názvu modelu ještě název souboru. Otevře se soubor pro čtení a načtou se z něj hodnoty. Po načtení hodnot se zaznamená, že se jedná o první volání výpočtu (tzn. firstvypocet = true;) a zavolá se metoda vypocet(). Metoda vypocet(). Pokud se jedná o první volání výpočtu, tak se vytvoří instance objektu Vypocet tj. zavolá se konstruktor. Pokud se o první výpočet

43 Kapitola 4. Realizace 31 nejedná (tzn. že se nezměnila vstupní data ), tak chce uživatel určit prognózu do dalšího období a v tom případě se volá vysledek.cal_value(false); kde vysledek je instance třídy Vypocet. Nyní se podíváme na třídu Vypocet ve které je implementovaná Wintersova metoda, resp. výpočetní logická část. Pomocí konstruktoru se předají hodnoty parametrů. V konstruktoru se nastaví proměnné: - delkapredpov rozumí se tím délka okénka použitého pro předpověď - L počet měření v jedné sezóně - delkaserie celkový počet měření - x[i] naměřené hodnoty - alfa, beta, gama koeficienty zapomínání neboli váhy mezi starou a novou hodnotou - mesic_ini, rok_ini počáteční měsíc a rok výpočtu Po inicializaci proměnných se v konstruktoru zavolá: Cal_Coef(); a Cal_Value(true); Metoda Cal_Coef() jak už asi název napovídá vypočítává nějaké hodnoty (koeficienty), přesněji řečeno počítají se tu hodnoty parametrů 0 ( ), b ) 1 ( t), s t (t) podle vzorců [2.4], [2.5], [2.6] které byly zmíněny v kapitole 2.2.1Wintersova metoda. Ukázka kódu, jak jsou tyto vzorce implementovány for(int i=first;i<delkaserie;i++){ temp = a; // zapamatuj si starou hodnotu parametru a s=c[promj]; // zapamatuj si starou hodnotu sezónní složky a = alfa * x[i] / s + unoma * (a+b); //výpočet parametru a b = beta * (a-temp) + unomb * b; //výpočet parametru b c[promj] = gama * x[i] / a + unomg * s; //výpočet parametru c promj++; //posun na další měření if(promj>=l){ promj = 0; } }

44 32 Kapitola 4. Realizace Pozn. proměnná promj slouží jako index do pole c které obsahuje jednotlivé hodnoty sezónní složky pro danou sezónu. Neboli hodnota položky c[i] odpovídá v teorii (kapitola 2.2.1) hodnotě (t), kde t=i. s t Metoda Cal_Value(boolean first_call). Parametr first_call nám udává, zda se metoda volá poprvé, resp. jestli uživatel chce provést předpověď pro další období, tak má tento parametr při volání hodnotu false. V této metodě se počítá předpověď (odhad) pro čas t+τ na základě hodnoty v čase t podle vzorce: ) ) ) y t) ( a ( t) + b ( t) τ ) s ( t + ), t+ τ ( = 0 1 t+ τ m τ m ve kterém když za τ dosadíme 0, dostaneme vzorec [2.7]. V kódu má tvar: xp[i]=(a+b*(frst+i))*c[i]; Po dokončení této metody, se v metodě vypocet() zavolá metoda vypisvysledek(), která zobrazí vypočtená data. obrázek 9 Okno po načtení souboru se zobrazeným výsledkem

45 Kapitola 4. Realizace 33 Výsledek si můžeme zobrazit ve formě grafu. K tomu nám slouží metoda showgraph(), ve které se zavolá konstruktor třídy Graph. Konstruktor má tvar: Graph(String title, double xp[], String size), kde title je popisek okna, pole xp obsahuje hodnoty, které chceme zobrazit a parametr size udává velikost pole (počet položek v poli) xp. Třída Graph je potomkem třídy JFrame. Pro vytvoření grafu se používá knihovna jfreechart, která umožňuje vytvářet několik druhů grafů (viz [6] ). Graf se vytvoří tak, že se nejdříve vytvoří tzv. dataset, který obsahuje hodnoty jenž mají být zobrazeny. Potom se zavolá metoda createchart(categorydataset dataset), ve které se graf vytvoří, nastaví se mu základní vlastnosti (např. barva pozadí, barva ohraničení, atd.). Graf je představován objektem typu org.jfree.chart.jfreechart. Vytvoří se takto JFreeChart chart = ChartFactory.createBarChart( ), kde metoda createbarchart( ) nám říká, že se vytvoří sloupcový graf. Podle toho, jaký graf chcete vytvořit, tak se volá příslušná metoda. Parametry metody createbarchart( ) jsou: - nadpis grafu - popis vodorovné osy - popis svislé osy - dataset (tj. data, která chceme zobrazit) - orientace grafu (vertikální, horizontální) - jestli chceme zobrazit legendu - jestli chceme zobrazit tooltips - jestli chceme zobrazit url Další třídou obsaženou v balíčku winters je třída Edit. Slouží k opravě údajů nebo k zadání nových údajů. Její instance se vytvoří v metodě edit() ve třídě Winter. Ukázka jak může vypadat okno pro úpravu položek.

46 34 Kapitola 4. Realizace obrázek 10 Editace položek obrázek 11 Založení nového souboru

47 Kapitola 4. Realizace 35 Ve třídě Edit pro vyplnění polí ve formuláři slouží metody sethodn() (slouží k zobrazení parametrů metody) a metoda showhodn() (slouží k zobrazí naměřených hodnot). Na poli délkasérie je přidán poslouchač focuslistener, který při ztrátě focusu (tj. opuštění kurzoru), vygeneruje tolik polí pro naměřená data, kolik je číslo v tomto poli. Tato třída implementuje rozhraní EditInterface čili musí implementovat jeho metodu checkallhodn() jenž kontroluje: - zda má rok správný formát, tj. YYYY - zda číslo počátečního měsíce je v rozmezí zda v polích, kde se očekává celé číslo, je celé číslo - jestli je desetinné číslo tam kde se očekává (alfa, beta, gama, naměřené hodnoty, ) Po stisku tlačítka OK se provede kontrola a pokud je někde chyba, tak se vypíše Warning, jinak se zobrazí okno modelu se změněnými daty a vypočtenými novými hodnotami. obrázek 12 Warning při zadání špatné hodnoty alfa Posledními třídami v balíčku cz.cvut.fel.tes.methods.winters jsou MyPrintDialog což je dialogové okno zobrazující se po výběru možnosti tisku, ve kterém si vybíráte co vše si přejete vytisknout.

48 36 Kapitola 4. Realizace obrázek 13 Ukázka dialogového okna MyPrintDialog Třída MyPrintAction se stará o ošetření stisku tlačítka OK v okně třídy MyPrintDialog. Při stisku OK se zaznamená do pole vyber, jenž je obsahem třídy MyPrintDialog, jaká položky byly vybrány. Instance třídy MyPrintDialog se vytváří ve třídě Winter v metodě gettiskmessage(). V této metodě, se podle toho, jaké položky byly vybrány, vytváří text, který bude vytištěn. Ovládání modelu je vysvětleno v kapitole uživatelská příručka Model vícenásobné lineární regrese Třída představující okno modelu je Regression. Při vytváření instance se provedou stejné operace, jako při vytváření instance Winterse, tj. zavře úvodní okno, inicializace kontejneru a proměnných, načtení hodnot naposledy používaného souboru, zobrazení okna modelu. Tyto všechny akce jsou podobné, jako ve Wintersově model s malými obměnami ve zobrazování. Model lineární regrese se liší malinko od popsaného modelu v teorii (Metoda vícenásobné lineární regrese) tím, že tento model nám umožňuje hodnoty nezávislých proměnných x i, ve vzorci [2.22], vyjádřit jako funkce (formule) jejichž tvar zadá uživatel. Uživatel potom zadává tvar formulí, hodnotu závislé proměnné Y a velikost nezávislých proměnných x i. Pokud chceme, aby zadávané hodnoty nezávislých proměnných byly hodnotami nezávislých proměnných x i ve vzorci [2.22] tak při zakládání nového souboru vybereme možnost, že nechceme definovat regresní model (viz Uživatelská příručka). Potom budou mít formule

49 Kapitola 4. Realizace 37 tvar: F 1 =x 1, F 2 =x 2,, F n =x n. Pokud si přejeme, aby hodnoty nezávislých proměnných x i ve vzorci [2.22] měly nějakou speciální hodnotu, která se vypočte ze zadávaných hodnot nezávislých proměnných, potom požadovaný tvar výpočtu definujeme jako formuli F i. Tzn. že tvar vzorce [2.22] by se dal napsat takto: Y = a + bi Fi ( x j ) i [2.25] Uvedu jednoduchý příklad, kdybychom odhadovali cenu pozemku v závislosti na jeho velikosti (tj. výměře S) a k dispozici bychom měli jen rozměry pozemku (tj. šířka x 1 a délka x 2 ) a nechtěli pokaždé ručně počítat výměru (tj. x 1.x 2 ), definovali by jsme si formuli: F= x 1.x 2, jenž by se dosadila do výrazu [2.22] jako hodnota x. (V tomto případě by nešlo o vícenásobnou lineární regresi, ale jen o jednoduchou, protože cena by závisela pouze jen na výměře.) Teď si povíme, jak aplikace zpracovává zadané hodnoty, tj. statistický soubor (naměřené (vypozorované) hodnoty závislých a nezávislých proměnných), jak zpracovává zadané formule, jak je implementována metoda nejmenších čtverců (slouží k odhadu parametrů regresního modelu). Všechny potřebné výpočty jsou definovány ve třídě AlgoritmusRegrese. Každá načtená formule se vyjádří, jako znakový řetězec (tj. provede se překlad do vlastního vnitřního kódu). Tento překlad se provádí metodou compexpresion(string exp) jejímž parametrem je načtená formule a výsledkem přeložený (zakódovaný tvar) tvar. Načtená formule se analyzuje pomocí LL(1) analyzátoru. Ve třídě AlgoritmusRegrese mám metodu lexan(), která vrací lexikální symbol (token), resp. přiřazuje hodnotu globální proměnné sy, která představuje naposledy načtený token (lexikální symbol). Pro lexikální analýzu máme tyto tokeny: - XVARS značí nezávislou proměnnou - NUMS číselná hodnota - FUNS funkce - PLUSS, MINUSS TIMESS, DIVIDES matematické operátory +,-,*,/ - LPARS, RPARS závorky ( a ) - EOFS konec formule - EROS chyba při analýze formule

50 38 Kapitola 4. Realizace Seznam možných tokenů je v aplikaci definován jako výčtový typ (enum) Symbol. Ve formuli mohou být požité tyto funkce, zapsané jako: - ABS absolutní hodnota - ARCTAN arctg - COS kosinus - SIN sinus - EXP exponenciální funkce - LN přirozený logaritmus - SQR druhá mocnina - SQRT druhá odmocnina Gramatika pro LL(1) anlýzu vypadá takto: E + T Re E {1} Re E T Re E ε T F Rt F {2} v F {3} n F ( E ) F f ( E {4}{5} ) Re + T {6} Rt Re - T {7} Rt Re ε Rt * F{8} Rt Rt / F{9} Rt Rt ε

51 Kapitola 4. Realizace 39 Tabulka přechodů vypadá takto: + - * / v n ( ) f ε E T F Re Rt Kde E,T,F,Re,Rt jsou neterminální prvky (představující: E = výraz, T = člen, F = faktor(složka), Re = zbytek výrazu, Rt = zbytek členu) a terminální prvky jsou: +, v, n, f, -, *, /, (, ) kde: v = proměnná, n = číslo, f = funkce. Výrazy {i}, i = 1,, 9 v gramatice znamenají: - {1} compadr(zero_val) - {2} compadr(valind) - {3} compadr(lookup(numval)) - {4} compile((byte) fnnum) - {5} compile(fun_op) - {6} compile(plus_op) - {7} compile(minus_op) - {8} compile(times_op) - {9} compile(divide_op) V modelu mám pole valtab typu double, které obsahuje číselné hodnoty proměnných konstant. Proměnná valind je jen ukazatel do pole valtab. NumVal je hodnota čísla, vyskytujícího se ve formuli, tj. číselná hodnota tokenu NUMS. Metoda lookup(double rx) hledá číslo rx v poli valtab a vrací jeho pozici v tomto poli. ZERO_VAL je konstanta udávající, kde se v poli valtab nachází hodnota 0. Je nastavena na konec pole. Proměnná fnnum představuje index do pole kwt, což je pole klíčových slov resp. pole všech názvů funkcí, které mohou být ve formuli použity. Čili proměnná fnnum nám říká, jaká funkce byla ve formuli použitá.

52 40 Kapitola 4. Realizace FUN_OP, PLUS_OP,MINUS_OP, TIMES_OP, DIVIDE_OP jsou konstanty a představují operační kódy jednotlivých operací. Funkce compadr(int adr) společně s funkcí compile(byte cd) vytváří kód (vnitřní, vlastní kód) formule. Funkce compadr(int adr) dělá to, že vezme číselný parametr který dostane, vypočte prefix adresy a adresu, což jsou také celá čísla, ty potom převede na znaky a přidá do znakového řetězce, který tvoří kód formule. private void compadr(int adr) { int prefix, adres; prefix = (adr - 1) / 240-1; adres = (adr - 1) % ; if (prefix >= 0) { expcode += (char) prefix; } expcode += (char) adres; } Možná se ptáte, proč se to dělí zrovna 240 a proč se v adrese přičítá ta hodnota 16? Tak 240 se to dělí, protože pole valtab má velikost rovnu nějakému násobku 240. A ta 16 je offset adresy. Metoda compile(byte cd) dělá jen to, že vezme svůj parametr, převede ho na znak a přidá do proměnné expcode. private void compile(byte cd) { expcode += (char) cd; } Metoda compexpresion(string exp) po analýze a zakódování celé formule (tj. parametru exp) vrátí globální proměnnou expcode ve které je kód formule. Teď si ukážeme, jak se ta zakódovaná formule použije a jak je implementovaný algoritmus regrese.

53 Kapitola 4. Realizace 41 Algoritmus regrese je napsán v metodě reglin(). Nejprve se inicializuje matice a hodnotami 0. Tato matice se používá v metodě nejmenších čtverců při výpočtu koeficientů regresního modelu a představuje soustavu normálních rovnic. Velikost matice (a) je a[nform+1,nform+2] kde nform udává počet formulí (čili horní mez sumy ve výrazu [2.25]). Do pole valtab se od indexu 0 do indexu nvari (což je počet zadávaných proměnných x) načtou hodnoty proměnných x i. Vypočtou se položky pole valform, které představují výsledek jednotlivých formulí. Vyčíslení formulí se provádí metodou eval(string p) kde p je kód formule. Tato metoda dělá to, že bere jednotlivé znaky ze řetězce, které představují jednotlivé toukeny a nebo odkazy do pole valtab kde jsou hodnoty konstant a proměnných. Výpočet se provádí takto: while ((i < pl) && (errglob == 0)) { //dokud je co číst a nenastala chyba cd = (int) p.charat(i); //načti jeden znak if (cd >= 15) {//je to adresa operandu tj. odkaz do valtab ptr++; if (ptr > MAX_STK) { //přetekl zásobník, tj. výraz je moc složitý? errglob = 9; //když ano, tak poznamenej chybu } else { stack[ptr] = valtab[cd + baseadr]; //jinak si do zásobníku načti hodnotu z valtable z pozice danou kódem cd a základem adresy } baseadr = -15; } else {//adresa operandu to není if (cd > 10) {//jedná se o nějaký operátor +,-,*,/ ptr--; stack[ptr] = oper(cd - 10, stack[ptr], stack[ptr + 1]); //proveď danou operaci mezi dvěma prvky na vrcholu zásobníku a výsledek ulož zpět na vrchol zásobníku } else { if (cd == 10) {//standard. fce stack[ptr] = stdfun(stack[ptr], baseadr); //do dané matematické funkce dosaď hodnotu z vrcholu zásobníku a výsledek ulož zpět na vrchol zásobníku

54 42 Kapitola 4. Realizace baseadr = -15; } else {//cd představuje prefix adresy, změň základ adresy baseadr = (cd + 1) * ; } } } i++; }//konec while Potom se už vrátí vrchol zásobníku, na kterém je uložen výsledek formule. To jsme si popsali vyčíslení formulí a co se děje dále v metodě reglin()? Po vyčíslení formulí, jejichž výsledky jak jsem si už řekli jsou v poli valform, tak se ještě do pole valform na pozici nform + 1 přidá hodnota závislé proměnné Y. Postupně se v matici a vytváří soustava normálních rovnic ([2.19], [2.20], [2.21]) Jak probíhá vytváření normálních rovnic: for (int i = 0; i < nptos; i++) {//vytvoření soustavy normálních rovnic for (int k = 0; k < nvari; k++) { valtab[k] = x[i][k]; //načti si hodnoty nezávislých proměnných, resp. hodnoty pro vypočet formulí } for (int k = 0; k < nform; k++) { valform[k + 1] = eval(prog[k]); //spočte hodnoty jednotlivých formulí } valform[nform + 1] = x[i][nvari];//přidej hodnotu závislé proměnné for (int k = 0; k < nform + 1; k++) { for (int l = 0; l < nform + 2; l++) { a[k][l] += valform[k] * valform[l]; //toto zde představuje všechny ty sumy jako jsou například ve výrazech [2.19], [2.20], [2.21], tj. zde se utváří soustava normálních rovnic }

55 Kapitola 4. Realizace 43 s[k] = a[k][nform + 1];//součet hodnot Y.x k } s[nform + 1] += Math.pow(valForm[nForm + 1], 2); /*sčítání druhých mocnin zadaných závislých. proměnných*/ }//konec for cyklu s řídící proměnnou i vytvoření normálních rovnic (a také zpracování statistického souboru) Potom se provede řešení matice pomocí Gauss-Jordanova algoritmu. Výsledkem jsou hledané koeficienty regresního modelu. Zkopírujeme si je do pole c. Dále nás u regresního modelu zajímá koeficient determinace (viz. koeficient determinace). Jak je vidět ze vztahu [2.23] musíme si spočítat rozptyl vypočtených a pozorovaných hodnot. To se provede takto: for (int i = 1; i < nform + 1; i++) { p += c[i] * (s[i] - t[i] * s[0] / nptos); //rozptyl vypočtených hodnot S A } double r = s[nform + 1] - Math.pow(s[0], 2) / nptos; //rozptyl pozorovaných hodnot S T a potom už určíme koeficient determinace, koeficient korelace a standardní chybu z = r - p; //rozptyl reziduí Se int l = nptos - nform - 1; //stupeň volnosti if (l == 0) { l = 1; } if (r == 0) { cfdet = 1; //koeficient determinace } else { cfdet = p / r; //koeficient determinace } cfcor = Math.sqrt(cfDet); //koeficient korelace esterr = Math.sqrt(Math.abs(z / l));//standardní chyba (viz [2.24] )

56 44 Kapitola 4. Realizace Ještě bych se rád zmínil o jedné metodě ve třídě AlgoritmusRegrese a to sice metodu interpolace(double... iprom), která nám dává odhad závislé proměnné, pokud zadáme hodnoty nezávislých proměnných. Např. na příkladu automobilu, jak jsem uváděl v teorii, tak by nám model spočítal po zadání stáří automobilu, jaká je jeho nynější cena. V metodě interpolace(double... iprom) se dělá jen to, že pole představující hodnoty nezávislých proměnných, pro které chci odhadnout závislou proměnnou, jenž je předané jako parametr nakopíruji do pole valtab a potom počítám opět hodnoty formulí a tyto hodnoty násobím příslušným koeficientem. Výsledek je součet těchto násobků což je požadovaný odhad. To by bylo asi tak vše, co se týká metody lineární regrese. Hlavně mě šlo o to Vám ukázat, jak se tu zpracovávají ty formule, že se provádí jakýsi překlad. V balíčku regression je ještě několik tříd, ale ty slouží jen pro obsluhu různých tlačítek. Jsou tam třídy i pro opravu (editaci) zadaných hodnot a formulí, ale jde o podobnou záležitost, jako byla u Winterse, tak ji tu již nebudu popisovat. Ukládání, otevírání souborů a tisk výsledku fungují také na stejném principu jako u předešlé metody (tj. Wintersova metoda). Akorát u tisku se vás aplikace neptá, co chcete vytisknout, ale vytiskne jen výsledek, tj. hledané koeficienty modelu, koeficient determinace, koeficient korelace a standardní chybu Kauzální modelování Tento model se nachází v balíčku cz.cvut.fel.tes.methods.kauzalmodel. Hlavní třídou, která opět představuje zároveň okno, tohoto modelu je KauzalModel. Načítání hodnot probíhá trochu jinak než jak tomu bylo u předešlých dvou modelů. Načtený soubor se postupně ukládá do spojového seznamu, vypouští se z něj komentáře. Po načtení se spojový seznam předá dál do třídy AlgoritmusModelu, jenž má na starosti samotné modelování. V ní má vše na starosti funkce modelo(linkedlist<string> zdrojkod), jejímž parametrem je právě zmiňovaný spojový seznam. V metodě se nejprve zpracuje zdrojkod tj, provede se lexikální analýza. Po ní se provede kontrola, zda v modelu jsou čísla proměnných, která jdou za sebou, tj. žádné číslo není vynechané. Tato kontrola se provede u definic exo- i endogenních proměnných a také u definic rovnic, zda jsou definovány rovnice pro všechny endogenní rovnice. Pokud je vše v pořádku spustí se výpočet. Model rozlišuje jestli je definován celý model, tj. exo-, endogenní proměnné a rovnice nebo jen rovnice. Pokud jsou zadané jen rovnice, tak se spočtou a nemůžeme u nich dělat předpověď do budoucna. Kauzální modelování se podobá předešlému modelu aspoň co se týká prvotního zpracování dat. Také zde, je LL1 analýza a překlad do kódu, akorát zde, je překlad a tím pádem i gramatika o něco složitější, neboť se vedle analýzy a

57 Kapitola 4. Realizace 45 překladu rovnic analyzují ještě ostatní časti a to parametry modelu, exogenní a endogenní proměnné. Uvedu zde jen seznam tokenu, gramatiku tu psát nebudu, je o něco složitější, než ta u minulého modelu. Tokeny jsou opět, jako u předešlého modelu zapsány jako výčtový typ Symbol. - ITERS počet maximálních iterací při výpočtu - EPSIS epsilon, určuje požadovanou přesnost modelu - ANIOS počáteční rok - COMS komentář - DIGS počet desetinných míst - ENDS konec definic v souboru - EXOS blok exogenních proměnných - ENDOS blok endogenních proměnných - ECUAS blok rovnic - XVARS endogenní proměnná (její definice nebo rovnice pro ni) - YVARS definice exogenní proměnné - NUMS číselná konstanta - STRIS komentář (komentář u exo- nebo endogenní) proměnné - FUNS funkce (v rovnici je použitá nějaká matematická funkce) - EQUALS rovnítko - SEMICOLS středník, používá se na konci definice každé rovnice - PLUSS, MINUSS, TIMESS, DIVIDES matematické operátory +,-,*,/ - LPARS levá závorka ( - RPARS pravá závorka ) - EOFS konec souboru - ERRS chyba při analýze Princip je stejný, jako u lineární regrese a to ten, že se hodnoty konstant, endogenních a exogenních proměnných uloží do pole valtab a zakódují se jejich pozice v tomto poli pomocí metody compadr(int adr), jenž je stejná jako u

58 46 Kapitola 4. Realizace lineární regrese. I metoda compile(int cd) je stejná, která slouží ke kódování operací, resp. jejich operačních kódů. Takže se zakódují rovnice stejně, jako formule u lineární regrese. Teď se podíváme na to, jak se počítá výsledek. Princip je jednoduchý. Vypočtou se hodnoty rovnic pomocí metody eval(string p), která je stejná, jako v modelu lineární regrese. Výsledky z rovnic se ukládají do pole nv. Po spočtení všech rovnic, pokud v nich nenastala chyba, se provede kontrola, zda u všech rovnic platí tento vztah: X i ( t) X i ( t 1) < ε [2.26] X i ( t 1) tzn. zda když od vypočtené hodnoty odečtu hodnotu z minulého výpočtu a podělím rozdíl hodnotou z minulého výpočtu, tak zda tento podíl je menší, než požadovaná přesnost. Pokud tato nerovnost platí u všech rovnic, výpočet končí. Pokud neplatí aspoň u jedné, tak se do pole valtab přiřadí hodnoty vypočtené nyní, počet iterací se zvětší o 1 a výpočet se opakuje, tj. spočtou se hodnoty rovnic a provede se znova kontrola [2.26]. Toto se opakuje tak dlouho, dokud [2.26] neplatí pro všechny rovnice nebo dokud je počet iterací menší než zadaný počet maximálních iterací. Celá metoda vypadá takto: //iterační řešení systému rovnic private void solve() { boolean mas; double[] nv = new double[max_end]; double[] sv = new double[max_end]; numiter = 0; mas = true; for (int i = 0; i < numend; i++) { sv[i] = valtab[i + MAX_EXO]; //zapamatuj si staré hodnoty }

59 Kapitola 4. Realizace 47 while ((numiter < maxiter) && mas) {//dokud počet iterací je menší než maximální počet iterací a výsledek nějaké rovnice pořád nesplňuje požadovanou přesnost tak for (int i = 0; i < numend; i++) { ecnu = (i + 1); nv[i] = eval(prog.get(i)); //spočti nové hodnoty } mas = false; ecnu = 0; if (globerr == 0) {//výpočet proběhl bez problémů for (int i = 0; i < numend; i++) {//zkontroluj přesnost u rovnic if (Math.abs(valTab[i + MAX_EXO]) > 1e-20) { mas = (Math.abs((nv[i] - valtab[i + MAX_EXO]) / valtab[i + MAX_EXO]) > epsilon) mas; } valtab[i + MAX_EXO] = nv[i]; //vypočtené hodnoty použij při dalším vypočtu }//end for } numiter++;//zvětši počet provedených iterací } for (int i = 0; i < numend; i++) {//počítá případný procentní přírůstek, poslední sloupec ve výsledku if ((anio_act!= anio) && (sv[i]!= 0.0)) { tasa[i] = (nv[i] - sv[i]) * 100 / sv[i]; } } if (numiter == maxiter) {//mnoho marných iterací globerr = 2; } }

60 48 Kapitola 4. Realizace To by bylo asi vše k implementacím modelů. I když jsem měl k dispozici zdrojové kódy z minulé verze, byla implementace náročná, poněvadž komentáře a materiály ke staré verzi byly ve španělštině (španělsky vůbec neumím). V aplikaci se vyskytují numerické modely, o kterých jsem si musel sehnat informace, jelikož se ve škole o nich moc nemluví. Implementace některých modelů vyžadovala znalost překladačů, což mě umožnilo si zopakovat své vědomosti v této oblasti.

61 49 Kapitola 5 Testování Jelikož se mě aplikace nezdála ještě tak rozsáhlá a trochu mě při vytváření tlačil čas, nepsal jsem žádné Junit testy. Junit testy mají podle mě smysl u velkých projektů, kde se používají různé frameworky (spring, hibernate, AOP (Aspektově Orientované Programování)) u kterých startování celé aplikace trvá i několik minut a požaduje třeba komunikaci po síti (např. stažení části projektu z centrálního úložiště pomocí nástroje maven). Tam už se Junit vyplatí, pokud testujeme funkčnost nějaké malé metody, co jsme si napsali. Vím, že psaní programů a aplikací velí, nejdříve napiš test, potom naprogramuj metodu. Asi je to tak správné a mělo by se to dělat, ale jak jsem řekl, u mé aplikace se mě to zdálo zbytečné. Když jsem potřeboval ověřit nějakou část, tak jsem aplikaci jednoduše spustil a otestoval jsem ji pomocí dat, používal jsem kontrolní výpisy z aplikace a když se mě výsledek nezdál, jak jsem si pro jistotu udělal debug. Jelikož jsem používal NetBeans IDE, věděl jsem dobře, co se v programu děje. K lineární regresy jsem při hledání studijních materiálů našel i řešený příklad v nějaké jiné aplikaci, bohužel tam nebyl její název. Touto úlohou jsem se inspiroval u mých vysvětlujících příkladů. Zadání znělo: Na základě údaje o stáří a ceně 10 ojetých aut značky Felicia Combi 1. zkonstruujte regresní model závislosti ceny auta na stáří, 2. posuďte jeho kvalitu a 3. použijte jej k odhadu střední hodnoty ceny aut starých 10 let. Byl tam znázorněný graf s 10 hodnotami, kde na svislé ose byla cena a vodorovné stáří. Vypadal takto:

62 50 Kapitola 5. Testování Hodnoty jsem z grafu přibližně vyčetl a zadal tyto hodnoty do mého modelu: X (stáří v letech) Y(cena v tis. Kč) Jde o jednoduchou lineární regresy, ale to nám nevadí. Můj model mě vrátil tyto hodnoty: C[0] = 221,7813 je absolutní člen C[1] = -14,4063 je regresní koeficient R 2 = 0,8691 to bych řekl, že je dobrá úspěšnost modelu Coeficient korelace mě vyšel roven 0,9322 což je také výborné. Standarní chyba vyšla 12,25. Odhad ceny automobilu, které je staré 10 let mě vyšlo 77,7187 tis. Kč. A jaký výsledek byl v tom druhém modelu?

63 Kapitola 5. Testování 51 Absolutní člen (Intercept) = 220,1562 Koeficient u stáří (regresní koeficient) = -14,6145 R 2 = 0,8853 Coef. Korelace = 0,8710 Standardní výchylka = 12,80 Odhad ceny automobilu = 74,010 Shrnutí: Myslím si, že se výsledky liší jen nepatrně a že můj model funguje stejně, jako ten, ve kterém to bylo řešeno v tom příkladu.

64 52 Kapitola 5. Testování

65 53 Kapitola 6 Závěr V této práci jsem se zabýval ekonomickými modely a jejich implementací. Myslel jsem si, že to bude jednodušší, když budu mít při ruce zdrojové kódy předcházející verze, ale musím říci, že jsem se občas i docela potrápil, než jsem přišel na to, jak daný model funguje. Mým úkolem bylo naimplementovat ekonomické modely: Wintersova metoda, vícenásobná lineární regrese a kauzální modelování. Každý tento model se zabývá odlišnými druhy dat, ale pod každým tímto modelem se ukrývá více či méně složitý matematický model. Myslím, že svůj úkol jsem splnil. Snažil jsem se ošetřit všechny chyby. Jsem ale také jen člověk, takže jsem možná nějakou přehlédl a vypluje na povrch až při používání aplikace, ale snad jich nebude moc. Pokračování v práci bych viděl možná ve zlepšení vizualizace, já jsem použil standardní vzhled, který poskytuje Java, ale možná by šlo vylepšit vzhled jednotlivých komponent. Zohlednit v algoritmech nepřesné hodnoty (co se moc vychylují od průměrných dat, klasicky to bývají chyby při měření nebo přepsání (překlep)).

66 54 Kapitola 6. Závěr

67 55 Literatura [1] LIŠKA: Ekonometrie URL: [2] KVASNIČKA: Ekonomicko-matematické metody II, Ekonomicko-správní fakulta Masarykovi univerzity URL: [3] TVRDÝ: Úvod do analýzy časových řad, Vysoká škola báňská - TU Ostrava URL: [4] KAŇOK: Statické metody v managementu, Skripta ČVUT, Praha 2002 [5] SUN MICROSYSTEM: The Java Tutorials Graphical user interface URL: [6] JFreeChart knihovna pro tvorbu grafů v Javě URL:

68 56 Literatura

69 57 Dodatek A Instalační a uživatelská příručka A.1. Instalace Aplikace nevyžaduje instalaci. Stačí rozbalit soubor Jtes.rar a spustit soubor Jtes.bat. A.2. Uživatelská příručka Po spuštění souboru Jtes.bat se nám zobrazí úvodní okno. obrázek 14 Úvodní okno aplikace

70 58 Dodatek A. Instalační a uživatelská příručka V tomto okně můžete libovolný model spustit pomocí tlačítka Run u daného modelu nebo v horním menu v položce Methods. V položce Option se dá nastavit zobrazovací jazyk. obrázek 15 Nastavení jazyka Změna jazyka se projeví až po restartování aplikace. A.2.1. Wintersova metoda Po prvním spuštění se zobrazí následující okno:

71 Dodatek A. Instalační a uživatelská příručka 59 obrázek 16 Prázdné okno Wintersova modelu V tuto chvíli máme dvě možnosti vlastně tři. Buď můžeme model zavřít pomocí křížku v pravém horním rohu nebo pomocí položky Close v nabídce File. Nebo pokud máme uložený model z předchozí verze, můžeme si ho načíst, pomocí nabídky File/Open a nebo si založit nový model pomocí nabídky File/New. My si zkusíme teď založit nový model. Po zvolení položky New se otevře následující okno (doplněny popisky, co jaké pole znamená).

72 60 Dodatek A. Instalační a uživatelská příručka Délka série (počet naměřených hodnot). Po zadání čísla se ve spodní části vygeneruje příslušný počet políček Okno pro komentář Počáteční rok výpočtu Počáteční měsíc výpočtu Délka sezóny Délka použité části pro výpočet Parametry α,β,γ Počet desetinných míst Pole pro naměřená data obrázek 17 Založení nového souboru Po vyplnění všech polí stisknete tlačítko OK a pokud dobře proběhne kontrola položek, zobrazí se zadaná data v okně modelu.

73 Dodatek A. Instalační a uživatelská příručka 61 obrázek 18 Zobrazení vyplněných hodnot V pravé části je vidět výsledek. V prvním sloupku je sezóna, ve druhém jsou odhadnuté hodnoty a v posledním sloupci výsledku jsou kumulované hodnoty. Výsledek se dá zobrazit i jako graf, po kliknutí na tlačítko Histogram, dostaneme následující graf

74 62 Dodatek A. Instalační a uživatelská příručka obrázek 19 Ukázka histogramu Výsledek můžeme vytisknout. V nabídce File zvolíme položku Print Zobrazí se nám okno, kde si můžeme vybrat, jaké položky chceme vytisknout. obrázek 20 Výběr tištěných položek Po stisku OK se zobrazí běžné dialogy pro tisk, ve kterých se dají nastavit vlastnosti tištěných stránek. Model uloží pomocí položky SaveAs v nabídce File. Ukáže se dialogové okno pro uložení. Najdu si adresář, kam chci soubor uložit a uložím ho. Aplikace si pamatuje soubor, se kterým se naposledy pracovalo.

75 Dodatek A. Instalační a uživatelská příručka 63 Podobně probíhá načtení, otevře se okno pro načtení modelu. Najdeme soubor modelu, jenž chceme načíst a načteme ho. Tlačítko Edit values vyvolá stejné okno, jako je na obrázku (obrázek 17 Založení nového souboru) s rozdílem, že položky formuláře nejsou prázdná, ale jsou v nich hodnoty, které potom můžeme libovolně měnit a opravovat. Tlačítko Continue slouží pro výpočet předpovědi (odhadu) do dalšího sezónního období. A.2.2. Vícenásobná lineární regrese Ovládání pomocí menu je stejné jako u Wintersova modelu. Stejně tak i v posledním modelu, proto se o těchto položkách nebudu více zmiňovat. Jen si ukážeme, jak vypadají základní okna modelu a jeho editační okna. Ukážeme si načtený soubor. Soubor jsme si načetli pomocí nabídky File/Open. Jako načtený soubor jsem zvolil ji dříve zmiňovaný příklad automobilů, u kterých zkoumáme cenu na jejich stáří.

76 64 Dodatek A. Instalační a uživatelská příručka obrázek 21 Načtený model lineární regrese Jak je vidět na obrázku, tak v levé části v jeho horní části jsou zobrazeny počty endogenních, exogenních proměnných a počet formulí. Formule jsou zobrazeny pod těmito počty. Pod formulemi je zadána naměřená závislá proměnná Y a pod ní jsou nezávislé proměnné, na kterých je Y závislá, resp. Y i je závislá na F i. Tlačítko Edit formula nám umožňuje upravovat libovolnou formuli.

77 Dodatek A. Instalační a uživatelská příručka 65 Nejprve se zadá číslo formule, kterou chceme upravit Potom se klikne na tlačítko Edit Po stisku tlačítka Edit můžete rovnici editovat obrázek 22 Editace formule v regresním modelu Potvrzení opravy a návrat zpět do okna modelu Tlačítka pod zobrazením proměnných. Previous a Next var slouží k prohlížení závislých a nezávislých proměnných. Add var umožňuje přidat závislou proměnnou a její nezávislé proměnné. Delete var vymaže právě zobrazovanou závislou proměnnou s jejími nezávislými proměnnými. Edit var umožňuje upravovat proměnné. Tlačítko Interpolation nám umožní odhadnout velikost závislé veličiny na zadané hodnotě nezávislé hodnoty. Příklad s autem:

78 66 Dodatek A. Instalační a uživatelská příručka Stáří automobilu Cena automobilu (odhad) Tlačítko pro výpočet odhadu obrázek 23 Interpolace Tlačítkem Decimalse otevře okno, ve kterém si můžete definovat, kolik desetinných míst se bude zobrazovat při zadávání hodnot a kolik desetinných míst se bude zobrazovat ve výsledku. A.2.3. Kauzální model Na následujícím obrázku si ukážeme, jak vypadá hlavní okno modelu, když načteme nějaký soubor.

79 Dodatek A. Instalační a uživatelská příručka 67 1) 2) 3) 4) obrázek 24 Hlavní okno modelu po načtení souboru Části 1), 2), 3) mohou obsahovat komentáře a. Obsahuje základní parametry (počet maximálních iterací výpočtu, požadovaná přesnost, počáteční rok, počet desetinných míst). b. Zobrazuje seznam endogenních a exogenních proměnných c. Obsahuje definici rovnic d. Výsledek výpočtu. V záhlaví je ještě jednou napsáno, z čeho se výsledek počítal. Výsledek má 3 sloupce (poslední na obrazovce není vidět). První sloupec obsahuje název endogenních proměnných, druhý obsahuje výsledek výpočtu a ve třetím je procentní změna mezi dvěma počítanými obdobími. Tlačítko Show source zobrazí textový soubor, ve kterém je uložen model. Tlačítko Continue umožňuje počítat prognózu na další rok. Tlačítko Edit zobrazí editační okno.

80 68 Dodatek A. Instalační a uživatelská příručka obrázek 25 Editační okno kauzálního modelu Editační okno je podobné hlavnímu, akorát zde můžete editovat položky. Můžete přidávat a mazat exogenní proměnné a editovat jejich hodnoty. Když přidáte endogenní proměnnou, přidá se i položka do rovnic a naopak, pokud přidáte rovnici, přidá se pole pro definici endogenní proměnné. Myslím, že práce s aplikací je velice intuitivní a ovládání metod se hodně podobá.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

Více

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak

Více

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

You created this PDF from an application that is not licensed to print to novapdf printer (http://www.novapdf.com)

You created this PDF from an application that is not licensed to print to novapdf printer (http://www.novapdf.com) Závislost náhodných veličin Úvod Předchozí přednášky: - statistické charakteristiky jednoho výběrového nebo základního souboru - vztahy mezi výběrovým a základním souborem - vztahy statistických charakteristik

Více

MĚŘENÍ STATISTICKÝCH ZÁVISLOSTÍ

MĚŘENÍ STATISTICKÝCH ZÁVISLOSTÍ MĚŘENÍ STATISTICKÝCH ZÁVISLOSTÍ v praxi u jednoho prvku souboru se často zkoumá více veličin, které mohou na sobě různě záviset jednorozměrný výběrový soubor VSS X vícerozměrným výběrovým souborem VSS

Více

Statistika. Regresní a korelační analýza Úvod do problému. Roman Biskup

Statistika. Regresní a korelační analýza Úvod do problému. Roman Biskup Statistika Regresní a korelační analýza Úvod do problému Roman Biskup Jihočeská univerzita v Českých Budějovicích Ekonomická fakulta (Zemědělská fakulta) Katedra aplikované matematiky a informatiky 2008/2009

Více

Časové řady, typy trendových funkcí a odhady trendů

Časové řady, typy trendových funkcí a odhady trendů Časové řady, typy trendových funkcí a odhady trendů Jiří Neubauer Katedra ekonometrie FVL UO Brno kancelář 69a, tel 973 442029 email:jirineubauer@unobcz Jiří Neubauer (Katedra ekonometrie UO Brno) Časové

Více

Časové řady, typy trendových funkcí a odhady trendů

Časové řady, typy trendových funkcí a odhady trendů Statistika II Katedra ekonometrie FVL UO Brno kancelář 69a, tel 973 442029 email:jirineubauer@unobcz Stochastický proces Posloupnost náhodných veličin {Y t, t = 0, ±1, ±2 } se nazývá stochastický proces

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Mějme dvojici proměnných, které spolu nějak souvisí. x je nezávisle (vysvětlující) proměnná y je závisle (vysvětlovaná) proměnná Chceme zjistit funkční závislost y = f(x).

Více

AVDAT Nelineární regresní model

AVDAT Nelineární regresní model AVDAT Nelineární regresní model Josef Tvrdík Katedra informatiky Přírodovědecká fakulta Ostravská univerzita Nelineární regresní model Ey i = f (x i, β) kde x i je k-členný vektor vysvětlujících proměnných

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Mějme dvojici proměnných, které spolu nějak souvisí. x je nezávisle (vysvětlující) proměnná y je závisle (vysvětlovaná) proměnná Chceme zjistit funkční závislost y = f(x).

Více

Regresní analýza 1. Regresní analýza

Regresní analýza 1. Regresní analýza Regresní analýza 1 1 Regresní funkce Regresní analýza Důležitou statistickou úlohou je hledání a zkoumání závislostí proměnných, jejichž hodnoty získáme při realizaci experimentů Vzhledem k jejich náhodnému

Více

Časové řady - Cvičení

Časové řady - Cvičení Časové řady - Cvičení Příklad 2: Zobrazte měsíční časovou řadu míry nezaměstnanosti v obci Rybitví za roky 2005-2010. Příslušná data naleznete v souboru cas_rada.xlsx. Řešení: 1. Pro transformaci dat do

Více

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Modul FADN RESEARCH je určen pro odborníky z oblasti zemědělské ekonomiky. Modul neomezuje uživatele pouze na předpřipravené

Více

4EK211 Základy ekonometrie

4EK211 Základy ekonometrie 4EK Základy ekonometrie Odhad klasického lineárního regresního modelu II Cvičení 3 Zuzana Dlouhá Klasický lineární regresní model - zadání příkladu Soubor: CV3_PR.xls Data: y = maloobchodní obrat potřeb

Více

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

Stavový model a Kalmanův filtr

Stavový model a Kalmanův filtr Stavový model a Kalmanův filtr 2 prosince 23 Stav je veličina, kterou neznáme, ale chtěli bychom znát Dozvídáme se o ní zprostředkovaně prostřednictvím výstupů Příkladem může býapř nějaký zašuměný signál,

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

SOLVER UŽIVATELSKÁ PŘÍRUČKA. Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404

SOLVER UŽIVATELSKÁ PŘÍRUČKA. Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404 SOLVER UŽIVATELSKÁ PŘÍRUČKA Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT0000404 1. Solver Program Solver slouží pro vyhodnocení experimentálně naměřených dat. Základem

Více

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

10. cvičení z PST. 5. prosince T = (n 1) S2 X. (n 1) s2 x σ 2 q χ 2 (n 1) (1 α 2 ). q χ 2 (n 1) 2. 2 x. (n 1) s. x = 1 6. x i = 457.

10. cvičení z PST. 5. prosince T = (n 1) S2 X. (n 1) s2 x σ 2 q χ 2 (n 1) (1 α 2 ). q χ 2 (n 1) 2. 2 x. (n 1) s. x = 1 6. x i = 457. 0 cvičení z PST 5 prosince 208 0 (intervalový odhad pro rozptyl) Soubor (70, 84, 89, 70, 74, 70) je náhodným výběrem z normálního rozdělení N(µ, σ 2 ) Určete oboustranný symetrický 95% interval spolehlivosti

Více

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC Modul FADN BASIC je určen pro odbornou zemědělskou veřejnost bez větších zkušeností s internetovými aplikacemi a bez hlubších

Více

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Proč Excel? Práce s Excelem obnáší množství operací s tabulkami a jejich obsahem. Jejich jednotlivé buňky jsou uspořádány do sloupců

Více

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců. Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků

Více

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

Číselné charakteristiky a jejich výpočet

Číselné charakteristiky a jejich výpočet Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz charakteristiky polohy charakteristiky variability charakteristiky koncetrace charakteristiky polohy charakteristiky

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Uživatelská příručka pro respondenty

Uživatelská příručka pro respondenty Uživatelská příručka pro respondenty Statistický informační systém Českého statistického úřadu Subsystém DANTE WEB Funkční blok Objednavatel: Český statistický úřad Na padesátém 81, 100 82 Praha 10 Dodavatel:

Více

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

Více

1. Číselné posloupnosti - Definice posloupnosti, základní vlastnosti, operace s posloupnostmi, limita posloupnosti, vlastnosti limit posloupností,

1. Číselné posloupnosti - Definice posloupnosti, základní vlastnosti, operace s posloupnostmi, limita posloupnosti, vlastnosti limit posloupností, KMA/SZZS1 Matematika 1. Číselné posloupnosti - Definice posloupnosti, základní vlastnosti, operace s posloupnostmi, limita posloupnosti, vlastnosti limit posloupností, operace s limitami. 2. Limita funkce

Více

Tomáš Karel LS 2012/2013

Tomáš Karel LS 2012/2013 Tomáš Karel LS 2012/2013 Doplňkový materiál ke cvičení z předmětu 4ST201. Na případné faktické chyby v této presentaci mě prosím upozorněte. Děkuji. Tyto slidy berte pouze jako doplňkový materiál není

Více

Měření závislosti statistických dat

Měření závislosti statistických dat 5.1 Měření závislosti statistických dat Každý pořádný astronom je schopen vám předpovědět, kde se bude nacházet daná hvězda půl hodiny před půlnocí. Ne každý je však téhož schopen předpovědět v případě

Více

EKONOMETRIE 7. přednáška Fáze ekonometrické analýzy

EKONOMETRIE 7. přednáška Fáze ekonometrické analýzy EKONOMETRIE 7. přednáška Fáze ekonometrické analýzy Ekonometrická analýza proces, skládající se z následujících fází: a) specifikace b) kvantifikace c) verifikace d) aplikace Postupné zpřesňování jednotlivých

Více

Fyzikální korespondenční seminář MFF UK

Fyzikální korespondenční seminář MFF UK Úloha I.S... náhodná 10 bodů; průměr 7,04; řešilo 45 studentů a) Zkuste vlastními slovy popsat, co je to náhodná veličina a jaké má vlastnosti (postačí vlastními slovy objasnit následující pojmy: náhodná

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Odhad parametrů N(µ, σ 2 )

Odhad parametrů N(µ, σ 2 ) Odhad parametrů N(µ, σ 2 ) Mějme statistický soubor x 1, x 2,, x n modelovaný jako realizaci náhodného výběru z normálního rozdělení N(µ, σ 2 ) s neznámými parametry µ a σ. Jaký je maximální věrohodný

Více

Popisná statistika. Komentované řešení pomocí MS Excel

Popisná statistika. Komentované řešení pomocí MS Excel Popisná statistika Komentované řešení pomocí MS Excel Vstupní data Máme k dispozici data o počtech bodů z 1. a 2. zápočtového testu z Matematiky I v zimním semestru 2015/2016 a to za všech 762 studentů,

Více

Testování hypotéz o parametrech regresního modelu

Testování hypotéz o parametrech regresního modelu Testování hypotéz o parametrech regresního modelu Ekonometrie Jiří Neubauer Katedra kvantitativních metod FVL UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz Jiří Neubauer (Katedra UO

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Mějme dvojici proměnných, které spolu nějak souvisí. x je nezávisle (vysvětlující) proměnná y je závisle (vysvětlovaná) proměnná Chceme zjistit funkční závislost y = f(x).

Více

4EK211 Základy ekonometrie

4EK211 Základy ekonometrie 4EK211 Základy ekonometrie ZS 2015/16 Cvičení 7: Časově řady, autokorelace LENKA FIŘTOVÁ KATEDRA EKONOMETRIE, FAKULTA INFORMATIKY A STATISTIKY VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE 1. Časové řady Data: HDP.wf1

Více

Neuronové časové řady (ANN-TS)

Neuronové časové řady (ANN-TS) Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci

Více

Ilustrační příklad odhadu LRM v SW Gretl

Ilustrační příklad odhadu LRM v SW Gretl Ilustrační příklad odhadu LRM v SW Gretl Podkladové údaje Korelační matice Odhad lineárního regresního modelu (LRM) Verifikace modelu PEF ČZU Praha Určeno pro posluchače předmětu Ekonometrie Needitovaná

Více

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi). Příklad zahrnuje Textová editace buněk Základní vzorce Vložené kliparty Propojené listy Grafi cká úprava buněk Složitější vzorce Vložené externí obrázky Formuláře Úprava formátu Vysoce speciální funkce

Více

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého

Více

Manuál k ovládání aplikace INFOwin.

Manuál k ovládání aplikace INFOwin. Manuál k ovládání aplikace INFOwin. Základní práce s formuláři je ve všech modulech totožná. Vybereme tedy například formulář Pokladní kniha korunová na kterém si funkce ukážeme. Po zápisech se lze pohybovat

Více

Požadavky k opravným zkouškám z matematiky školní rok 2013-2014

Požadavky k opravným zkouškám z matematiky školní rok 2013-2014 Požadavky k opravným zkouškám z matematiky školní rok 2013-2014 1. ročník (první pololetí, druhé pololetí) 1) Množiny. Číselné obory N, Z, Q, I, R. 2) Absolutní hodnota reálného čísla, intervaly. 3) Procenta,

Více

Vlastnosti dokumentu/stránky

Vlastnosti dokumentu/stránky Vlastnosti dokumentu/stránky Formát stránky papíru pro tisk V záložce Rozložení stránky na pásu karet najdeme vše potřebné pro přípravu dokumentu před tiskem. 1) Záložka Rozložení stránky 2) Změna Orientace

Více

Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu

Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu sq Program ZK EANPRINT verze 1.20 Uživatelská dokumentace programu Úvod Základní vlastnosti programu Jednoduchost ovládání - umožňuje obsluhu i málo zkušeným uživatelům bez nutnosti většího zaškolování.

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

10. Předpovídání - aplikace regresní úlohy

10. Předpovídání - aplikace regresní úlohy 10. Předpovídání - aplikace regresní úlohy Regresní úloha (analýza) je označení pro statistickou metodu, pomocí nichž odhadujeme hodnotu náhodné veličiny (tzv. závislé proměnné, cílové proměnné, regresandu

Více

Lineární regrese. Komentované řešení pomocí MS Excel

Lineární regrese. Komentované řešení pomocí MS Excel Lineární regrese Komentované řešení pomocí MS Excel Vstupní data Tabulka se vstupními daty je umístěna v oblasti A1:B11 (viz. obrázek) na listu cela data Postup Základní výpočty - regrese Výpočet základních

Více

Regrese. používáme tehdy, jestliže je vysvětlující proměnná kontinuální pokud je kategoriální, jde o ANOVA

Regrese. používáme tehdy, jestliže je vysvětlující proměnná kontinuální pokud je kategoriální, jde o ANOVA Regrese používáme tehd, jestliže je vsvětlující proměnná kontinuální pokud je kategoriální, jde o ANOVA Specifikace modelu = a + bx a závisle proměnná b x vsvětlující proměnná Cíl analýz Odhadnout hodnot

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Mějme dvojici proměnných, které spolu nějak souvisí. x je nezávisle (vysvětlující) proměnná y je závisle (vysvětlovaná) proměnná Chceme zjistit funkční závislost y = f(x).

Více

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází Tiskové sestavy Tiskové sestavy se v aplikaci Access používají na finální tisk informací z databáze. Tisknout se dají všechny objekty, které jsme si vytvořili, ale tiskové sestavy slouží k tisku záznamů

Více

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1 Logistická regrese Menu: QCExpert Regrese Logistická Modul Logistická regrese umožňuje analýzu dat, kdy odezva je binární, nebo frekvenční veličina vyjádřená hodnotami 0 nebo 1, případně poměry v intervalu

Více

Testování hypotéz o parametrech regresního modelu

Testování hypotéz o parametrech regresního modelu Statistika II Katedra ekonometrie FVL UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz Lineární regresní model kde Y = Xβ + e, y 1 e 1 β y 2 Y =., e = e 2 x 11 x 1 1k., X =....... β 2,

Více

Regresní analýza. Ekonometrie. Jiří Neubauer. Katedra ekonometrie FVL UO Brno kancelář 69a, tel

Regresní analýza. Ekonometrie. Jiří Neubauer. Katedra ekonometrie FVL UO Brno kancelář 69a, tel Regresní analýza Ekonometrie Jiří Neubauer Katedra ekonometrie FVL UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz Jiří Neubauer (Katedra ekonometrie UO Brno) Regresní analýza 1 / 23

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Mějme dvojici proměnných, které spolu nějak souvisí. x je nezávisle (vysvětlující) proměnná y je závisle (vysvětlovaná) proměnná Chceme zjistit funkční závislost y = f(x).

Více

Lingebraické kapitolky - Analytická geometrie

Lingebraické kapitolky - Analytická geometrie Lingebraické kapitolky - Analytická geometrie Jaroslav Horáček KAM MFF UK 2013 Co je to vektor? Šipička na tabuli? Ehm? Množina orientovaných úseček majících stejný směr. Prvek vektorového prostoru. V

Více

Obr. P1.1 Zadání úlohy v MS Excel

Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel. Výpočet budeme demonstrovat

Více

Regrese. 28. listopadu Pokud chceme daty proložit vhodnou regresní křivku, musíme obvykle splnit tři úkoly:

Regrese. 28. listopadu Pokud chceme daty proložit vhodnou regresní křivku, musíme obvykle splnit tři úkoly: Regrese 28. listopadu 2013 Pokud chceme daty proložit vhodnou regresní křivku, musíme obvykle splnit tři úkoly: 1. Ukázat, že data jsou opravdu závislá. 2. Provést regresi. 3. Ukázat, že zvolená křivka

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu Metoda Monte Carlo a její aplikace v problematice oceňování technologií Manuál k programu This software was created under the state subsidy of the Czech Republic within the research and development project

Více

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 1 Obsah dokumentu 1 Obsah dokumentu... 2 2 Personalizovaná objednávka... 3 3 Jednoduchá... 3 4 Standardní... 4 5 Komplexní... 5 5.1 Párování

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Zpravodaj. Uživatelská příručka. Verze

Zpravodaj. Uživatelská příručka. Verze Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...

Více

Sestavy. Téma 3.3. Řešený příklad č Zadání: V databázi zkevidence.accdb vytvořte sestavu, odpovídající níže uvedenému obrázku.

Sestavy. Téma 3.3. Řešený příklad č Zadání: V databázi zkevidence.accdb vytvořte sestavu, odpovídající níže uvedenému obrázku. Téma 3.3 Sestavy Sestavy slouží k výstupu informací na tiskárnu. Tisknout lze také formuláře, ale v sestavách má uživatel více možností pro vytváření sumárních údajů. Pokud všechna pole, která mají být

Více

Statistika pro geografy

Statistika pro geografy Statistika pro geografy 2. Popisná statistika Mgr. David Fiedor 23. února 2015 Osnova 1 2 3 Pojmy - Bodové rozdělení četností Absolutní četnost Absolutní četností hodnoty x j znaku x rozumíme počet statistických

Více

Funkce a lineární funkce pro studijní obory

Funkce a lineární funkce pro studijní obory Variace 1 Funkce a lineární funkce pro studijní obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Funkce

Více

Diagnostika regrese pomocí grafu 7krát jinak

Diagnostika regrese pomocí grafu 7krát jinak StatSoft Diagnostika regrese pomocí grafu 7krát jinak V tomto článečku si uděláme exkurzi do teorie regresní analýzy a detailně se podíváme na jeden jediný diagnostický graf. Jedná se o graf Předpovědi

Více

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují 1. u + v = v + u, u, v V 2. (u + v) + w = u + (v + w),

Více

lindab comfort Krok za krokem manuál DIMcomfort 4.0

lindab comfort Krok za krokem manuál DIMcomfort 4.0 Krok za krokem manuál DIMcomfort 4.0 1 Obsah Úvod DIMcomfort 4.0 3 Nastavení místnosti 4 informace o místnosti 4 rozměry 5 komfortní zóna 6 způsob výpočtu 7 Výběr zařízení 8 hledání produktu 9 nastavení

Více

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ Parametrické vyjádření přímky v rovině Máme přímku p v rovině určenou body A, B. Sestrojíme vektor u = B A. Pro bod B tím pádem platí: B = A + u. Je zřejmé,

Více

Tomáš Karel LS 2012/2013

Tomáš Karel LS 2012/2013 Tomáš Karel LS 2012/2013 Doplňkový materiál ke cvičení z předmětu 4ST201. Na případné faktické chyby v této presentaci mě prosím upozorněte. Děkuji. Tyto slidy berte pouze jako doplňkový materiál není

Více

STATISTICA Téma 1. Práce s datovým souborem

STATISTICA Téma 1. Práce s datovým souborem STATISTICA Téma 1. Práce s datovým souborem 1) Otevření datového souboru Program Statistika.cz otevíráme z ikony Start, nabídka Programy, podnabídka Statistika Cz 6. Ze dvou nabídnutých možností vybereme

Více

5. Lokální, vázané a globální extrémy

5. Lokální, vázané a globální extrémy 5 Lokální, vázané a globální extrémy Studijní text Lokální extrémy 5 Lokální, vázané a globální extrémy Definice 51 Řekneme, že f : R n R má v bodě a Df: 1 lokální maximum, když Ka, δ Df tak, že x Ka,

Více

MÍRY ZÁVISLOSTI (KORELACE A REGRESE)

MÍRY ZÁVISLOSTI (KORELACE A REGRESE) zhanel@fsps.muni.cz MÍRY ZÁVISLOSTI (KORELACE A REGRESE) 2.5 MÍRY ZÁVISLOSTI 2.5.1 ZÁVISLOST PEVNÁ, VOLNÁ, STATISTICKÁ A KORELAČNÍ Jednorozměrné soubory - charakterizovány jednotlivými statistickými znaky

Více

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2 Výpočet transformačních koeficinetů vybraných 2D transformací Jan Ježek červen 2008 Obsah Odvození transformačního klíče vybraných 2D transformací 2 Meto vyrovnání 2 2 Obecné vyjádření lineárních 2D transformací

Více

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí Java GUI události Cílem kapitoly je přiblížit hlavní princip událostmi řízeného programování a ukázat na příkladu způsob řešení pro konkrétní případ. Soubor obsahuje také tabulku s přehledem nejčastěji

Více

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy Úloha 1 Úloha 2 Otázka se týká předchozího kódu. Určete pravdivost následujícího tvrzení: "Pro každý bod vytvoří úsečku mezi ním a středem panelu." Úloha 3 Otázka se týká předchozího kódu. Určete pravdivost

Více

Tomáš Karel LS 2012/2013

Tomáš Karel LS 2012/2013 Tomáš Karel LS 2012/2013 Doplňkový materiál ke cvičení z předmětu 4ST201. Na případné faktické chb v této presentaci mě prosím upozorněte. Děkuji. Tto slid berte pouze jako doplňkový materiál není v nich

Více

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií Softwarový nástroj pro tvorbu a správu genealogických dat Manuál pro uživatele Bc. František Hlaváček Součást

Více

Bodové a intervalové odhady parametrů v regresním modelu

Bodové a intervalové odhady parametrů v regresním modelu Statistika II Katedra ekonometrie FVL UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz Lineární regresní model Mějme lineární regresní model (LRM) Y = Xβ + e, kde y 1 e 1 β y 2 Y =., e

Více

Popis programu EnicomD

Popis programu EnicomD Popis programu EnicomD Pomocí programu ENICOM D lze konfigurovat výstup RS 232 přijímačů Rx1 DIN/DATA a Rx1 DATA (přidělovat textové řetězce k jednotlivým vysílačům resp. tlačítkům a nastavovat parametry

Více

Náhodné chyby přímých měření

Náhodné chyby přímých měření Náhodné chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně pravděpodobná.

Více

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Michal Náhlík Software pro podporu výuky čtení pomocí okénka Úvod Software, který nahrazuje fyzickou pomůcku, takzvané okénko, používané

Více

4EK201 Matematické modelování. 11. Ekonometrie

4EK201 Matematické modelování. 11. Ekonometrie 4EK201 Matematické modelování 11. Ekonometrie 11. Ekonometrie Ekonometrie Interdisciplinární vědní disciplína Zkoumá vztahy mezi ekonomickými veličinami Mikroekonomickými i makroekonomickými Ekonomie ekonomické

Více

Databox CONTACT 6 základní operace programu

Databox CONTACT 6 základní operace programu Databox CONTACT 6 základní operace programu Tento program slouží k evidenci firem, kontaktů a správě souvisejících obchodních aktivit a procesů. Obsahuje systém inteligentního třídění, plánování času a

Více

Rizikové procesy. 1. Spuštění modulu Rizikové procesy. 2. Popis prostředí a ovládacích prvků modulu Rizikové procesy

Rizikové procesy. 1. Spuštění modulu Rizikové procesy. 2. Popis prostředí a ovládacích prvků modulu Rizikové procesy Rizikové procesy Modul slouží k evidenci rizik a zpracovávání mapy rizik za jednotlivé součásti a VUT. Přístupová práva k tomuto modulu mohou získat manažeři rizik a výbor pro řízení rizik. 1. Spuštění

Více

AVDAT Klasický lineární model, metoda nejmenších

AVDAT Klasický lineární model, metoda nejmenších AVDAT Klasický lineární model, metoda nejmenších čtverců Josef Tvrdík Katedra informatiky Přírodovědecká fakulta Ostravská univerzita Lineární model y i = β 0 + β 1 x i1 + + β k x ik + ε i (1) kde y i

Více

Normální (Gaussovo) rozdělení

Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení popisuje vlastnosti náhodné spojité veličiny, která vzniká složením různých náhodných vlivů, které jsou navzájem nezávislé, kterých je velký

Více

Odhady - Sdružené rozdělení pravděpodobnosti

Odhady - Sdružené rozdělení pravděpodobnosti Odhady - Sdružené rozdělení pravděpodobnosti 4. listopadu 203 Kdybych chtěl znát maximum informací o náhodné veličině, musel bych znát všechny hodnoty, které mohou padnout, a jejich pravděpodobnosti. Tedy

Více

Požadavky k opravným zkouškám z matematiky školní rok 2014-2015

Požadavky k opravným zkouškám z matematiky školní rok 2014-2015 Požadavky k opravným zkouškám z matematiky školní rok 2014-2015 1. ročník (první pololetí, druhé pololetí) 1) Množiny. Číselné obory N, Z, Q, I, R. 2) Absolutní hodnota reálného čísla, intervaly. 3) Procenta,

Více

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel 2007. Výpočet budeme demonstrovat

Více

Základy biostatistiky II. Veřejné zdravotnictví 3.LF UK - II

Základy biostatistiky II. Veřejné zdravotnictví 3.LF UK - II Základy biostatistiky II Veřejné zdravotnictví 3.LF UK - II Teoretické rozložení-matematické modely rozložení Naměřená data Výběrové rozložení Teoretické rozložení 1 e 2 x 2 Teoretické rozložení-matematické

Více