Mendelova univerzita v Brně Provozně ekonomická fakulta
Webová aplikace pro zpracování statistických dat Bakalářská práce
Vedoucí práce: Ing. Pavel Haluza, PhD.
Josef Jelínek
Brno 2015
2
Velmi rád bych poděkoval panu Ing. Pavlovi Haluzovi PhD. za cenné připomínky a odborné rady, které mi poskytl během zpracování bakalářské práce.
4
Čestné prohlášení Prohlašuji, že jsem tuto práci: Webová aplikace pro zpracování statistických dat vypracoval samostatně a veškeré použité prameny a informace jsou uvedeny v seznamu použité literatury. Souhlasím, aby moje práce byla zveřejněna v souladu s § 47b zákona č. 111/1998 Sb., o vysokých školách ve znění pozdějších předpisů, a v souladu s platnou Směrnicí o zveřejňování vysokoškolských závěrečných prací. Jsem si vědom, že se na moji práci vztahuje zákon č. 121/2000 Sb., autorský zákon, a že Mendelova univerzita v Brně má právo na uzavření licenční smlouvy a užití této práce jako školního díla podle § 60 odst. 1 Autorského zákona. Dále se zavazuji, že před sepsáním licenční smlouvy o využití díla jinou osobou (subjektem) si vyžádám písemné stanovisko univerzity o tom, že předmětná licenční smlouva není v rozporu s oprávněnými zájmy univerzity, a zavazuji se uhradit případný příspěvek na úhradu nákladů spojených se vznikem díla, a to až do jejich skutečné výše.
V Brně dne 5. ledna 2015
................................................................
6
7
Abstract Jelínek, J. Web application for processing of statistical data. Bachelor thesis. Brno, 2014 The bachelor thesis deals with statistics and statistical software. The first part focuses on statistics, statistical concepts and terminology. The next part deals with Nette PHP framework and its structure. The third passage discusses the current applications. The last part is focused on implementing site using Nette Framework. Keywords: Web application, statistics, Nette Framework, statistical software
Abstrakt Jelínek, J. Webová aplikace pro zpracování statistických dat. Bakalářská práce. Brno, 2015 Bakalářská práce se zabývá problematikou statistiky a statistického softwaru. První část je zaměřená na statistiku, statistické veličiny a terminologii. Další část se zabývá PHP Frameworkem Nette a jeho strukturou. Třetí pasáž rozebírá současné aplikace. Poslední část je zaměřená na implementaci stránky pomocí Nette Frameworku. Klíčová slova: Webová aplikace, statistika, Nette Framework, statistický software
8
9
OBSAH
Obsah 1 Úvod a cíl práce 11 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Statistika 2.1 Statistika obecně . . . . . . . . . . . . . . . . . . . . 2.2 popisná statistika . . . . . . . . . . . . . . . . . . . . 2.3 Statistický znak . . . . . . . . . . . . . . . . . . . . . 2.3.1 Třídění statistických dat . . . . . . . . . . . . 2.3.2 Jednoduché třídění hodnot diskrétního znaku 2.3.3 Intervalové a skupinové třídění . . . . . . . . 2.4 Statistické charakteristiky . . . . . . . . . . . . . . . 2.4.1 Charakteristiky polohy . . . . . . . . . . . . . 2.4.2 Charakteristiky variability . . . . . . . . . . . 2.4.3 Charakteristiky asymetrie . . . . . . . . . . . 2.5 Výběrový soubor (výběr) . . . . . . . . . . . . . . . . 2.5.1 Náhodný výběr . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
12 12 12 13 14 14 14 15 15 17 19 19 20
3 Nette Framework 3.1 Vysvětlení pojmu Framework . . . . . . . . . . . . . 3.2 MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Model . . . . . . . . . . . . . . . . . . . . . . 3.2.2 View . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Controller (Presenter) . . . . . . . . . . . . . 3.3 Doporučená adresářová struktura Nette Frameworku 3.4 Zpracování akce presenteru . . . . . . . . . . . . . . . 3.5 Šablony . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
21 21 22 23 23 23 25 26 27
. . . . .
29 29 30 31 31 32
. . . . . .
34 34 34 34 35 35 35
4 Porovnání současných aplikací 4.1 STATISTICA . . . . . . . . . 4.2 UNISTAT . . . . . . . . . . . 4.3 R (programovací jazyk) . . . 4.4 Gretl . . . . . . . . . . . . . . 4.5 Statistické webové aplikace . . 5 Implementace 5.1 NetBeans . . . . 5.2 php5.net . . . . . 5.3 XAMPP . . . . . 5.4 Adminer . . . . . 5.5 Příprava aplikace 5.6 DataPresenter . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
10
OBSAH
5.6.1 5.6.2 5.6.3
Metoda renderShow() . . . . . . . . . . . . . . . . . . . . . . Metody createComponentEditForm() a editFormSubmitted() Metody createComponentUploadForm() a uploadFormSubmitted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.4 Metoda actionEditDelete() . . . . . . . . . . . . . . . . . . . 5.7 ComputationPresenter . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 Metoda renderPoloha() . . . . . . . . . . . . . . . . . . . . . 5.7.2 Metoda renderVariabilita() . . . . . . . . . . . . . . . . . . . 5.7.3 Metoda renderAsymetrie() . . . . . . . . . . . . . . . . . . . . 5.8 ToolPresenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.1 Kvantily nejznámějších rozdělení . . . . . . . . . . . . . . . . 5.8.2 Generování náhodných čísel . . . . . . . . . . . . . . . . . . . 5.9 SignPresenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10 RegisterPresenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35 35 35 36 36 36 36 36 36 36 36 36 37
6 Závěr
38
7 Reference
39
Přílohy
42
A Zdrojový kód
43
1
ÚVOD A CÍL PRÁCE
1 1.1
11
Úvod a cíl práce Úvod
Statistika jako věda může poskytnout informace, které nejsou v daném souboru dat na první pohled vidět. Pomocí výpočtů statistických ukazatelů lze např. optimalizovat výrobní procesy ve firmě, sledovat výkonnost lidí, ale i strojů, nebo vyhodnocovat ekonomickou aktivitu dané země. Ve statistice jsou výpočty tím přesnější, čím jsou přesnější data. To znamená, že kdyby jsme chtěli zjistit průměr známek žáků 6.C v Chrudimi, musíme zahrnout všechny žáky a všechny jejich známky.
1.2
Cíl práce
Cílem práce je naprogramovat webovou aplikaci, která dokáže zpracovat datový soubor a vyhodnotit statistické výpočty z daného souboru. Aplikace poskytne uživateli přehledné statistické výsledky vložených dat.
12
2 2.1
2 STATISTIKA
Statistika Statistika obecně
Výzkumní pracovníci různých vědních oborů realizují už dlouhé roky ve stále větším rozsahu empirické výzkumy. Používání při tom řadu metod.. Jejich cílem je induktivně ověřit jednoznačně formulované hypotézy. Na jejich ověřování se mimo jiných metod ve velké míře využívají i metody teorie pravděpodobnosti a matematické statistiky. Matematická statistika může různým způsobem podporovat plánování a vyhodnocování empirických zkoumání, umožňuje optimálně plánovat pokusy tak, abychom při minimálních nákladech získali maximum informací. Podmínkou použití statistických metod je efektivní a správní plánování pokusů. Matematická statistika jako vědní disciplína prošla určitým vývojem. Nejdříve to byl popis zeměpisného a hospodářského stavu státu, z kterého se postupně na přelomu devatenáctého a dvacátého století vyvinula popisná statistika. V třicátých letech dvacátého století vznikla moderní statistika, která se od popisné statistiky liší tím, že při analýze hromadných jevů používá výběrové zjišťování. Její skutečný rozvoj začal až po druhé světové válce. Matematická statistika v současnosti poskytuje postupy na kvantitativní a kvalitativní charakterizování výsledků zkoumání pomocí metod popisné statistiky a umožňuje ověřování hypotéz při výběrovém zkoumání. Statistické postupy se původně vyvinuly pro přírodovědné disciplíny, ale v současném období vstoupily i do metodiky společenských věd. Podobně jako v mnohých dalších oborech lidského poznání, i ve společenských vědách má matematická statistika velký význam pro zobjektivnění a zpřesnění poznatků a metod. Matematika a matematická statistika mění způsoby a podmínky přístupu například psychologie, pedagogiky, archeologie, ekonomie a sociologie. Naopak, uvedené vědy staví před matematickou statistiku problémy, které si vyžadují nová řešení – nové způsoby myšlení. Dnes se už i od společenskovědních výzkumných pracovníků nevyhnutelně vyžaduje, aby měli základní vědomosti ze statistiky.
2.2
popisná statistika
Cílem popisné statistiky je výsledky statistického zkoumání vyjádřit v přehledné, koncentrované formě, a to: – pomocí tabulek, – pomocí grafického znázornění, – pomocí popisných charakteristik. Základním pojmem v popisné statistice je statistický soubor. Je to konečná (i když někdy velmi rozsáhlá) neprázdná množina prvků, které jsou nositeli určitého hromadného jevu. Počet prvků této množiny nazýváme rozsah statistického souboru. Statistický soubor mohou tvořit např. lidé žijící v určitém místě, žáci jedné třídy, děti narozené v konkrétním roce, atd.
2.3
Statistický znak
13
Prvky statistického souboru nazýváme statistické jednotky. Statistická jednotka je tedy základní prvek, na kterém je možné zkoumat projev určitého hromadného jevu. Statistická jednotka musí být vymezená věcně, časově a prostorově. Při věcném vymezení je třeba přesně definovat, co budeme pod statistickými jednotkami rozumět (např. děti určitého věku). Časové omezení znamená určení časového období nebo okamžiku, v kterém je statistická jednotka zkoumána (např. děti narozené v roce 1997). Prostorové omezení statistických jednotek znamená určení místa nebo území, na kterém se koná statistické zkoumání (např. děti narozené v roce 1997 v okrese Třebíč).(Blašková, 2012)
2.3
Statistický znak
Vlastnosti statistických jednotek nazýváme statistické znaky. Znakem je např. počet narozených dětí, barva aut, atd. Statistické znaky lze rozdělit do dvou úrovní. V první úrovni dělíme statistický znak na kvalitativní nebo kvantitativní. Kvalitativní znak je vesměs vyjádřen slovně. Lze se ovšem setkat s vyjádřením pomocí písmene nebo i číslice, které však nevyjadřují množství (resp. míru), ale jsou pouze zástupci (vyjádřením) sledované kvality jevu. Např. v tabulce dat, kde popisovaným znakem je plavecká dovednost, se lze setkat s hodnotami „1“ a „0“ u jednotlivých statistických jednotek, ovšem tyto číslice nevyjadřují míru této plavecké dovednosti, ale jsou pouze kódy pro úroveň znaku. Řekněme, že „0“ znamenalo v zápise „neplavec“ a „1“ znamenalo „plavec“. Význam však může být rovněž opačný. Při takovémto kódování je tedy zapotřebí souběžně s daty uvádět způsob jejich šifrování. Toto kódování se provádí čistě z praktických důvodů (rychlost zápisu, přehlednost, …). Při tomto vyjádření úrovně znaku je zapotřebí mít neustále na paměti, že se nejedná o číslo v pravém slova smyslu, ale pouze o znak. Především v prostředí statistického softwaru, který nedokáže rozeznat, zda jsou vaše hodnoty skutečné číslice nebo jen znaky, což může vézt k nesmyslným postupům a závěrům. Vezmeme-li si opět do úst předchozí příklad o plavecké dovednosti – bez uvědomění si souvislostí s určením typu znaku, budeme chybně (a nesmyslně!) určovat aritmetický průměr. Statistický software bude sčítat nuly s jedničkami (tedy plavce s neplavci!) a dělit je jejich počtem – to samozřejmě nelze. V další úrovni členění se u kvalitativního znaku dostáváme k rozdělení znaků na alternativní a množné. Alternativní znak zahrnuje vždy pouze a jen dvě varianty. Jedná se tak vlastně o dichotomické členění. U množného znaku je vždy možnost více alternativ, více úrovní znaku. Dalším typem znaku v rámci první úrovně je znak kvantitativní. Ten je vyjádřen vždy číselně. Číslice zastupuje nějaké množství nebo míru sledovaného znaku. Jeho dalším členěním se dostáváme k znakům spojitým a diskrétním. Znak kvantitativní spojitý může nabývat libovolné reálné hodnoty a jeho hodnoty tak lze vnímat jako libovolný bod číselné osy. U těchto znaků bude platit, že mezi libovolnými dvěmi hodnotami teoreticky existuje přinejmenším jedna další hodnota. Znak kvan-
14
2 STATISTIKA
titativní diskrétní (též nespojitý) nabývá pouze některých hodnot (většinou v oboru celých čísel). U znaku tohoto typu vždy existují takové dvě hodnoty, které nazveme sousedními a mezi nimiž teoreticky neexistuje hodnota, která by ležela mezi nimi. (Základy statistiky) 2.3.1
Třídění statistických dat
Prvním krokem při zpracovávání dat je jejich třídění. Tříděním rozumíme uspořádání údajů do skupin resp. tříd. Jestliže se při třídění používá pouze jeden třídící znak (např. výška žáků 6.A ve vybrané škole v okrese Třebíč), hovoříme o jednostupňovém třídění. Jestliže se statistický soubor třídí současně podle dvou či více statistických znaků (např. výška a hmotnost žáků 6.A), hovoříme o dvoustupňovém resp. vícestupňovém třídění. Při třídění musíme dodržovat zásadu: – úplnosti, tj. musíme zatřídit každou naměřenou hodnotu; – jednoznačnosti, tj. musíme třídy popř. intervaly zvolit tak, abychom každou statistickou jednotku jednoznačně zatřídili právě do jedné třídy resp. intervalu. 2.3.2
Jednoduché třídění hodnot diskrétního znaku
Jestliže na n prvcích statistického souboru pozorujme kvantitativní znak, výsledkem pozorování je n-tice reálných čísel x1 , x2 , . . . , xn . Je to tzv. prvotní tabulka. První krok úpravy bude spočívat v tom, že hodnoty z prvotní tabulky uspořádáme do neklesající posloupnosti. U neklesající posloupnosti se může stát, že se některé hodnoty mohou vyskytovat vícekrát. Když je tomu tak, sestrojíme tzv. tabulku rozdělení četností, která sestává ze dvou sloupců. Do prvního sloupce zapisujeme hodnoty a do druhého sloupce jejich četnosti. Tabulku rozdělení četností můžeme doplnit o další sloupce, například o sloupec relativní a kumulativní četnosti. Sloupec kumulativních četností je dán postupným sčítáním předcházejících četností začínajícím od první četnosti. Sloupec relativních četností je dán podílem jednotlivých četností a rozsahu souboru. Relativní četnosti je možné vyjádřit také v procentech. Tabulka rozdělení četností umožňuje získat některé informace rychle a v přehledné formě. 2.3.3
Intervalové a skupinové třídění
Při třídění diskrétního znaku, který vykazuje vyšší počet úrovní, a též v případě spojitého znaku zhotovíme tabulku rozdělení četností tak, že do prvního sloupce uvedeme třídy (intervaly). Tímto způsobem vytvoříme tzv. intervalové rozdělení četností v případě spojitého znaku rsp. skupinové rozdělení četností v případě diskrétního znaku. Pro určení počtu intervalů neexistuje jednoznačné pravidlo. Počet intervalů nemá být příliš malý, aby se neztratila podstatná část informací o rozdělení četností hodnot znaku, ale také ne příliš velký, aby√se nesnížila přehlednost třídění. Na . určení počtu tříd můžeme použít vztah k = n, kde n je rozsah souboru, nebo
2.4
15
Statistické charakteristiky
počet intervalů stanovíme sami. Když určíme počet intervalů, potom je poměrně jednoduché určit velikost intervalu, která by měla být pro všechny intervaly stejná. Šířku intervalu h určíme přibližně podle vzorce . xmax − xmin , h= k kde xmax je maximální hodnota a xmin je minimální hodnota třídícího znaku X. Vypočítanou hodnotu šířky obvykle zaokrouhlíme. (Blašková, 2012)
2.4
Statistické charakteristiky
Statistický soubor můžeme charakterizovat pomocí číselných hodnot, které reprezentují celý soubor. Mezi těmito číselnými hodnotami, tzv. statistickými charakteristikami, jsou nejdůležitější dvě hlavní skupiny: • Charakteristiky polohy - poskytují představu o celém sledovaném statistickém souboru ve formě jedné nebo více statistických charakteristik. Mezi nejznámější charakteristiky polohy patří průměry (aritmetický, geometrický), medián a modus. • Charakteristiky variability - popisují míru rozptýlení hodnot znaku okolo střední hodnoty. K měření variability se používá variační rozpětí, průměrná odchylka, směrodatná odchylka, rozptyl a další. 2.4.1
Charakteristiky polohy
Charakteristiky polohy jsou čísla, která charakterizují úroveň hodnot znaku ve statistickém souboru. A) Aritmetický průměr (ozn. x̄) Aritmetický průměr je nejčastěji používaná charakteristika polohy. Aritmetický průměr definujeme jako součet všech hodnot znaku dělený jejich počtem, tj. rozsahem souboru. Jestliže statistický soubor má rozsah n a statistický znak X nabývá hodnoty x1 , x2 , . . . , xn , potom aritmetický průměr je dán vztahem x̄ =
n x1 + x2 + . . . + xn 1∑ = xi . n n i=1
Jestliže je dána tabulka rozdělení četností, potom aritmetický průměr počítáme podle vzorce n 1∑ x1 f1 + x2 f2 + . . . + xn fn = x̄ = xi fi . n n i=1 Absolutní četnosti fi jednotlivých hodnot znaku ve vzorci vystupují jako váhy příslušných hodnot xi , a proto uvedený aritmetický průměr nazýváme také vážený aritmetický průměr.
16
2 STATISTIKA
B) Geometrický průměr (ozn. xg ) Geometrický průměr lze používat pouze znaky s kladnými hodnotami. Je definován jako n-tá odmocnina součinu hodnot znaku. Je tedy definován pomocí následujícího vztahu: √ xg = n x1 · x2 · . . . · xn . Jestliže jsou data zapsaná v tabulce rozdělení četností, geometrický průměr počítáme podle vzorce: √ xg =
n
xf11 · xf22 · . . . · xfnn .
Používá se jako charakteristika polohy znaku, jehož hodnoty narůstají geometricky. Vyjadřuje průměrnou velikost změny. Geometrický průměr je veličina, která udává v jistém smyslu typický koeficient v souboru koeficientů, nahrazuje hodnoty, co se týče jejich součinu. C) Kvantil (ozn. xp ), Medián (ozn. x) Ve statistické praxi se nejčastěji jako charakteristika střední hodnoty používá aritmetický průměr, neboť závisí na všech pozorovaných hodnotách. Je však velmi citlivý na to, když jsou některé hodnoty znaku extrémně velké nebo malé. Extrémní hodnoty mohou způsobit, že průměr není nejlepší charakteristikou polohy. V takových případech je třeba použít jinou charakteristiku polohy, např. medián. Medián je prostřední hodnota, kterou označujeme x = x( 0, 5). Je to hodnota, která se nachází ve středu souboru hodnot uspořádaného do neklesající posloupnosti. V případě, že rozsah souboru je sudé číslo, potom medián určíme jako aritmetický průměr dvou prostředních hodnot. Jestliže máme údaje roztříděné v tabulce rozdělení četností, medián určíme následovně: Na základě kumulativních četností určíme třídu (tzv. mediánový interval), do které patří medián. Mediánový interval můžeme nejlépe určovat z kumulativních relativních četností. Je to interval, v němž je poprvé dosažena hodnota kumulativní relativní četnosti 0,5 nebo vyšší. Z absolutních kumulativních četností se za mediánový interval prohlásí ten, v němž je poprvé dosažena nebo překročena prostřední hodnota“. V případě lichého n je prostřední hodnota ” (n + 1)/2-tá hodnota v řadě uspořádaných hodnot znaku podle velikosti. V případě sudého n je to interval, v němž společně leží n/2-tá a (n/2 + 1)-tá hodnota. Medián pak vypočítáme podle vztahu: x = dm + h ·
b+c−a , 2b
kde dm je počátek mediánového intervalu, a – kumulativní četnost intervalu před mediánovým intervalem, b – četnost mediánového intervalu, c – součet četností za mediánovým intervalem, h – šířka intervalu. V případě sudého n , kdy n/2-tá a (n/2+1)-tá hodnota neleží v jednom intervalu, se medián určí jako střed mezi intervaly, v nichž se tyto dvě hodnoty vyskytují.
2.4
17
Statistické charakteristiky
Někdy se také využívají jiné kvantily než 50%, nejčastěji 25% a 75%, souhrně se jim říká kvartily. Obecně můžeme vypočítat libovolný kvantil a to v případě tabulky skupinového třídění podle vzorce xp = dp +
p − kp( p − 1) · h, pp
kde dp je počátek kvantilového intervalu, p – jsou procenta, tj, jak procentní kvartil nás zajímá, kp( p − 1) – kumulovaná relativní četnost intervalu před kvantilovým, pp – relativní četnost kvantilového intervalu, h – šířka intervalu. D) Modus (ozn. x) Modus je hodnota znaku X, která má ve statistickém souboru největší četnost. Stejně jako medián i modus je charakteristika polohy, pro jejíž výpočet nepotřebujeme všechny naměřené hodnoty – na rozdíl od průměrů. Modus můžeme určit jen tehdy, když se četnosti fi hodnot xi znaku X odlišují. V případě kdy jsou četnosti stejné, nemůžeme modus určit. Jestliže v souboru vystupují dvě nebo více navzájem sousedících hodnot stejně často a jejich četnost je větší jak četnost ostatních hodnot, potom modus vypočítáme jako aritmetický průměr nejfrekventovanějších hodnot. Jestliže existují dvě navzájem nesousedící hodnoty s relativně největšími četnostmi, potom obě tyto hodnoty uvádíme jako modus. V takovém případě říkáme, že rozdělení je bimodální (dvojvrcholové). V případě intervalového rozdělení četností budeme za modus považovat střed intervalu s největší četností. 2.4.2
Charakteristiky variability
Statistické soubory se mohou lišit nejen v úrovni hodnot znaku (vyjádřené některou charakteristikou polohy), ale i variabilitou hodnot pozorovaného znaku. Míry variability charakterizují míru rozptýlení hodnot znaku. Některé míry variability se počítají vzhledem k vybrané charakteristice polohy. Takovými mírami jsou například průměrná odchylka, rozptyl a směrodatná odchylka. Zcela odlišně je koncipováno variační rozpětí a variační koeficient. A) Průměrná absolutní odchylka (ozn. d) Ve výpočtu průměrné absolutní odchylky její velikost závisí na každé naměřené hodnotě statistického souboru. Počítáme ji jako aritmetický průměr absolutních hodnot všech odchylek od nějaké konstanty, nejčastěji od aritmetického průměru nebo mediánu: d=
n 1∑ |xi − a|, n i=1
nebo v případě skupinového rozdělení četností podle vztahu:
18
2 STATISTIKA
d=
n 1∑ |xi − a| · fi . n i=1
B) Rozptyl (ozn. s2 ) Rozptyl (variance, disperze) je nejčastěji používaná míra variability. Počítáme ho jako aritmetický průměr čtverců odchylek od aritmetického průměru podle vztahu: n 1∑ s = (xi −)2 , n i=1 2
nebo, jestliže je dána tabulka rozdělení četností, podle vztahu: s2 =
n 1∑ (xi −)2 · fi . n i=1
Vlastnosti rozptylu: • Rozptyl je vždy nezáporný, rozptyl z konstanty je 0 • Rozptyl se nemění s aditivní konstantou • Rozptyl se mění se čtvercem multiplikativní konstanty C) Směrodatná odchylka (ozn. s) √ Směrodatná odchylka s je druhá odmocnina rozptylu: s = s2 . Variabilita znaku se charakterizuje pomocí směrodatné odchylky, protože směrodatná odchylka má stejný rozměr jako pozorovaný znak. D) Variační koeficient (ozn. v) Jestliže máme dva soubory, často nás zajímá, zda hodnoty zkoumaného znaku jsou v prvním souboru víc rozptýleny než hodnoty tohoto znaku v druhém souboru. V případě, že oba soubory jsou stejně velké, v případě, že se měření v obou souborech utvořilo podle stejné metodiky a byly zjištěny přibližně shodné průměry, variabilitu znaku v obou souborech můžeme porovnat pomocí jejich rozptylů a směrodatných odchylek. V oačném případě na porovnání variability obou souborů použijeme variační koeficient. Vypočítáme ho jako podíl směrodatné odchylky a aritmetického průměru: s v= . x̄ Variační koeficient obyčejně počítáme v procentech: v=
s · 100. x̄
2.5
19
Výběrový soubor (výběr)
2.4.3
Charakteristiky asymetrie
Pomocí šikmosti a špičatosti ověřujeme předpoklad o normálním rozdělení četností a proto nemá smysl počítat tyto charakteristiky, pokud na první pohled vodíme, že četnosti jsou tomuto rozdělení vzdálená. Vztah mezi aritmetickým průměrem, modem, mediánem a šikmostí: Jsou-li shodné – souměrné rozdělení x̄‘x‘x - pravotranné rozdělení = záporná asymetrie x‘x‘x̄ -levostranné rozdělení = kladná asymetrie A) Šikmost k3 =
n 1∑ xi − x̄ 3 ( ) · fi . n i=1 s
Je-li koeficient šikmosti větší než nula, hovoříme o levostranné šikmosti. V případě dokonalé symetrie hovoříme o nulové šikmosti. Nulová šikmost značí, že hodnoty náhodné veličiny jsou rovnoměrně rozděleny vlevo a vpravo od střední hodnoty. Kladná šikmost značí, že vpravo od průměru se vyskytují odlehlejší hodnoty nežli vlevo (rozdělení má tzv. pravý ocas) a většina hodnot se nachází blízko vlevo od průměru. U záporné šikmosti je tomu naopak. B) Špičatost k4 =
n 1∑ xi − x̄ 4 ( ) · fi − 3. n i=1 s
Je-li koeficient špičatosti roven nule, hovoříme o normální špičatosti, je-li větší než nula, hovoříme o nadnormální špičatosti. Normální rozdělení má špičatost nula. Kladná špičatost značí, že většina hodnot náhodné veličiny leží blízko její střední hodnoty a hlavní vliv na rozptyl mají málo pravděpodobné odlehlé hodnoty. Křivka hustoty je špičatější, nežli u normálního rozdělení. Záporná špičatost značí, že rozdělení je rovnoměrnější a jeho křivka hustoty je plošší nežli u normálního rozdělení. (Blašková, 2012)
2.5
Výběrový soubor (výběr)
Je to soubor určitého konečného počtu n jedinců vybraných ze základního souboru, u kterých je provedeno praktické sledování (měření) zkoumané vlastnosti. Na základě poznání vlastností výběrového souboru se usuzuje na vlastnosti celé populace ( statistická indukce“ –- vyvozování závěrů), proto by měl být výběrový soubor co ” nejlepším představitelem (reprezentantem) základního souboru. Aby byl výběrový soubor dostatečně reprezentativní, je nutno provádět výběr členů do tohoto souboru náhodně.
20 2.5.1
2 STATISTIKA
Náhodný výběr
Náhodný výběr znamená, že jedinci tohoto výběrového souboru (prakticky naměřené hodnoty) byly vybrány nezávisle tak, aby všichni jedinci základního souboru (hodnoty, které jsou teoreticky k dispozici) měly stejnou možnost být do výběru zahrnuty. Absolutně náhodný výběr ze základního souboru do výběrového souboru neexistuje. Náhodnost výběru je vždy ovlivněna určitou chybou při vybírání. K vybírání se proto používají způsoby, které chybu při vybírání zmenšují co nejvíce. Nejlépe se náhodnosti dosáhne při výběru s použitím tabulky náhodných čísel. Tabulka náhodných čísel obsahuje číslice 0 až 9 seřazené náhodným způsobem, tj. nezávisle za sebou. Tabulky náhodných čísel bývají sestaveny pomocí nějakého znáhodňovacího procesu, který produkuje všechny číslice se stejnou pravděpodobností a nezávisle na předchozích výsledcích. Jsou to např. losování z osudí aj. Každá tabulka náhodných čísel se po jejím sestavení podrobuje řadě zkoušek, zda neobsahuje nějaké nenáhodnosti, jako je například příliš častý výskyt některé číslice (tabulky náhodných čísel mají obsahovat všechny číslice zhruba stejně krát), cyklické opakování některých čísel apod. Ani po těchto kontrolách nemusí být tabulky bezvadné, neboť náhodnost mohla být porušena jiným (nekontrolovatelným) způsobem. Univerzální test náhodnosti, který by prozkoumal náhodnost z hlediska všech jejich vlastností, neexistuje. Tabulky náhodných čísel se používají v případě, kdy je třeba dosáhnout náhodného seřazení a nebo, v případě, kdy je třeba zabezpečit náhodnost vybírání. (Statistické soubory)
3
NETTE FRAMEWORK
3
21
Nette Framework
Nette Framework je napsaný v PHP 5 s plným využitím objektů (OOP). Ačkoliv vznikl už v roce 2004, teprve v roce 2008 byl uvolněn jako open source a zpřístupněn veřejnosti. Jeho licence, která vychází z BSD, patří k těm nejvolnějším. Vyrostla kolem něj jedna z nejaktivnějších komunit českých PHP vývojářů, ne-li nejaktivnější vůbec. Nette používají významné tuzemské společnosti. A podle testu uveřejněném na serveru Root je jedním z nejvýkonnějších frameworků. Framework je koncipován jako „otevřený“, je ho tedy možné používat i v primitivních webových aplikacích nebo společně s jiným otevřeným frameworkem, jako je například Zend Framework. (Nette Framework, 2009)
3.1
Vysvětlení pojmu Framework
Při prozkoumání zdrojového kódu většiny aplikací lze zjistit, že téměř vždy řeší stejné problémy. A proto si dříve či později každý programátor vytvoří svoji sadu funkcí nebo tříd, které tyto problémy řeší a ulehčí mu tak práci na dalších projektech. Takovéto menší či větší sady kódů se vznešeně nazývají framework“ a stávají se ” nedílnou součástí všech dalších projektů programátora. Na některých frameworcích již od samého začátku stály týmy expertů, u jiných stál jen“ motivovaný jednotlivec. ” Naštěstí se našli tací, kteří se o svoji práci podělili a posunuli tak celé generace vývojářů o krok dál tím, že své frameworky zveřejnili. Použití již hotového frameworku přináší hned několik výhod. První a asi největší výhodou je, že při vytváření nového projektu již není třeba znovu objevovat ” kolo“ v podobě řešení již dávno zodpovězených otázek. Navíc lze očekávat, že řešení používané delší dobu na více projektech již bude vyzkoušené, odladěné a dost možná i efektivní. V komunitě vývojářů PHP se sice nachází poměrně velká část lidí, kteří si myslí, že je jejich řešení lepší, ale lze jej vůbec srovnávat s prací vysokoškolsky vzdělaných expertů, kteří stáli u zrodu mnoha těchto frameworků, nebo s prací týmu programátorů a jejich mnohaletou praxí, nebo s prací komunity lidí, kteří vyzkoušeli všechny možné způsoby nasazení a použití jednotlivých komponent? Další výhodou nasazení hotového frameworku je jistý standard, jakým jsou aplikace na něm vytvořeny. Každý další programátor znalý této technologie tak přesně ví, kam se má podívat a kde případně hledat problém. Díky tomu se zvyšuje počet lidí schopných a tedy i ochotných podat pomocnou ruku na různých diskusních fórech při hledání příčiny nějakého problému. O frameworku je běžné říct, že je tvořen jen shlukem knihoven a proto nejlepší framework by jich měl obsahovat co nejvíce, ale není to pravda. Snad nejdůležitější částí frameworku by měla být vestavěná podpora pro řešení důležitých návrhových vzorů ( MVC, ORM, Dependency Injection, ...), nebo alespoň snadné napojení komponent, které tuto otázku řeší. Pokud však framework neusnadňuje a neumožňuje její začlenění, nelze jej považovat za kvalitní.
22
3 NETTE FRAMEWORK
Dalším z důležitých částí frameworku je jeho modularita a náročnost na běh. Dříve existovaly frameworky, které řešily mnoho z výše popsaných problémů, ale jejich kód nebyl dostatečně modulární a optimalizovaný pro výkon. Aplikace postavené na frameworcích sice vznikaly dle očekávání rychle, ale jejich kód obsahoval mnoho zbytečných částí, které se při každém požadavku načetly do paměti a přesto nikdy nepoužily. To mělo za příčinu vysokou paměťovou náročnost a velkou časovou prodlevu mezi požadavky na aplikaci. Při řešení komplikovanějších problémů bývá programátor postaven před nutnost rozšíření frameworku. Jeho kód by proto měl být srozumitelný, rozumně navržený i pro potřeby dalšího rozšíření a v ideálním případě i dostatečně zdokumentovaný. Když programátor prochází zdrojový kód frameworku a seznamuje se s jeho vnitřními pochody, zároveň tak čerpá znalosti a postupy pro řešení dílčích obvyklých situací. Je-li framework tvořen soustavou dočasných řešení a zjednodušení narušujících základní pravidla pro kvalitní vývoj, jistě se to odrazí i na výsledné kvalitě budoucí práce programátora.¨ Další a jistě podstatnou částí je důraz kladený na celkovou bezpečnost respektive zranitelnost frameworku. Paradoxně mnoho nejznámnějších frameworků jsou známé mimo jiné i pro jejich zranitelnost. V každém trochu větším kódu se vždy najde drobná chybka, která se po čase opraví, ale nemělo by jít o chybu v celkovém návrhu, jelikož oprava takové chyby znamená novou a ve většině případů nekompatibilní verzi. (Od špagety k objektům: Framework)
3.2
MVC
MVC je velmi oblíbený architektonický vzor, který se uchytil zejména na webu, ačkoli původně vznikl na desktopech. Je součástí populárních webových frameworků, jakými jsou např. Zend nebo Nette pro PHP, Ruby On Rail pro Ruby nebo MVC pro ASP .NET. Osobně si bez něj (nebo nějakého podobného principu) nedokáži představit složitější web. Základní myšlenkou MVC architektury je oddělení logiky od výstupu. Řeší tedy problém tzv. ”špagetového kódu”, kdy máme v jednom souboru (třídě) logické operace a zároveň renderování výstupu. Soubor tedy obsahuje databázové dotazy, logiku (např. PHP operace) a různě poházené HTML tagy. Vše je zamotané do sebe jako špagety. Kód se samozřejmě špatně udržuje, natož rozšiřuje. HTML není správně naformátováno, ztrácíme se v jeho stromové struktuře. Naším cílem je, aby zdrojový kód s logikou vypadal jako zdrojový kód (např. PHP) a výstup vypadal jako HTML stránka s co nejmenší příměsí dalšího kódu. Komponenty Celá aplikace je rozdělena na komponenty 3 typů, hovoříme o Modelech, View (pohledech) a Controllerech (Presenterech), od toho MVC. Označení pohled se budu snažit vyhýbat, protože mi přijde matoucí, že takto přeložené nekoresponduje s označením V. Neexistuje žádná striktní definice architektury a tak se můžete setkat s více výklady. Zaměřil jsem se na ten nejrozšířenější.
3.2
MVC
23
Komponenty jsou samozřejmě třídy, odděděné z abstraktních tříd Model, View a Controller. Pojďme si jednotlivé komponenty nejprve popsat. (MVC architektura: návrhový vzor) 3.2.1
Model
Snad ve všech článcích popisujících architekturu „MVC“ je napsáno, že část zvaná „Model“ má obsahovat takzvanou „bussines logiku“ aplikace. Málo kde je však možné se dočíst, co to vlastně znamená a pro méně zkušeného programátora to může být největší zdroj problému v pochopení této architektury, přestože se nejedná o nic komplikovaného. V některých článcích nebo odborných diskusích se lze setkat s milným názorem, že „Model“ se stará jen o komunikaci s datovým úložištěm. Asi nejvhodnějším vodítkem pro pochopení otázky „Co do Modelu patří a co už ne?“ je právě snaha o snadnou oddělitelnost této části na dedikovaný server. Jakmile se tato část oddělí od zbytku aplikace, měla by zůstat zachována její bezpečnost, funkčnost a celková konzistence s minimem úsilí. Měla by tedy obsahovat všechny kontroly na formální i obsahovou validitu vstupních dat. A v případě, že dostane data v neočekávané podobě, měla by vracet srozumitelnou výjimku. Výjimka by však neměla obsahovat citlivé informace jako názvy SQL tabulek, uživatelská hesla nebo úryvky zdrojového kódu. Další podstatnou částí „Modelu“ je zajištění autorizace uživatele k jednotlivým úkonům. Právě v této části je potřeba kontrolovat, že uživatel smí vykonávat požadovanou operaci s určitým zdrojem v jeho aktuálním stavu. V případě neoprávněného požadavku pak vrátit příslušnou výjimku. Většina kódu důležitého pro samotnou funkčnost aplikace, neboli „bussines logiku”, patří do této části. Je proto extrémně důležité dbát zvýšené opatrnosti při jejím vytváření nebo úpravě. 3.2.2
View
Jak již název napovídá, část zvaná „View“ se stará o zobrazení výstupu uživateli. Pro větší pohodlí programátora a pro vyšší přehlednost se v této části obvykle využívá šablonovací systém, který se zároveň snaží odstínit kodéra od programovacího jazyku. Díky tomu by nemělo dojít k nechtěnému poškození „bussines logiky“ aplikace. Část „View“ by měla pracovat výhradně s daty, které jsou jí předány, nebo si zažádat, aby jí byla předána data další, ale neměla by si je sama brát. Ačkoliv se to může v některých případech zdát jako přílišně dogmatické pravidlo, jeho porušení má fatální dopad na celkovou přehlednost a tedy i rozšiřitelnost a udržitelnost kódu. 3.2.3
Controller (Presenter)
Tato část se stará o vzájemnou komunikaci. Získává data z „Modelu“ a předává je do „View“ a zároveň zpracovává uživatelské požadavky, jako například odeslání
24
3 NETTE FRAMEWORK
formuláře. Zpracování odeslaného formuláře by však mělo spočívat maximálně v sestavení příslušného objektu naplňeného daty od uživatele a následného předání do „Modelu“ a případné zpracování výjimky vrácené z „Modelu“. Neměly by se zde však řešit otázky vzhledu. Pokud je například potřeba zobrazit popisku vstupního pole formuláře jako jeho „placeholder“, mělo by to být ošetřeno v části „View“. Při správném dodržení tohoto pravidla bude umožněno kodérovi libovolně měnit vzhled aplikace, aniž by byla nutná spolupráce vývojáře. (Od špagety k objektům: MVC)
3.3
Doporučená adresářová struktura Nette Frameworku
3.3
25
Doporučená adresářová struktura Nette Frameworku
sandbox/ app/ ← adresář s aplikací config/ ← konfigurační soubory config.neon ← konfigurační soubor config.local.neon model/ ← modelová vrstva a její třídy presenters/ ← třídy presenterů HomepagePresenter.php ← třída presenteru Homepage templates/ ← adresář se šablonami @layout.latte ← šablona společného layoutu Homepage/ ← šablony presenteru Homepage default.latte ← šablona akce default bootstrap.php ← zaváděcí soubor aplikace log/ ← obsahuje logy, error logy atd. temp/ ← pro dočasné soubory, cache, ... vendor/ ← adresář na knihovny (např. třetích stran) nette/ ← všechny knihovny Nette Frameworku nette/Nette ← oblíbený framework nainstalovaný Composerem ... autoload.php ← soubor, který načítá třídy nainstalovaných balíčků www/ veřejný adresář, document root projektu .htaccess ← pravidla pro mod_rewrite index.php ← který spouští aplikaci images/ ← další adresáře, třeba pro obrázky Všechny požadavky posílá prohlížeč přes jediný PHP soubor, který se nachází ve veřejném adresáři www/, a tím je soubor index.php. V jeho těle se neděje takřka nic. Pouze se předává řízení do aplikace (tj. do adresáře app/) zaváděcímu souboru bootstrap.php. Soubor bootstrap.php nejprve načte Nette Framework a všechny knihovny na kterých aplikace závisí: require __DIR__ . '/../vendor/autoload.php'; Třída Configurator vytváří tzv. systémový DI kontejner a stará se o inicializaci aplikace.
26
3 NETTE FRAMEWORK
$configurator = new Nette\Configurator; Aktivuje debugger a logger ve striktním režimu: //$configurator->setDebugMode(TRUE); $configurator->enableDebugger(__DIR__ . '/../log'); Nastavíme složku do které se budou zapisovat dočasné soubory $configurator->setTempDirectory(__DIR__ . '/../temp'); Aktivujeme autoloading, který zajistí automatické načínání všech souborů s našimi třídami $configurator->createRobotLoader() ->addDirectory(__DIR__) ->addDirectory(__DIR__ . '/../vendor/others') ->register(); A podle konfiguračních souborů se generuje systémový DI kontejner. Od něj se bude odvíjet všechno další. Tento DI kontejner vrátíme jako výsledek volání app/boostrap.php $configurator->addConfig(__DIR__ . '/config/config.neon'); $configurator->addConfig(__DIR__ . '/config/config.local.neon'); return $configurator->createContainer(); a uložíme si ho do lokální proměnné ve www/index.php a aplikaci spustíme: $container = require __DIR__ . '/../app/bootstrap.php'; $container->getService('application')->run();
3.4
Zpracování akce presenteru
Každý požadavek na naši aplikaci se dostane přes soubory index.php a bootstap.php do objektu $application. Ten ale HTTP požadavkům nerozumí, proto požádá router, aby mu ho přeložil do řeči, které už rozumí. Tedy aby mu řekl, pro který presenter je požadavek určen a kterou akci s ním chce vykonat. Router kupříkladu odpoví, že uživatel chce akci show presenteru Product (je dobrý zvykem to zapisovat jako Product:show) a dále předává parametr id = 123. Česky by se řeklo: uživatele chce zobrazit produkt s id=123. Tomu už $application rozumí a přistoupí k plnění přání. Vyrobí objekt třídy ProductPresenter, která reprezentuje presenter Product. (Abychom byli zcela přesní, o výrobu objektu presenteru požádá službu presenterFactory). A pak bude presenter požádán o provedení akce (show a parametrem id).
3.5
Šablony
27
Presenter je objekt, který vezme požadavek přeložený routerem a vymyslí odpověď. Odpovědí může být HTML stránka, obrázek, XML dokument, soubor na disku, JSON, přesměrování nebo cokoliv potřebujete. Konkrétně ProductPresenter požádá model o data a ty poté předá do šablony k vykreslení. Tohle se zpravidla odehraje v metodě renderShow, kde slovo Show odpovídá názvu akce a parametr požadavku id bude předán jako parametr této metodě: class ProductPresenter extends Nette\Application\UI\Presenter { public function renderShow($id) { // získáme data z~modelu a~předáme do šablony $this->template->product = $this->model->getProduct($id); } } Pole všech parametrů odeslaných aplikaci požadavkem GET najdete v $this>request->getParameters(). V běžných případech byste je ale neměli potřebovat, využívejte routování a parametrů akce. Obdobně pole všech hodnot přijatých přes POST naleznete v $this->request>getPost(). Ani to byste neměli potřebovat, pokud nezpracováváte požadavek z jiné aplikace. Nejčastěji zpracováváte totiž formuláře vlastní aplikace a na ty máme formulářovou komponentu. Následně přistoupí presenter k vykreslení šablony.
3.5
Šablony
Cestu k souboru se šablonou odvodí presenter podle jednoduché logiky. Pro presenter Product a akci show zkusí, zda existuje jeden z těchto souborů: - templates/Product/show.latte - templates/Product.show.latte Taktéž se pokusí dohledat layout (ten je nepovinný): - templates/Product/@layout.latte - templates/
[email protected] - templates/@layout.latte layout společný pro více presenterů Pokud požaduji akci například Homepage:default, tak se 1. vytvoří objekt třídy HomepagePresenter 2. zavolá se metoda renderDefault() (existuje-li, ale nemusí) 3. vykreslí se šablona např. templates/Homepage/default.latte s layoutem např. templates/@layout.latte
28
3 NETTE FRAMEWORK
a v šabloně pak můžeme vytvořit odkaz na zmíněný Product:show($id), zhruba takto: detail produktu (MVC aplikace & Presentery)
4
POROVNÁNÍ SOUČASNÝCH APLIKACÍ
4
29
Porovnání současných aplikací
Současné aplikace jsou především desktopové. Důvodem je to, že obsahují velké množství funkcí, které vyžadují velký výpočetní výkon a většinou i velkou paměť. Právě proto je webových aplikací tak málo. Desktopových aplikací je celá řada, od těch základních, až po velmi robustních. V této kapitole zhodnotím některé z nich. Statistické programové systémy jsou komplexním nástrojem pro analýzu dat. Lze uvést jejich následující přednosti: • umožňují zpracovávat velké soubory dat, • umožňují analyzovat datové soubory obsahující chybějící údaje, • zahrnují větší rozsah statistických metod, • nabízejí rozsáhlejší pomoc uživateli ze statistického hlediska (systémy radí při výběru metod, interpretují výsledky, jsou dodávány vzorové soubory statistických dat), • některé umožňují lepší manipulaci s výstupy. (Statistické programové systémy)
4.1
STATISTICA
STATISTICA je komplexní statistický software pro analýzu a správu dat. Je určený pro užití v oblasti bankovnictví, pojišťovnictví, financí, energetiky, marketingu a také v oblasti akademického výzkumu. Výrobcem softwaru a také dodavatelem pro Českou republiku je společnost StatSoft. Program je chráněný licencí a v nabídce firmy není žádná studentská verze této licence. Společnost StatSoft však umožňuje stažení Trial verze programu po dobu 30ti dní zdarma. StatSoft nabízí jako zkušební vždy nejnovější verzi programu. (Statistický software STATISTICA 10, 2012) Software STATISTICA nabízí lokalizaci češtiny avšak některé nápisy jsou v angličtině. Má příjemné uživatelské prostředí a umožňuje import velkého množství formátů, od .CSV přes Excelovské tabulky až po xml dokumenty. Program má velké množství funkcí např. popisné statistiky, korelační koeficienty, kontingenční tabulky nebo metody vícerozměrné regrese. Avšak pro laika, který chce vypočítat kolik průměrně nasbírá jablek za den, by to mohl být problém. Společnost Statsoft pravidelně pořádá kurzy ovládání softwaru poněvadž je složitý. Také tato společnost vydává návody na internetu aby byli uživatelé efektivnější při práci s tímto softwarem. Na druhou stranu zkušený uživatel nemá problém pracovat se softwarem. Návody na ovládání jsou na vysoké úrovni a když má uživatel čas si návod přečíst, velice si usnadní práci. Program STATISTICA ze všech dále zkoumaných programů má nejlépe udělaný kalkulátor pravděpodobnostního rozdělení. Na obrázku 1 lze vidět jak početní výsledek, tak i grafické znázornění daného rozdělení. V pozadí je vidět prostředí tohoto programu.
30
4 POROVNÁNÍ SOUČASNÝCH APLIKACÍ
Obrázek 1: Kalkulátor v programu STATISTICA
4.2
UNISTAT
UNISTAT na svých stránkách píše toto: UNISTAT je kompletním statistickým balíkem, který nabízí všechny základní a pokročilejší statistické procedury • Popisná statistika, kontingenční tabulky • Testy dobré shody • Parametrické i neparametrické testy • Regrese a ANOVA + Testy • Korelační koeficienty • Rozsah výběrů a síla testu (UNISTAT) UNISTAT není tak komplexní jak STATISTICA ovšem o to přehlednější. Na obrázku 2 vidíme, že neobsahuje tolik funkcí jako u předchozího softwaru. UNISTAT dbá na jednoduchost a dobrou orientaci v programu. Program taktéž podporuje češtinu a taktéž umožňuje import dat různých formátů. Nevýhoda demoverze spočívá v tom, že se musí pracovat pouze se vzorovými daty. Program je levnější než STATISTICA a má nižší hardwarové nároky.
4.3
R (programovací jazyk)
31
Obrázek 2: Prostředí v programu UNISTAT
4.3
R (programovací jazyk)
R je spíše výpočetní prostředí než statistický software, a milují ho lidé, kteří musí vidět pod pokličku toho, co dělají. Ti, kdo s ním umí, říkají, že v něm lze udělat vše. Výhodou je samozřejmě, že je zadarmo, a lze proto velmi přizpůsobit vašim potřebám. Nevýhodnou je pomalá „křivka učení“. V poslední době R respektují kromě vývojářů open-source řešení i komerční firmy, které nabízejí statistický software, a mnoho výrobců software se snaží nají s R společnou řeč, neboli rozhraní. (Statistický software, 2010) Jazyk R je interpretovaný a ukrývá v sobě spoustu zajímavých funkcí. Funkce na popisnou statistiku, analýzu časových řad, nebo vykreslení grafů. Na obrázku 3 je ukázán aritmetický průměr, který se počítá funkcí mean().
4.4
Gretl
Název programu Gretl je zkratkou vycházející z Gnu Regression, Econometrics and Time-series Library. Jedná se o softwarový balíček, který obsahuje užitečné a jednoduše aplikovatelné nástroje ekonometrické analýzy. Potěšující vlastností je jeho
32
4 POROVNÁNÍ SOUČASNÝCH APLIKACÍ
Obrázek 3: Prostředí v programu R
volná dostupnost, díky které si program můžete stáhnout zdarma z internetové adresy gretl.sourceforge.net. Gretl je možné rozšířit o množství vzorových datových zdrojů a databází makroekonomických časových řad. Program využívá při výpočtech plejádu účelových odhadových techník. Samozřejmostí je schopnost vykreslovat data do přehledných grafů, případně generovat textový výstup do standardních formátů (TXT, RTF), včetně populárního LATEX. (gretl – uživatelská příručka 2009) Gretl se od ostatního softwaru v lecčem liší. Hodnoty se zadávají a ukládají do proměnné, která reprezentuje statistický soubor. Pomocí přehledného menu lze počítat výsledky, vykreslovat grafy nebo řadit podle velikosti. Program, ačkoliv nemá tolik funkcí jako STATISTICA nebo UNISTAT, má intuitivní ovládání a není třeba zvláštní znalosti této aplikace. Ovšem největší výhodou tohoto programu je skutečnost, že je zdarma. Na obrázku 4 lze vidět výčet popisné statistiky proměnné prijem_domacnosti. Jednoduché, přesné a rychlé.
4.5
Statistické webové aplikace
Webových aplikací na výpočet statistických dat je málo. Hezká aplikace je např. http://www.hackmath.net/cz/kalkulacka/statistika kde jednoduše zadáte hodnoty a stiskem tlačítka Vypočítej, se vypočítají hodnoty statistických výpočtů jako je aritmetický průměr, rozptyl, kvartily, medián, atd. Poněkud skromnější je aplikace na adrese http://www.kalkulacka.info/statistickevypocty, kde jsou jen základní statistické veličiny.
4.5
Statistické webové aplikace
Obrázek 4: Prostředí v programu Gretl
33
34
5
5
IMPLEMENTACE
Implementace
Tato část se bude věnovat implementaci ve velmi známém PHP Frameworku Nette. Na implementaci bylo použito několik nástrojů, a to základní struktura PHP Frameworku Nette, NetBeans IDE 8.0, server php5.net + phpMyAdmin, XAMPP a Adminer.
5.1
NetBeans
NetBeans je velmi užitečný nástroj pro programátora, který nabízí mnoho funkcí, nástrojů, pluginů apod. Oficiální stránka Netbeans (netbeans.org 2013) uvádí toto: NetBeans je úspěšný Open Source projekt s velmi rozsáhlou uživatelskou základnou, rostoucí komunitou vývojářů a téměř 100 partnery po celém světě. Firma Sun Microsystems založila Open Source projekt NetBeans v červnu 2000 a je zároveň hlavním sponzorem celého projektu. Dnes existují dva produkty: vývojové prostředí NetBeans (NetBeans IDE) a vývojová platforma NetBeans (The NetBeans Platform). Vývojové prostředí NetBeans IDE je nástroj, pomocí kterého programátoři mohou psát, překládat, ladit a distribuovat aplikace. Samotné vývojové prostředí je vytvářeno v jazyce Java - ovšem podporuje prakticky jakýkoliv programovací jazyk. Existuje rovněž velké množství modulů, které toto vývojové prostředí rozšiřují. Vývojové prostředí NetBeans je bezplatně šířený produkt a jeho užívání není nijak omezeno.
5.2
php5.net
Server php5.net je freehosting, který nabízí doménu 3. řádu, 50 MB úložiště, podporu PHP 5.5 a MySQL ve verzi 5.6 a připojení přes protokol FTP. Zřízení domény je velmi jednoduché a rychlé. Ačkoliv doména 2. řádu je vždy php5. Do databáze je přístup přes program phpMyAdmin, který je konkurentem programu Adminer. Aplikace je pod doménou xjeline4.php5.net/www .
5.3
XAMPP
XAMPP je podle (itbiz.cz) free a open-source multiplatformní balík, který umožňuje rychlou a snadnou instalaci Apache, MySQL, PHP, Perlu a dalších doplňků. Samotný název je akronym tvořený z: X - značí, že je multiplatformní, A - jako Apache, M - MySQL, P - PHP, P - Perl. Tento balíček posloužil jako nástroj pro vývoj této aplikace, kde jeho úloha spočívala jako náhrada za server, aby nebylo potřeba pořád dokola nahrávat soubory na server. Tento způsob je více efektivní.
5.4
Adminer
5.4
35
Adminer
Adminer je plně vybavený nástroj pro správu databáze napsaný v PHP. Na rozdíl od nástroje phpMyAdmin obsahuje jediný soubor, který je připraven pro nahrání na cílový server. Adminer je k dispozici pro MySQL, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch a MongoDB. (adminer) Mimo jiné program Adminer je součástí Nette Frameworku v doporučené struktuře.
5.5
Příprava aplikace
V nainstalovaném vývojovém prostředí je možnost si vygenerovat doporučenou adresářovou strukturu zmíněnou v předchozí kapitole. V aplikaci Adminer byly vytvořeny tabulky pro uživatele a jejich data. Poté následovalo vytvoření tříd DataPresenter, ToolPresenter, ComputationPresenter, a její příslušné pohledy, čili soubory .latte.
5.6
DataPresenter
Tato třída slouží k manipulaci s daty. Uživatel zde může vypsat, editovat nebo nahrávat svá data. 5.6.1
Metoda renderShow()
Metoda slouží k vykreslení šablony template s názvem show. Vypisuje data z databáze do tabulky, která má 3 sloupce. První sloupec je pořadí hodnoty, druhý je velikost hodnoty a třetí je četnost hodnoty v databázi uživatele. 5.6.2
Metody createComponentEditForm() a editFormSubmitted()
Metoda createComponentEditForm() vytvoří formulář na editaci dat v databázi aby mohl uživatel kdykoliv změnit jakoukoliv hodnotu. Metoda editFormSubmitted() je její callback metodou. Což znamená, že po odeslání formuláře se zavolá tato metoda. Předáván je celý formulář jako parametr. Po odeslání se aktualizuje databáze a uživatel je přesměrován na výpis dat. 5.6.3
Metody createComponentUploadForm() a uploadFormSubmitted()
Pohled upload zobrazí formulář s výběrem souboru a pokud je každá hodnota na jednotlivém řádku a desetinná čárka je vyměněna za desetinnou tečku, soubor se rozparsuje a hodnoty se vloží do databáze. Přesměrování je opět na výpis hodnot.
36 5.6.4
5
IMPLEMENTACE
Metoda actionEditDelete()
Metoda má jen jediný účel a to je vymazat na uživatelovo přání všechny hodnoty z databáze.
5.7 5.7.1
ComputationPresenter Metoda renderPoloha()
Pokud jsou v tabulce s hodnotami nějaká data, potom po zavolání tato metoda vypíše charakteristiky polohy do úhledné tabulky. Jsou zde aritmetický, harmonický, geometrický průměr, modus, minimální a maximální hodnota a kvartily. 5.7.2
Metoda renderVariabilita()
Obdobná metoda je renderVariabilita(), která vypíše charakteristiky variability. A těmi charakteristikami jsou rozpětí, rozptyl, směrodatná i absolutní odchylka a variační koeficient. 5.7.3
Metoda renderAsymetrie()
Metoda vypíše šikmost a špičatost dat v databázi.
5.8 5.8.1
ToolPresenter Kvantily nejznámějších rozdělení
Je zde možnost si vypočítat kvantily normálního,Studentova a Pearsonova rozdělení Chí kvadrát. U Studentova a Chí kvadrát rozdělení je formulář, který obsahuje počet stupňů volnosti a pravděpodobnost alfa. U normálního rozdělení se hodnota vypočítá ze střední hodnoty, směrodatné odchylky a pravděpodobnosti alfa. Po odeslání formuláře se nad menu ukáže hodnota daného rozdělení. 5.8.2
Generování náhodných čísel
Tento formulář dokáže vygenerovat celočíselná data, která se uloží do databáze. Ovšem uživatel musí být přihlášen.
5.9
SignPresenter
Tento presenter přihlašuje a odhlašuje uživatele, ověřuje jeho identitu a pokud uživatel zvolí, že chce být permanentně přihlášen, platnost session se nastaví na 2 týdny, protože proměnné session zůstávají na serveru a tím by se mohl server zahltit.
5.10
RegisterPresenter
5.10
37
RegisterPresenter
V tomto presenteru je formulář na registraci uživatele, která ho nejenže zaregistruje, ale také uživateli vytvoří tabulku na budoucí data.
38
6
6
ZÁVĚR
Závěr
Práce se zabývala návrhem a implementací webové aplikace pro zpracování statistických dat. V první kapitole je definice náplně práce a její cíl. Druhá kapitola se zabývá statistikou a jejím využitím. Třetí část je o čím dál slavnějším frameworku Nette jenž vymyslel programátor David Grudl. Další kapitola je shrnutí současných programových aplikací, jak desktopových, tak webových. Tato práce se nejvíce zaměřila na desktopovou aplikaci Gretl. Poslední část se věnuje implementaci webové aplikace, její struktuře a potřebným vývojovým nástrojům. Jsou zde uvedeny 3 hlavní presentery webové aplikace. Cíle bakalářské práce (návrh a implementace webové aplikace pro zpracování statistických dat) se podařilo splnit i když s drobnými problémy.
7
39
REFERENCE
7
Reference
Blašková, V. a kol. Statistika I. Vyd. 2., přeprac. Brno: Mendelova univerzita v Brně, 2012, 204 s. ISBN 978-80-7375-648-2.. Základy statistiky [online]. [cit. 2014-06-20]. Dostupné z: http://ftk.upol.cz/fileadmin/user_upload/FTK-katedry/institutakt-ziv-stylu/Statistika/ZAKLADYstatistikySKRIPTA1.pdf. Statistické soubory [online]. [cit. 2014-06-20]. Dostupné http://cit.vfu.cz/statpotr/POTR/Teorie/Predn1/soubory.htm.
z:
Nette Framework [online]. [cit. 2014-06-20]. Dostupné http://www.zdrojak.cz/clanky/nette-framework-zvyste-svojiproduktivitu/.
z:
Od
špagety k objektům: Framework [online]. [cit. 2014-06-20]. Dostupné z: http://blog.pavelzelezny.cz/od-spagety-k-objektum/(4)framework.html.
MVC architektura: návrhový vzor [online]. [cit. 2014-06-20]. Dostupné z: http://www.itnetwork.cz/mvc-architektura-navrhovy-vzor. Od
špagety k objektům: MVC [online]. [cit. 2014-06-20]. Dostupné z: http://blog.pavelzelezny.cz/od-spagety-k-objektum/(3)-mvc.html.
MVC aplikace & Presentery [online]. [cit. http://doc.nette.org/cs/2.1/presenters.
2014-06-20].
Dostupné
z:
Statistické programové systémy [online]. [cit. 2014-06-22]. http://badame.vse.cz/clanky/statsoft.php.
Dostupné
z:
Statistický software STATISTICA 10 [online]. [cit. 2014-06-22]. Dostupné z: http://samba.fsv.cuni.cz/~soukp6as/OLD/AKD/old/zaverecneprace/ Tumova_Software%20Statistica.doc. UNISTAT [online]. [cit. 2014-06-20]. Dostupné z: http://www.unistat.cz/. Statistický software [online]. [cit. 2014-06-20]. Dostupné z: http://www.datamind.cz/cz/blog/Statisticky-software-jak-na-vyber -statistickeho-software. gretl
– uživatelská příručka [online]. [cit. 2014-06-20]. Dostupné http://www.thunova.cz/wp-content/uploads/CZU/Manual_gretl.pdf.
z:
Co
je NetBeans? [online]. [cit. https://netbeans.org/index_cs.html.
Dostupné
z:
XAMPP [online]. [cit. 2014-06-20]. Dostupné http://www.itbiz.cz/slovnik/informacni-technologie-it/xampp.
z:
2014-06-20].
40
7 REFERENCE
Adminer [online]. [cit. 2014-06-20]. Dostupné z: http://www.adminer.org/.
SEZNAM OBRÁZKŮ
41
Seznam obrázků Obrázek 1: Kalkulátor v programu STATISTICA
30
Obrázek 2: Prostředí v programu UNISTAT
31
Obrázek 3: Prostředí v programu R
32
Obrázek 4: Prostředí v programu Gretl
33
Přílohy
A
A
ZDROJOVÝ KÓD
Zdrojový kód
Zdrojové kódy aplikace jsou k dispozici na přiloženém CD.
43