MASARYKOVA UNIVERZITA Přírodovědecká fakulta Ústav matematiky a statistiky Bakalářská práce Brno 2019 Ngoc Phuong Vu Přírodovědecká fakulta Ústav matematiky a statistiky Bagplot Bakalářská práce Ngoc Phuong Vu Vedoucí práce: RNDr. Radim Navrátil, Ph.D. Brno 2019 Bibliografický záznam Autor: Ngoc Phuong Vu Přírodovědecká fakulta, Masarykova univerzita Ústav matematiky a statistiky Název práce: Bagplot Studijní program: Matematika Studijní obor: Statistika a analýza dat Vedoucí práce: RNDr. Radim Navrátil, Ph.D. Akademický rok: 2018/2019 Počet stran: vii + 33 Klíčová slova: Bagplot; Konstrukce bagplotu; Vizualizace dat; Zobecnění krabicového grafu; Poloprostorová hloubka; Tukeyho medián; Hloubkové kontury; Krabicový graf; Kvantily; Odlehlost Bibliographic Entry Author: Ngoc Phuong Vu Faculty of Science, Masaryk University Department of Mathematics and Statistics Title of Thesis: Bagplot Degree Programme: Mathematics Field of Study: Statistics and data analysis Supervisor: RNDr. Radim Navrátil, Ph.D. Academic Year: 2018/2019 Number of Pages: vii + 33 Keywords: Bagplot; Bagplot construction; Data visualization; Generalisation of the boxplot; Halfspace depth; Tukey median; Depth contours; Boxplot; Quantiles; Outlyingness Abstrakt V této bakalářské práci se věnujeme bagplotu, grafickému nástroji pro vizualizaci dvourozměrných dat, který je zobecněním krabicového grafu. Nejprve si popíšeme známý krabicový graf, uvedeme si jeho různé varianty a ukážeme si jejich výhody. Dále si nadefinujeme pojmy jako poloprostorová hloubka, hloubkové kontury nebo Tukeyho medián, potřebné k sestrojení bagplotu. Uvedeme si konstrukci grafu a poté si na několika příkladech ilustrujeme jeho využití. K vykreslení grafů v této práci používáme programovací jazyk . Abstract This thesis is devoted to the bagplot, a graphical tool for visualizing two-dimensional data, which is a generalisation of the boxplot. First, we will have a look at the boxplot, as well as some of its variants and demonstrate their advantages. Next, we define notions necessary to construct the bagplot, such as the halfspace depth, depth contours or the Tukey median. We describe the construction of the graph and then illustrate its use on several examples. For plotting the graphs in this paper we use the programming language . Poděkování Na tomto místě bych chtěl hlavně poděkovat mému vedoucímu RNDr. Radimovi Navrátilovi, Ph.D. za cenné rady a připomínky, bez kterých bych se neobešel při tvorbě této bakalářské práce. Zároveň bych mu chtěl poděkovat za trpělivost, ochotu a čas, který věnoval průběžným opravám této práce. Dále děkuji Jaroslavu Paličkovi za společně strávený čas plný zábavy a bláznivých nápadů během mého studentského života. Velké poděkování patří mé přítelkyni Anežke za podporu a povzbuzení, nejen v průběhu psaní této práce. Také ji děkuji za prožité radostné a bezstarostné chvíle naplněné smíchem. V neposlední řadě bych chtěl poděkovat svým rodičům za jejich nekonečnou podporu v průběhu celého studia. Prohlášení Prohlašuji, že jsem svoji bakalářskou práci vypracoval samostatně s využitím informačních zdrojů, které jsou v práci citovány. Brno 15. května 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . Ngoc Phuong Vu Obsah Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Kapitola 1. Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1 Základní pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Kvantily . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Odlehlé a extrémní hodnoty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Konstrukce boxplotu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Porovnání boxplotu s histogramem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Boxploty v R a příklady na jejich využití . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5 Varianty boxplotu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Boxploty s proměnlivou šířkou . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 Boxploty se zářezy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Kapitola 2. Bagplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 Zobecnění známých pojmů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 Poloprostorová hloubka a její vlastnosti . . . . . . . . . . . . . . . . . . . . . 13 2.1.2 Hloubkové oblasti a kontury . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.3 Tukeyho medián . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Konstrukce bagplotu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 Bagploty v R a příklady na jejich využití . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4 Odlehlost a její využití . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Seznam použité literatury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 – vii – Úvod Průzkumová analýza dat (také známá pod zkratkou EDA - z anglického názvu exploratory data analysis) je základní krok pro jakoukoliv výzkumnou analýzu. Jedná se o souhrn metod zkoumající distribuci nasbíraných dat (obvykle se ověřuje, zda data pochází ze souboru s normálním rozdělením), odhalující odlehlá pozorování (tj. hodnoty, které se výrazně odlišují od ostatních), a v neposlední řadě také zobrazující případné vztahy mezi proměnnými. Všechny tyto získané poznatky pak poslouží k posouzení kvality dat a následně k vytvoření vhodných statistických modelů. Hlavními nástroji průzkumové analýzy bývají zpravidla grafické metody (např. histogram, krabicový graf, Paretův diagram, korelační diagram aj.), které umožňují vhled do zkoumaného souboru a za pomoci nichž lze získat informace o struktuře dat. Ačkoliv je poměrně snadné tyto grafy vykreslit, k jejich správné interpretaci je zapotřebí určitá zkušenost. Průzkumovou analýzu dat popsal John W. Tukey v knize [16] v roce 1977. Ne příliš známým nástrojem této analýzy, popsaný v článku [10] z roku 1997, je dvourozměrný graf bagplot, kterým se tato práce zabývá. Je zobecněním jednorozměrného boxplotu, který je díky své jednoduchosti a přehlednosti často využívaný při rozboru dat. Podobně jako u boxplotu, výhodou bagplotu je snadná detekce odlehlých hodnot, názorné zobrazení rozsahu souboru, korelace mezi dvěma proměnnými a šikmosti dat. Práce je rozdělena na dvě kapitoly, v té první si představíme populární krabicový graf. Zavedeme si všechny potřebné pojmy k jeho sestrojení a na vhodných příkladech si ukážeme jeho výhody. Popíšeme si několik dalších variant boxplotu, které navíc zobrazují například rozsah souboru dat nebo konfidenční intervaly pro medián a zároveň si předvedeme, jak tyto grafy sestrojit v programovacím jazyce . Ve druhé kapitole, kde čerpáme hlavně z článku [12] od autorů Peter J. Rousseeuw, Ida Ruts a John W. Tukey, se dostaneme k samotnému bagplotu. Hlavním cílem zde bude zobecnit pojem kvantil, na kterém je založen krabicový graf a poté si popíšeme jeho konstrukci. Podobně jako v předchozí kapitole si zde uvedeme několik příkladů, na kterých si ilustrujeme výhody použití bagplotu. Pro snazší porozumění definovaných pojmů jsou v této práci vykresleny obrázky za pomocí programu Geogebra. Ačkoliv v dnešní době existuje mnoho statistických softwarů, schopných sestrojení diagnostických grafů, jako jsou například MATLAB1, STATISTICA2, SAS3, zaměřil jsem hlavně na volně dostupný jazyk 4. 1Dostupné z: https://www.mathworks.com/products/matlab.html 2Dostupné z: https://www.statistica.pro 3Dostupné z: https://www.sas.com/en us/software/stat.html 4Dostupné z: https://www.r-project.org/ – 1 – Kapitola 1 Boxplot Boxplot (také krabicový graf nebo krabicový diagram) je jedním z nástrojů pro vizualizaci jednorozměrných dat, který přehledně zobrazuje informace o mediánu, horním a dolním kvartilu, maximálních a minimálních hodnotách, odlehlých hodnotách a dalších vlastnostech souboru zkoumaných dat. Boxplot použil jako první John W. Tukey v roce 1970, ale nebyl známý až do roku 1977, kdy byl formálně představen v knize [16]. Díky své jednoduchosti a kompaktnosti je často používaný k předběžné analýze dat. Boxploty mohou být vykresleny vodorovně nebo svisle. Hlavní část grafu tvoří obdélník, neboli ”krabička”, uvnitř kterého se nachází linie reprezentující medián. Tato krabička reprezentuje 50 % prostředních hodnot uspořádaného souboru. Ze střední části obdélníka vycházejí linie, tzv. ”vousy”, které dosahují buď krajních hodnot, tedy minimální nebo maximální hodnoty (tato konvence ovšem není praktická, jelikož při jejím využití přicházíme o důležitou vlastnost boxplotu, a tou je detekce odlehlých hodnot, které se pak v grafu zobrazují jako samostatné body), popřípadě jiných hodnot, které si později popíšeme. I přes jeho jednoduchost je krabicový graf hojně využívaným nástrojem hlavně k rychlému a snadnému posouzení rozložení dat, zjištění případné asymetrie a jednoznačnému zobrazení odlehlých hodnot. Oproti ostatním grafům, jako je například histogram, je krabicový graf kompaktnější a používá se při porovnávání variability několika souborů. Výhodou zmíněného histogramu je zase detailnější popis distribuce dat. Některé boxploty mohou obsahovat znak (obvykle ”+”) reprezentující aritmetický průměr dat. Existují různé varianty tohoto grafu, které navíc zobrazují počet pozorování v jednotlivých skupinách dat souboru nebo odhad hustoty ve vybraných bodech. Krabicové grafy jsou neparametrické, zobrazují tedy rozdíly mezi datovými soubory bez předpokladu normálního rozdělení dat. Ačkoliv není těžké je ručně sestrojit, při velkém objemu dat je výhodnější použít statistický software k jeho vykreslení, jako jsou například MATLAB, Microsoft Excel1, STATISTICA nebo programovací jazyk . 1Dostupné z https://www.microsoft.com/Microsoft/Excel – 2 – Kapitola 1. Boxplot 3 1.1 Základní pojmy Boxplot je založen na 5 hodnotách. Prvním z nich je medián nacházející se ve středu grafu, uvnitř krabičky, která je ohraničena 1. a 3. kvartilem. Dále obsahuje graf vnější hradby, které mohou být určeny minimální a maximální hodnotou, obvyklejší je však zvolit 1.5-násobek mezikvartilového rozpětí. K nadefinování všech těchto pojmů nejprve potřebujeme znát pojem kvantil. 1.1.1 Kvantily Zadefinujme si nejprve teoretický kvantil z distribuční funkce. Definice 1. Nechť F je distribuční funkcí a α ∈ (0,1). Potom funkce F−1 (α) = Q(α) = inf{x ∈ R : F(x) ≥ α} se nazývá kvantilová funkce a číslo xα = Q(α) se nazývá α-kvantilem rozdělení s distribuční funkcí F(x). α-kvantil xα je tedy taková hodnota náhodné veličiny, která udává α% pravděpodobnost výskytu hodnot menších nebo rovno xα. Protože však zpravidla kreslíme boxplot na základě reálných dat, budeme potřebovat výběrový kvantil. Mějme náhodný výběr X1,X2,...,Xn. Datový soubor získaný náhodným výběrem lze znázornit pomocí číselných charakteristik, které nazýváme výběrové charakteristiky. Dělíme je na: 1. Míry polohy - souhrnná statistika, která představuje střední nebo typickou hodnotu vzorku dat 2. Míry variability - určují rozptyl kolem své střední nebo typické hodnoty Mezi známé míry polohy patří výběrový průměr, modus a výběrové kvantily. Výběrový α-kvantil xα je obecně definován jako hodnota rozdělující datový soubor na dvě části první část obsahuje hodnoty menší než daný kvantil xα a druhá část obsahuje hodnoty větší nebo rovny hodnotě xα. První část tedy obsahuje aspoň α ·100% dat a druhá část obsahuje alespoň (1−α)·100% dat. Některé kvantily mají speciální názvy, např. percentil x0.01 je hodnota, pod kterou leží 1 % všech hodnot, decil x0.1 je 10. percentil a kvartil x0.25 je 25. percentil. Nejčastěji používané kvantily jsou x0.25 nazývaný dolní kvartil (také 1. kvartil), dále x0.5 nazývaný jako medián, a v neposlední řadě x0.75 nazývaný horní kvartil nebo také 3. kvartil. Postup při určování výběrových kvantilů: 1. Uspořádáme hodnoty datového souboru podle velikosti x(1) ≤ x(2) ≤ ... ≤ x(n). Kapitola 1. Boxplot 4 2. Pokud nα je celé číslo k, pak xα = x(k)+x(k+1) 2 , pokud k není celé číslo, pak xα = x (k) , přitom k značí celou horní část čísla k. Poznámka. Je-li n liché, je výběrový medián x0.5 prostřední hodnota seřazeného datového souboru x(1),x(2),...,x(n), tedy x0.5 = x(n+1 2 ). V případě, že je n sudé, medián se vypočítá jako aritmetický průměr dvou prostředních hodnot, tj. x0.5 = x(n 2 ) +x(n 2 +1) 2 . Definice 2. Mezikvartilové rozpětí IQR (z anglického názvu interquartile range) definujeme vztahem: IQR = x0.75 −x0.25 (1.1.1) a je to tedy rozdíl horního a dolního výběrového kvartilu. 1.1.2 Odlehlé a extrémní hodnoty Vykreslením boxplotu lze snadno identifikovat odlehlá pozorování, popřípadě chybné hodnoty, které pak při analýze dat mohou vést k mylným závěrům. Definice odlehlých (a extrémních) hodnot není jednoznačná, neboť obor hodnot náhodné veličiny závisí na charakteru dat. Jako odlehlou hodnotu lze považovat takovou, která nezapadá do pravděpodobnostního chování souboru dat. Tukey ve své knize [16] navrhl následující definici: Hodnotu x považujeme za odlehlou, jestliže platí x > x0.75 +k ·IQR nebo x < x0.25 −k ·IQR. Hodnota x je extrémní, jestliže platí x > x0.75 +2k ·IQR nebo x < x0.25 −2k ·IQR. Obvykle za k volíme hodnotu 1.5 (viz. [16]), odlehlé hodnoty pak leží v intervalu [x0.25 −3·IQR, x0.25 −1.5·IQR] nebo v intervalu [x0.75 +1,5·IQR, x0.75 +3·IQR] a extrémní hodnoty jsou v tomto případě menší než x0.25 −3·IQR nebo větší než x0.75 + +3·IQR. Kapitola 1. Boxplot 5 Obrázek 1.1: Součet hodnot ležících pod dolní hradbou a nad horní hradbou z vektoru x. n1 zde značí počet hodnot ležících pod dolní hradbou a n2 počet hodnot nad horní hradbou. Vidíme, že tyto hodnoty tvoří celkem 0.6975 % z celkového počtu pozorování. Platí, že pokud máme data z normálního rozdělení, pravděpodobnost výskytu odlehlých hodnot je zhruba 0.7 %. Pro ukázku si nagenerujme v vektor x obsahující 1000000 hodnot z normálního rozdělení. Zjistíme hodnoty dolní (x0.25 −1.5·IQR) a horní (x0.75 + +1.5·IQR) hradby. Nakonec sečteme počet hodnot ležících pod dolní hradbou a nad horní hradbou. Výsledek lze vidět na obr. 1.1. Poznámka. Při vykreslování krabicového grafu v jazyku se odlehlé a extrémní hodnoty nerozlišují, označují se jako tzv. outliery. 1.2 Konstrukce boxplotu Při sestrojení boxplotu z datového souboru X = {x1,...,xn}, kde xi ∈ R pro i = 1,...,n, postupujeme následujícím způsobem: 1. Data seřadíme podle velikosti od nejmenší hodnoty po největší x(1) ≤ x(2) ≤ ... ≤ ≤ x(n). 2. Nalezneme medián x0.5, dolní kvartil x0.25a horní kvartil x0.75, a na základě těchto hodnot sestrojíme krabičku. 3. Spočítáme mezikvartilové rozpětí IQR, jeho 1.5-násobek a poté určíme dolní hradbu jako max{x(1),x0.25 −1.5IQR} a horní hradbu jako min{x(n),x0.75 +1.5IQR}. 4. Hodnoty ležící za hradbami vykreslíme jako jednotlivé body. Výsledný graf je znázorněn na obr. 1.2. 1.3 Porovnání boxplotu s histogramem Histogram v porovnáním s boxplotem zobrazuje více informací ohledně distribuce dat, naopak na krabicovém grafu je zřetelně vidět medián a odlehlé hodnoty. Z obou grafů lze Kapitola 1. Boxplot 6 Obrázek 1.2: Boxplot vyčíst symetrii, popřípadě asymetrii dat. Na obrázku 1.3 vidíme oba grafy pro nagenerovaná data (n = 100) z normálního rozdělení se střední hodnotou µ = 0 a směrodatnou odchylkou σ = 1 (v za pomocí příkazu rnorm()). Obrázek 1.3: Porovnání histogramu s boxplotem. Kapitola 1. Boxplot 7 1.4 Boxploty v R a příklady na jejich využití Krabicové grafy jsou častým způsobem grafické vizualizace dat a dají se proto vykreslit v téměř každém statistickém softwaru, jako jsou Matlab, STATISTICA, Microsoft Excel nebo SAS. My se zaměříme na zmiňovaný volně dostupný programovací jazyk . Základní syntax pro vykreslení boxplotu v jazyku je ve tvaru boxplot(x), kde x je libovolný číselný vektor, pro který chceme nakreslit graf. Chceme-li nakreslit více boxplotů vedle sebe do stejného grafu, je možné do argumentu vložit seznam (list) nebo tzv. data frame, který má ve svých složkách číselné vektory. Možné volitelné parametry jako určení rozsahu vous nebo horizontální vykreslení lze najít použitím příkazu ?boxplot. Příklad 1. Ukážeme si, jak v jazyce vykreslit krabicové grafy, máme-li k dispozici číselné vektory. Pro jednoduchost si vygenerujeme náhodné vektory, které se řídí normálním rozdělením N(µ,σ2). K tomu využijeme příkaz rnorm(n, mean = , sd = ), kde n je počet čísel, které chceme nagenerovat, argument mean značí střední hodnotu µ a sd značí směrodatnou odchylku σ. Nagenerujeme si 3 vektory délky 10,100 a 1000 z normálního rozdělení N(0,1) za pomocí příkazů a <- rnorm(10) b <- rnorm(100) c <- rnorm(1000) a následně si vykreslíme boxplot s těmito vektory příkazem boxplot(list(a,b,c)). Grafy jednotlivých vektorů lze vidět na obr. 1.4. Příklad 2. Vykreslení krabicových grafů vedle sebe umožňuje rychlé a snadné porovnání charakteristik několika souborů dat. V následujícím obrázku 1.5 jsou zobrazeny boxploty výšek mužů a žen. Data byla získána z průzkumu provedeného na vzorku 98 lidí ve věku od 14 do 62 let prostřednictvím dotazníku na sociální síti. Na první pohled vidíme, že krabička boxplotu je u mužů umístěn výše než u žen, což se dalo předpokládat. Z grafu lze snadno vyčíst medián který u mužů činí zhruba 180 cm, zatímco u žen je to asi 167 cm. Dále podle polohy mediánu v krabičce a délky obou vous lze vyčíst symetrii, popřípadě asymetrii. U mužů se medián nachází přesně ve středu krabičky a obě vousy jsou zhruba stejně dlouhé, což naznačuje symetrii v datech. U žen je naopak medián položen v dolní polovině krabičky a data jsou tím pádem lehce zešikmená. Na obrázku lze také zpozorovat hodnotu, která se výrazně liší od ostatních. Může se jednat o špatně zadanou hodnotu, popřípadě velmi vysokou respondentku a záleží tedy na osobě provádějící analýzu dat, zda tuto hodnotu použije nebo ji vyloučí ze souboru. Kapitola 1. Boxplot 8 Obrázek 1.4: Boxploty jednotlivých vektorů. Obrázek 1.5: Výška lidí v závislosti na pohlaví. Kapitola 1. Boxplot 9 1.5 Varianty boxplotu Původně byl krabicový graf navržen pro ruční počítání, v dnešní době však máme k dispozici počítače a vznikly tak různé varianty boxplotu, které jsou komplexnější, zpravidla obsahující více informací ohledně distribuce dat. My se podíváme na několik nejběžnějších typů boxplotu. 1.5.1 Boxploty s proměnlivou šířkou Jak nám název napovídá, šířka ”krabiček”těchto boxplotů závisí na rozsahu dat každé skupiny. Zpravidla je šířka jednotlivých obdélníků přímo úměrná druhé odmocnině velikosti skupiny. Díky této přidané informaci je, lze snadněji posoudit charakter dat a vyhnout se případné nesprávné interpretaci. Tyto boxploty lze vidět na obrázku 1.6b. 1.5.2 Boxploty se zářezy Boxploty se zářezy, také nazývané ”zubaté boxploty”, mají zúženou střední část krabičky a navíc zobrazují konfidenční intervaly okolo mediánu pomocí ”zářezů”. Délka konfidenčních intervalů je určena tak, aby nepřekrývající se intervaly (zářezy) naznačovaly statisticky významný (obvykle na hladině významnosti 5%) rozdíl mezi mediány skupin dat. Šířka zářezů je přímo úměrná mezikvartilovému rozpětí IQR vzorku dat a nepřímo úměrná druhé odmocnině počtu pozorování n pro jednotlivé skupiny dat. Velikost zářezů okolo mediánů x0.5 lze vypočítat pomocí vzorce x0.5 ±C ·s, (1.5.1) kde C je konstanta, za kterou obvykle volíme 1.7 (důvod pro tuto konvenci je podrobně sepsán v [17]) a s je výběrová směrodatná odchylka mediánu x0.5 daná s = 1.25·IQR 1.35· √ n . (1.5.2) Boxploty se zářezy jsou vykresleny na obrázku 1.6c. Poznámka. Existuje také varianta boxplotu s proměnlivou šířkou se zářezy, popsaná v [17], která kombinuje dvě výše popsané varianty, viz obrázek 1.6d. Boxplot s proměnlivou šířkou se dá v vykreslit pomocí funkce boxplot() s argumentem varwidth = TRUE. Variantu se zářezy lze získat přidáním argumentu notch = TRUE. Obě tyto varianty lze zkombinovat. Kapitola 1. Boxplot 10 (a) Klasický boxplot. (b) Boxplot s proměnlivou šířkou. (c) Boxplot se zářezy. (d) Boxplot s proměnlivou šířkou se zářezy. Obrázek 1.6: Grafy 1.6a, 1.6b, 1.6c a 1.6d ukazují rozdíly mezi jednotlivými, výše uvedenými varianty. Data jsou stejná jako v příkladě 1, jedná se tedy o 3 náhodně nagenerované vektory z normálního rozdělení se střední hodnotou µ = 0 a rozptylem σ2 = 1, délky 10,100 a 1000. Uvedené typy boxplotu se zpravidla používají při porovnávání více souborů dat. Vykreslením klasického krabicového grafu přicházíme o informace ohledně velikosti jednotlivých souborů, to lze napravit použitím varianty boxplotu s proměnlivou šířkou, na obr. 1.6b. Vidíme, že nám šířky krabic dávají jistou představu o rozsazích datových výběrů. Varianta se zářezy se využívá, chceme-li porovnat mediány mezi několika datovými soubory. Na obr. 1.6c se všechny zářezy překrývají a zamítáme tedy hypotézu o rozdílu mezi mediány na hladině významnosti 5 %. Jelikož je boxplot diagnostickým grafem a snažíme se při jeho vykreslení zjistit o datech co nejvíce, vyplatí se obě tyto varianty zkombinovat. Kapitola 2 Bagplot Bagplot je zobecněním jednorozměrného boxplotu a slouží tedy k vizualizaci dvoudimenzionálních statistických dat. Byl poprvé představen v roce 1999 významnými statistiky P. J. Rousseeuwem, I. Rutsem a J. W. Tukeym v článku The Bagplot: A Bivariate Boxplot [12]. Boxplot využívá ke své konstrukci kvantily, které jsou definovány pouze pro jednorozměrné náhodné veličiny. Konstrukce bagplotu je založena na tzv. poloprostové hloubce (definované Johnem W. Tukeym v článku [15]), která zobecňuje kvantily na vícerozměrném prostoru. Bagplot obsahuje 3 hlavní komponenty: 1. bag - polygon obsahující 50% všech ”prostředních” hodnot, bývá vykreslen plnou čarou a jeho vnitřek je vybarven tmavší barvou (obdoba krabice) 2. fence - získá se trojnásobným zvětšením části bag, rozděluje ”vnitřní” hodnoty od odlehlých hodnot, na grafu není nijak zaznačen 3. loop - část grafu obsahující body, které leží mezi bag a fence, bývá vykreslen světlejší barvou než bag Kromě těchto částí, obsahuje bagplot hloubkový medián (analogie jednorozměrného mediánu), který se nachází v centru grafu a je obvykle značen jako křížek. Odlehlé hodnoty jsou zaznačeny červenými hvězdičkami a bývají popsány. K bagplotu je možné přidat vousy jako tomu bylo u boxplotu. V tomto případě se jedná o úsečky vedoucí z mediánu ke každému bodu z loopu. Později si ukážeme, že v případě větších datových souboru se bagplot s vykreslenými vousy stává nepřehledným a je tedy lepší je z grafu vynechat. Podobně jako v jednorozměrném případě, budeme chtít zobrazit některé charakteristiky dat pomocí bagplotu: pozici hloubkového mediánu, rozsah dat (velikost bagu), korelaci mezi proměnnými (orientace bagu a loopu), šikmost dat (tvar bagu a loopu), a chvosty (body v blízkosti hranice loopu a odlehlých hodnot). Pro velmi ”ploché” vícerozměrné datové soubory se komponenta bag stává krabičkou, a máme tedy klasický boxplot. V tomto případě světlejší část loop odpovídá vousům jednorozměrného krabicového grafu. Tato situace je znázorněna na obr. 2.1. – 11 – Kapitola 2. Bagplot 12 Obrázek 2.1: Bagplot pro lineární data. Bagploty se dají vykreslit za pomocí statistických softwarů MATLAB, S-Plus1, popřípadě v jazyce s použitím balíčku aplpack. 1Dostupné z http://www.solutionmetrics.com.au/products/splus/default.html Kapitola 2. Bagplot 13 2.1 Zobecnění známých pojmů Naším prvním úkolem bude jako v případě konstrukce boxplotu si seřadit naše pozorování podle ”velikosti”. Máme-li k dispozici jednorozměrný datový soubor, není problém si ho uspořádat: pokud soubor obsahuje čísla, seřadíme je podle velikosti a v případě, že obsahuje znaky, lze jim přiřadit číselnou hodnotu a poté je seřadit podle velikosti (např. v souboru {Ano, Ne} ”Ano” označíme 1 a ”Ne” hodnotou 0, nebo v souboru {základní vzdělání, střední bez maturity, střední s maturitou, absolvent VŠ} lze ”základní vzdělání” označit hodnotou 0, ”střední bez maturity” hodnotou 1 atd. Výjimku tvoří tzv. nominální data (např. krevní skupiny, barvy), která nelze nijak uspořádat. Seřazení dat podle velikosti je zároveň jedním z prvních kroků, které učiníme při analýze dat, jelikož nám usnadňuje výpočet základních statistických charakteristik jako je medián nebo modus. Pokud však máme vícerozměrný datový soubor, najít takové uspořádání není tak prosté. Dalším možným způsobem, jak lze uspořádat číselnou množinu, je řazení z vnějšku směrem dovnitř. Toho docílíme tak, že každému číslu přiřadíme tzv. hloubku, tedy největšímu, resp. nejmenšímu číslu, přiřadíme hloubku 1, druhému největšímu, resp. druhému nejmenšímu číslu, přiřadíme hloubku 2 atd. Výhodou tohoto typu řazení je jednodušší rozšíření do vícerozměrných prostorů. Nejprve si zadefinujeme hloubku bodu pro jednorozměrná data. 2.1.1 Poloprostorová hloubka a její vlastnosti Definice 3. Hloubka bodu z ∈ R z jednorozměrných dat X = {x1,x2,...,xn}, kde xi ∈ R pro i = 1,...,n, je definována jako depth1(z;X) = min(#{i;xi ≤ z},#{i;xi ≥ z}), kde #{·} je kardinalita množiny {·}. Poznámka. Hloubka bodu je tedy minimum z počtu bodů xi ležících nalevo od bodu z a z počtu bodů ležících napravo od bodu z. Poznámka. Medián je bod (resp. body) s maximální hloubkou. depth1(x;X) je tedy funkce, která každému bodu x ∈ R přiřadí jeho hloubku vzhledem k souboru X = {x1,x2,...,xn} . John W. Tukey byl první, kdo uvedl definici pojmu hloubky pro vícerozměrná data, známý jako poloprostorová hloubka (také Tukeyho hloubka). Poloprostorová hloubka nám umožní zobecnit pojem kvantil (jak si ukážeme později), který byl klíčový při konstrukci boxplotu, jelikož právě díky němu jsme mohli definovat pojmy jako medián, 1. a 3. kvartil. Existují celkem 2 definice poloprostorové hloubky, první z nich je založena na distribuční funkci a druhá je založena na datovém výběru. Protože pracujeme s konkrétními daty, uvedeme si zde druhou variantu. Ačkoliv by pro naše účely vystačila definice hloubky pro dvourozměrná data, zadefinujeme si ho zde obecně pro p−rozměrný prostor. Definice 4. Poloprostorová hloubka depthp(z;X) bodu z ∈ Rp z p-rozměrných dat X = = {x1,x2,...,xn}, kde xi = (xi1,...,xip)T ∈ Rp,i = 1,...,n, jsou jednotlivá pozorování, Kapitola 2. Bagplot 14 se definuje jako nejmenší hloubka bodu z v libovolné jednorozměrné projekci datového souboru: je-li u je libovolný vektor z Rp takový, že u = 1, pak {uT xi}n i=1 je množina jednorozměrných projekcí souboru X a definujeme depthp(z;X) = min u =1 depth1(uT z;{uT xi}n i=1), (2.1.1) a ekvivalentně depthp(z;X) = min u =1 #{i : uT xi ≥ uT z}. (2.1.2) Poloprostorovou hloubku lze taky chápat jako nejmenší počet bodů xi ležících v uzavřeném poloprostoru s hraniční přímkou procházející přes bod z. V dvourozměrném prostoru bychom vypočítali hloubku postupnou rotací přímky procházející přes bod z o 180◦ a spočítali nejmenší počet bodů na polorovinách vytvořených rotující přímkou, viz obr. 2.2. Máme-li datový soubor X = {x1,x2,...,xn} s n pozorováními, lze si vypočítat jejich hloubku, na jejímž základě seřadíme jednotlivá pozorování sestupně. Dostaneme uspořádaný soubor x(1),x(2),...,x(n), kde x(1) má největší hloubku, je tedy nejcentrálnější a x(n) má nejmenší hloubku a je tím pádem nejodlehlejší. Od klasického uspořádání jednorozměrných dat na číselné ose, které začíná nejmenší hodnotou a končí největší, se liší v tom, že začíná ”uprostřed” a postupně se ”šíří” všemi směry. Obrázek 2.2: Hloubka bodu v rovině. Na obrázku je celkem 12 bodů z datového souboru, označených černě a bod A ∈ R2, jehož hloubku chceme zjistit. Hledáme polorovinu, ve které se nachází co nejméně bodů ze souborů, na obrázku je hraniční přímka označena modře a odpovídající polorovina naznačena šipkou. Bod A má tedy hloubku 3. Platí, že všechny krajní body ze souboru mají hloubku 1, body ležící vně konvexního obalu tvořený jednotlivými pozorováními mají hloubku 0 a body náležící do datového souboru mají hloubku aspoň 1. Funkce depthp(z;X) nám udává jakousi polohu bodu v datovém souboru. Právě díky ní můžeme zavést důležitý pojem ”střed” vícerozměrného datového souboru. V našem případě to bude část grafu zvaná bag, která obsahuje 50 % všech hodnot nacházejících se Kapitola 2. Bagplot 15 nejcentrálněji v souboru. Platí, že čím blíž se pozorování nachází ve středu souboru, tím větší bude jeho hloubka a naopak, čím odlehlejší je pozorování, tím menší bude jeho hloubka. Poznámka. Poloprostorová hloubka byla sice první hloubkovou funkcí, od doby svého vzniku v roce 1975 se však objevily další funkce podobného typu. Příkladem je simplexová hloubka, kterou v roce 1990 definovala Regina Y. Liu v článku [6]. Princip této funkce stojí na tom, že v dvourozměrném prostoru libovolné 3 body n-rozměrného datového souboru tvoří trojúhelník (popř. úsečku, ale to pro naše účely není podstatné), dostáváme celkem n 3 trojúhelníků a libovolnému bodu z ∈ R2 pak přiřadíme hloubku jako hodnotu odpovídající počtu trojúhelníků, ve kterých leží. Opět platí, že hloubka bude tím větší, čím blíž se bod nachází v centru souboru. Další hloubkové funkce jsou například oja depth (popsaná v [8]), projekční hloubka (z ang. projection depth definovaná v [3]) nebo prostorová hloubka (z ang. spatial depth, viz [14]). Hloubková funkce je, volně řečeno, jakákoliv nezáporná reálná funkce, která dává bodům z datového souboru lineární uspořádání. Algoritmus pro počítání poloprostorové hloubky depth2(z;X) dvourozměrných dat s lineárně logaritmickou složitostí - O(nlog(n)) navrhli Rousseeuw a Ruts v roce 1996 v článku [9]. Ve vyšších dimenzích je výpočet hloubky časově náročnější kvůli její definici zahrnující nekonečně mnoho projekcí. Hlavní myšlenkou existujících algoritmů je použití projekce do prostoru s nižší dimenzí. Složitost výpočtu hloubky libovolného bodu x ∈ Rp vzhledem k p-rozměrnému datovému souboru je potom O(np−1 log(n)). Výše definovaná poloprostorová hloubka je jednou z nejpoužívanějších hloubkových funkcí, jednak díky své intuitivní definici, a jednak protože splňuje všechny požadované vlastnosti hloubkových funkcí zmíněné v článku [6], poté i dokázané v [18] a těmi jsou: 1. Afinní invariance 2. ”Maximalita” v centru symetrie (pokud existuje) 3. Monotonie vzhledem k nejhlubšímu bodu - pokud se libovolný bod vzdaluje od nejhlubšího bodu po přímce, jeho hloubka klesá monotónně 4. Konvergence (hloubky) k 0 pro body vzdalující se do nekonečna od nejhlubšího bodu Nás hlavně zajímá bod 1, jelikož při analýze dat často transformujeme data - například převody jednotek nebo měn. Díky vlastnosti afinní invariance tedy při posunutí nebo nesingulární lineární transformaci jako jsou například zrcadlení, měnění měřítek nebo rotace (popřípadě jejich kombinací) dat, se bude bagplot transformovat odpovídajícím způsobem. Tedy body, které byly v bagu, zůstanou v bagu, odlehlé hodnoty zůstanou odlehlými apod. Uvedeme si zde několik vlastností poloprostorové hloubky, které byly studovány D. L. Donohem a M. Gaskem (viz [2]). Lemma 2.1.1. Poloprostorová hloubka je invariantní vůči afinním zobrazením: depthp(Az+b;AX +b) = depthp(z;X) pro všechna b ∈ Rp a každé nesingulární lineární zobrazení zadané maticí A rozměru p× p. Kapitola 2. Bagplot 16 Důkaz. Důkaz je popsán v [2]. Hloubka libovolného bodu z ∈ Rp se tedy nemění posunutím, popřípadě lineární transformací bodu z nebo souboru X. To znamená, že poloprostorová hloubka nezávisí na zvolené souřadnicové soustavě. Afinní invariance se využívá také v algoritmu výpočtu poloprostorové hloubky v dvourozměrném prostoru, kde princip spočívá v posunutí bodu z ∈ R2, jehož hloubku hledáme, do počátku a poté v převedení z kartézských souřadnic bodů do polárních souřadnic. Výpočet se ještě usnadní projekcí všech zbylých bodů na jednotkovou kružnici se středem v počátku (tedy v bodě z), poté stačí najít nejmenší počet bodů ležící na půlkružnici s hraniční přímkou procházející přes počátek. 2.1.2 Hloubkové oblasti a kontury Pokud bychom si vypočítali hloubku všech bodů v rovině vzhledem k datovému výběru, zjistili bychom, že mohou nabývat stejných hodnot. To by nemělo být překvapivé, jelikož všechny krajní body datového souboru mají hloubku 1. V jednorozměrném případě, body mající stejný kvantil, leží na témže bodu na číselné ose. Podívejme se nyní, jak to vypadá ve vícerozměrných prostorech. Definice 5. Nechť X = {x1,x2,...,xn}, kde xi ∈ Rp pro i = 1,...,n, je datový soubor. Uvažujme množinu Dk = {z ∈ Rp | depth(z;X) ≥ k}. Dk nazveme oblastí hloubky k a hranice h(Dk) hloubkovými konturami. Podle (2.1.2) je tato množina průnikem všech p-rozměrných poloprostorů obsahujících aspoň n − 1 + k bodů datového souboru X. Hloubkové kontury tedy tvoří konvexní mnohoúhelník, jehož vrcholy jsou buď přímo pozorování xi ∈ X,i = 1,...,n nebo jsou to průsečíky dvou přímek procházejících dvěma pozorováními ze souboru X (převzato z [11]). Konstrukce hloubkových kontur je znázorněna na obr. 2.3. Navíc platí, že každý bod z datového souboru musí náležet aspoň do jedné hloubkové oblasti. Hloubkové kontury byly předmětem studie v článku [2] a my si zde uvedeme jeden z jeho výsledků. Lemma 2.1.2. Hloubkové oblasti tvoří posloupnost vnořených konvexních množin: Dk je konvexní a platí Dk+1 ⊂ Dk. Důkaz. Důkaz je popsán v [2]. Pro názornou ukázku hloubkových kontur je na obr. 2.4 vykresleno celkem 100 pozorování z dvourozměrného normální rozdělení a jejich příslušné hloubkové kontury. Všimněme si, že odlehlá pozorování ovlivní pouze vnější kontury, v našem případě jenom jednu. Tvary kontur nám také dávají představu o tom, jaký tvar mají naše data. Jelikož máme na obrázku data pocházející z dvourozměrného normálního rozdělení (patří do tzv. eliptických rozdělení, které je zobecňují), mají kontury elipsovitý tvar. Hloubkové kontury můžeme chápat jako vícerozměrnou analogii kvantilu: podobně jako pozorování, která mají stejnou velikost, mají rovněž stejný kvantil, body z vícerozměrných dat mající stejnou hloubku leží na společné kontuře, a mimo jiné také rozdělují datový soubor na určitý počet částí. Díky hloubkovým oblastem budeme moci zkonstruovat část Kapitola 2. Bagplot 17 (a) (b) Obrázek 2.3: Ilustrace konstrukce hloubkových kontur. Pozorování z výběru jsou označeny modrými tečkami. Vnější hloubková kontura (kontura hloubky 1) je tvořena konvexním obalem množiny, na obrázku zakreslena plnou modrou čarou. Vrcholy kontury hloubky 2 tvoří buď přímo body z výběru nebo průsečíky přímek procházející přes 2 pozorování, výsledná kontura je na obr. 2.3b vyznačena plnou červenou čarou. −1 0 1 2 −2−1012 X Y Obrázek 2.4: Hloubkové kontury pro náhodně generovaná data dvourozměrného normálního rozdělení. Obrázek byl vykreslen v za použití funkce isodepth z balíčku depth. bag a následně jejím zvětšením i komponentu fence. Jak se tyto části sestrojí, si ukážeme v podkapitole 2.2. První algoritmus pro výpočet hloubkových kontur se složitostí O(n2 logn) zvaný ISODEPTH navrhli I. Ruts a P. Rousseeuw v roce 1996, viz [13]. Pro větší datové soubory (n > 1000) je však jeho použití nepraktické. Rychlejší a účinnější algoritmus se složitostí Kapitola 2. Bagplot 18 O(n2) byl navržen v článku [7]. 2.1.3 Tukeyho medián Na základě poloprostorové hloubky si můžeme definovat analogii klasického mediánu a tím je mnohorozměrný medián, jenž je v centru bagplotu a kolem kterého se pak vykreslují ostatní části grafu (zejména bag a loop). Tentokrát se podíváme pouze na dvourozměrný případ. Definice 6. Tukeyho medián (také poloprostorový medián) z datového výběru X = = {x1,x2,...,xn} definujeme jako bod T∗, pro který platí T∗ = k∗(X), kde k∗ (X) = max z∈R2 (depth(z;X)). Poznámka. Podle definice tedy Tukeyho medián nemusí být bod z datového výběru. Poznámka. Jelikož hloubková funkce depth2(z;X) nabývá hodnot od 0 po n, takový bod z vždy existuje. Poznámka. Podle definice nemusí být poloprostorový medián určen jednoznačně (existujeli více bodů s maximální hloubkou). V takových případech volíme za T∗ těžiště nejhlubší oblasti Dk∗. Můžeme také uvažovat pouze body z našeho souboru X a medián bychom pak definovali jako bod T◦ = k+(X), kde k+ (X) = max i=1,...,n (depth(xi;X)). Zřejmě platí 1 ≤ k+(X) ≤ k∗(X). Důvod, proč bychom volili takovou definici mediánu je jeho jednodušší výpočet, jelikož nemusíme uvažovat všechny body x ∈ R2. V případě, že máme ”rozumná” data, může nám T◦ dávat poměrně přesnou aproximaci skutečného mediánu T∗. Velkou výhodou klasického jednorozměrného mediánu je jeho tzv. robustnost. To znamená, že není citlivý na odlehlé hodnoty, na rozdíl od průměru, na který mají extrémní hodnoty výrazný vliv. Ukažme si to na následujícím příkladu. Předpokládejme, že provádíme měření teploty a získali jsme následující hodnoty: 17.15, 17.01, 17.23, 17.14, 17.61 a chceme zjistit skutečnou hodnotu. Nejprve si vypočítejme průměr: x = 1/5(17.15 + +17.01+17.23+17.14+17.61) = 17.228. Předpokládejme, že jsme se přepsali v jedné z hodnot a máme následující data: 17.15, 170.1, 17.23, 17.14, 17.61. Vypočítáme-li si nyní průměr, dostaneme x = 47.846, což zdaleka neodpovídá skutečné hodnotě. Pokud bychom si ovšem vypočítali medián, vyšel by nám x0.5 = 17.23, medián je tedy robustnějším odhadem. Kapitola 2. Bagplot 19 Dalším možným způsobem, jak lze charakterizovat robustnost je pomocí tzv. bodu selhání (z ang. breakdown point, definovaný v [1]). Zjednodušeně řečeno, bod selhání statistického odhadu je podíl pozorování, která po nahrazení jinými, nepříznivými hodnotami, nám ”pokazí” odhad. V případě výběrového průměru je tato hodnota rovna 1/n, jelikož při změně pouze jedné hodnoty se průměr vychýlí. Naopak pro výběrový medián platí, že má vysoký bod selhání, přesněji 50 %. Tuto důležitou vlastnost si zachoval i Tukeyho dvourozměrný medián, jenž má bod selhání větší nebo rovnu 1/3 (dokázáno v článku [3]). Je možné tedy v datovém souboru X = {x1,x2,...,xn} nahradit nejvýše n/3 pozorování, aniž by se medián T∗ výrazně odchýlil od své původní hodnoty. Toto pozorování je významné, neboť nechceme aby se náš výsledný graf posunul směrem k extrémním hodnotám. Výpočet poloprostorového mediánu není zcela jednoduchý proces, a proto si zde uvedeme několik vět, které nám to usnadní. Předpoklad je, aby data byla v tzv. obecné pozici, viz následující definice 7. Definice 7. Řekneme, že datový soubor X = {x1,x2,...,xn} je v obecné pozici, jestliže v libovolném (p−1)-rozměrném podprostoru leží nejvýše p bodů. Poznámka. Datový soubor je tedy v obecné pozici, obsahuje-li nejvýše dva body na libovolné přímce nebo nejvýše tři body v libovolné rovině atd. Věta 2.1.3. Je-li X v obecné pozici, pak maximální hloubka k∗(X) leží mezi n/(p+1) a n/2 . Důkaz. Důkaz je popsán v [2]. Pro p = 2 tedy platí, že bod k∗(X) = maxz∈R2(depth(z;X)) má hloubku v rozmezí od n/3 do n/2 . Horní hranice n/2 se dá ještě snížit na n/2 pro dvourozměrné případy: Věta 2.1.4. Pro dvourozměrný datový soubor X v obecné pozici platí k∗ (X) ≤ n/2 . Důkaz. Důkaz je popsán v [11]. Základní myšlenka výpočtu Tukeyho mediánu spočívá v nalezení nejhlubší oblasti Dk∗ a poté vypočítání těžiště. Věty 2.1.3 a 2.1.4 nám usnadňují výpočet tím, že dávají meze pro největší hloubku a za jejich použití tedy můžeme sestrojit několik oblastí Dk, kde n/3 ≤ k ≤ n/2 , k nalezení k∗ za podmínky Dk∗ = /0 a Dk∗+1 = /0. Samozřejmě platí, že čím větší je datový soubor, tím je interval n/3 , n/2 širší a výpočet zabere více času. Detailní popis algoritmu výpočtu poloprostorového mediánu lze najít v článku [11]. Kapitola 2. Bagplot 20 2.2 Konstrukce bagplotu Mějme datový soubor X = {x1,x2,...,xn} s pozorováními xi = (xi1,xi2)T ∈ R2,kde i = = 1,...,n. Bagplot popsaný na začátku této kapitoly zkonstruujeme následujícím způsobem (konstukce je založena na popisu z článku [10]): 1. Nalezneme Tukeyho medián T∗ (bod s největší hloubkou, popř. těžiště nejhlubší oblasti). 2. Zkonstruujeme komponentu bag (část grafu obsahující 50 % nejhlubších bodů): • Nalezneme dvě po sobě jdoucí hloubkové oblasti, pro které platí, že jedna obsahuje nejvýše polovinu bodů z datového souboru a druhá jich obsahuje více než polovinu. Označme tyto oblasti Dk a Dk−1 a počet bodů ležících v nich #Dk a #Dk−1. Platí #Dk ≤ n/2 ≤ #Dk−1. • Spočítáme parametr λ, který určuje relativní vzdálenost bagu od obou oblastí Dk a Dk−1, následovně: λ = n/2 −#Dk #Dk−1 −#Dk . • Vrcholy bagu získáme lineární interpolací mezi vrcholy hloubkových oblastí #Dk a #Dk−1 pomocí parametru λ. Nechť V = {v1,v2,...,vq} jsou vrcholy hloubkové kontury Dk a označme l1,l2,...,lq přímky procházející vrcholy vi,kde i = 1,...,q, a mediánem T∗. Průsečíky přímek li,kde i = 1,...,q s druhou konturou Dk−1 označme u1,u2,...,uq. Nechť W = {w1,...,wq,wq+1,..., wr} jsou vrcholy bagu. Vrcholy wi,kde i = 1,...,q vypočítáme následovně: wi = λvi +(1−λ)ui, kde i = 1,...,q. Zbylé vrcholy bagu wq+1,...,wr spočítáme analogicky: nechť V = {vq+1, vq+2,...,vr} jsou vrcholy kontury Dk−1 a lq+1,...,lr jsou přímky procházející těmito vrcholy a mediánem T∗. Průsečíky těchto přímek s vnitřní konturou Dk označme uq+1,...,ur, vrcholy wj,kde j = q+1,...,r jsou pak dány wj = λuj +(1−λ)vj, kde j = q+1,...,r. • Sestrojíme bag ze všech vrcholů W. Protože byly Dk a Dk−1 konvexní mnohoúhelníky, bude bag opět konvexním mnohoúhelníkem. Konstrukce bagu je znázorněna na obr. 2.5. 3. Sestrojíme fence (není v grafu zaznačena) trojnásobným2 zvětšením bagu vzhledem k mediánu T∗. Nechť W = {w1,...,wr} jsou vrcholy bagu a p1,..., pr jsou polopřímky vedoucí z mediánu T∗ přes jednotlivé vrcholy bagu. Nechť ki = {x ∈ R2; T∗x = 3 · T∗wi }, kde i = 1,...,r. Vrcholy fence f1,...,fr získáme jako průsečíky polopřímky pi, kde i = 1,...,r s odpovídající si kružnicí ki. Tato konstrukce je znázorněna na obr. 2.6. Pozorování za hranicí komponenty fence se označují jako odlehlá. 2Tato hodnota je zvolena tak, aby v průměru 0.5 % pozorování z dvourozměrného normálního rozdělení byla považována za odlehlá, viz [10]. Kapitola 2. Bagplot 21 (a) (b) Obrázek 2.5: Sestrojení bagu. Na obr. (a) vedeme přímky l1 a l2 přes vrcholy v1 a v2 kontury Dk a mediánem T∗, vrcholy bagu w1, resp. w2 dostáváme interpolací mezi vrcholy v1 a u1, resp. v2 a u2. Na obr. 2.5b zase vedeme přímky přes vrcholy kontury Dk−1 a postupujeme analogicky. Výsledný polygon bag se sestrojí ze všech bodů wk, kde k = 1,...q,q+1,...,r. 4. Poslední část loop obsahuje všechny body nacházející se mezi bagem a fence. Vrcholy této komponenty jsou tedy tvořeny konvexním obalem všech neodlehlých pozorování. Výsledný graf lze vidět na obr. 2.7. Kapitola 2. Bagplot 22 Obrázek 2.6: Konstrukce fence. Bag je tvořen 5 body, na obrázku vykreslen modře. Jeho trojnásobným zvětšením vzhledem k mediánu T∗ dostáváme fence, na obrázku vyznačen přerušovanou červenou čarou. Kapitola 2. Bagplot 23 Obrázek 2.7: Bagplot z vygenerovaných dat s dvourozměrným normálním rozdělením (n = 50). Tukeyho medián je zaznačen červeným kosočtvercem uvnitř bagu, vnitřního polygonu vybarveného tmavou šedou obsahující 50 % nejhlubších bodů. Vnější polygon loop (vybarvený světlejší barvou) je tvořen všemi body ležící mezi bagem a fence (na obrázku vykreslený přerušovanou čarou), který vznikl trojnásobným zvětšením bagu vzhledem k mediánu. Máme pouze jednu odlehlou hodnotu zaznačenou červenou hvězdičkou. Kapitola 2. Bagplot 24 2.3 Bagploty v R a příklady na jejich využití Podívejme se nyní na několik příkladů, na kterých si ilustrujeme využití bagplotu. Nejprve si ukažme, jak lze bagplot sestrojit v jazyku . K tomu je zapotřebí načíst jeden z následujících dvou balíčků: aplpack nebo mrfDepth. Oba tyto balíčky nabízí funkce bagplot() sloužící k vykreslení grafu. V této práci se zaměříme na první zmiňovaný aplpack, jelikož nabízí více modifikací výsledného grafu. Výhodou použití balíčku mrfDepth je možnost výpočtu částí grafu na základě jiné hloubky než poloprostorové (např. projekční hloubky), popřípadě vykreslení fence. Základní syntax pro konstrukci bagplotu je ve tvaru bagplot(x, y), kde x, resp. y, jsou x-ové, resp. y-ové, hodnoty pozorování z datového výběru. Příklady volitelných argumentů: • factor - parametr určující velikost fence vzhledem k bagu, standardně nastaveno na 3 • show.whiskers - zobrazí vousy k pozorováním ležící mezi bagem a fence • show.looppoints - zobrazí body ležící mezi bagem a fence • show.bagpoints - zobrazí body v bagu • transparency - vykreslí graf průhledně Další možné argumenty lze najít přímo v programu použitím příkazu ?bagplot. Příklad 3. Ukážeme si, jak vykreslit bagplot z číselných vektorů. Opět si pro jednoduchost vygenerujeme náhodné vektory x,y délky 500, které se řídí normálním rozdělením: x <- rnorm(500) y <- rnorm(500) Zkusíme si sestrojit bagplot z těchto vektorů v základní formě bez jakýchkoliv argumentů příkazem bagplot(x,y). Graf lze vidět na obr. 2.8a. Takto vykreslený graf však není přehledný, a to hlavně kvůli vousům. Zkusme je tedy odstranit nastavením argumentu show.whiskers na FALSE. Výsledek je na obr. 2.8b. Ještě můžeme lépe zviditelnit odlehlé hodnoty přidáním parametru cex = 1, viz obr. 2.8c. V případě velkého počtu pozorování je vhodné nevykreslovat vnitřní body a toho docílíme volbou argumentů show.bagpoints = FALSE a show.looppoints = FALSE, výsledný graf je na obr. 2.8d. Docílíme tak přehlednější vizualizace na úkor výhod korelačního diagramu (též dvourozměrného bodového grafu), jako jsou například rozpoznání shluků nebo děr v datech. Kapitola 2. Bagplot 25 (a) Bagplot s vousy. (b) Bagplot bez vousů. (c) Bagplot se zvýrazněnými odlehlými body. (d) Bagplot bez vnitřních bodů. Obrázek 2.8: Různé varianty bagplotu. Kapitola 2. Bagplot 26 Příklad 4. Na tomto příkladu si ilustrujeme, jaké charakteristiky lze z dat vyčíst sestrojením bagplotu. Použijeme data z příkladu 2, máme tedy údaje o výšce a váze 98 lidí ve věku od 14–62 let. Nutno poznamenat, že vzorek dat je příliš malý a nereprezentuje tak skutečnost. Na obr. 2.9 je vykreslený bagplot pro výšku a váhu lidí. Medián je na obrázku označen červenou hvězdičkou, vidíme tedy, že průměrný člověk váží necelých 70 kg a měří asi 170 cm. Orientace bagu a loopu naznačují kladnou korelaci mezi proměnnými. Pozice mediánu (zhruba uprostřed bagu) a eliptické tvary bagu a loopu svědčí o symetričnosti, trochu to kazí pravá část loopu, která je širší a data jsou tak lehce zešikmená (zřejmě je to dáno malým rozsahem výběru). Dále na obrázku vidíme dvě odlehlé hodnoty, zaznačené červenými tečkami, a několik pozorování jim blízkých, které natahují loop. Obrázek 2.9: Výška lidí v závislosti na váze. Na rozdíl od předchozího grafu 2.9, bagplot vykreslený na obr. 2.10 nenaznačuje žádnou korelaci mezi proměnnými. Data jsou silně zešikmená, lze to poznat jednak z pozice mediánu v bagu a jednak z pozice bagu v loopu, také nám k tomu napomáhají vykreslená pozorování. Graf sice nemá žádné odlehlé hodnoty, ale vidíme, že několik bodů, hlavně v pravé a horní části grafu, natahují hranice loopu. Kapitola 2. Bagplot 27 Obrázek 2.10: Výška lidí v závislosti na věku. Kapitola 2. Bagplot 28 Příklad 5. Boxplot si získal svou popularitu kompaktností a rychlým a přehledným zobrazením distribuce více vzorků dat, umožňující jejich porovnání, v jednom grafu. Zkusme si tedy vykreslit překrývající se bagploty do jednoho grafu pomocí argumentu transparency = TRUE. Použijeme data z minulého příkladu, tedy údaje o váze a výšce lidí, a vykreslíme si bagplot zvlášť pro muže a zvlášť pro ženy, viz obr. 2.11. Obrázek 2.11: Bagploty ukazující rozdíl mezi váhou a výškou mezi muži (na grafu zaznačeni modře) a ženy (červeně). Porovnáme-li mediány, snadno z grafu vyčteme, že muži jsou v průměru o 15 cm vyšší a zhruba o 15 kg těžší. Jak bag, tak i loop jsou u mužů položeny výš a víc vpravo, a naznačují tak vyšší váhu i výšku. Na obrázku jsou také zřetelně vidět odlehlá pozorování pro obě skupiny dat. Při vykreslení dvou bagplotů lze ještě z obrázku vyčíst potřebné informace, zkusme jich teď vykreslit tři do jednoho grafu. Rozdělíme si náš soubor na tři zhruba stejně velké skupiny na základě věku respondentů (pomocí příkazu quantile()). První skupinu tvoří respondenti mladší 20 let, druhou od 20 do 23 let (včetně) a třetí skupinu tvoří osoby starší 23 let. K vykreslení jednotlivých grafů na obrázku 2.12 jsem využil funkci geom bag3, která pouze vypočítá potřebné souřadnice k sestrojení bagplotu, samotný graf ale nevykreslí. K tomu jsem použil funkci ggplot z balíčku ggplot24, důvodem je jednodušší zápis a taky estetičtější vzhled. Z obrázku 2.12 vidíme, že již při vykreslení tří překrývajících se bagplotů se graf stává nepřehledným. Autor diplomové práce [5] navrhuje při vizualizaci více skupin vykreslit pouze konvexní obal bagu, popřípadě pouze konvexní obal loopu, a jednotlivé skupiny potom odlišit různými barvami. 3Dostupné z https://gist.github.com/benmarwick/00772ccea2dd0b0f1745 4Dostupné z https://ggplot2.tidyverse.org Kapitola 2. Bagplot 29 Obrázek 2.12: Bagploty pro jednotlivé věkové kategorie, bez odlehlých hodnot. Bag je vždy vykreslen tmavší barvou, loop světlejší a medián je označen symbolem ”+”. 2.4 Odlehlost a její využití Velkou výhodou bagplotu je snadná detekce odlehlých hodnot bez předpokladu normality. Je však náročný na výpočet a chceme-li pouze odhalit neobvyklá pozorování, existují jednodušší způsoby. Jedna z nich je založena na tzv. odlehlosti (z ang. outlyingness), což lze chápat jako opak hloubky. Platí tedy, že čím odlehlejší je hodnota, tím větší bude mít hodnotu odlehlosti. Následující definice a pozorování jsou převzaty z [2]. Definice 8. Nechť X = {x1,x2,...,xn} je datový soubor, odlehlost bodu z ∈ R vzhledem k výběru X je definována jako r1(z;X) = | z−x0.5 | MAD(X) , (2.4.1) kde x0.5 značí výběrový medián, a MAD (z ang. median absolute deviation) značí mediánovou absolutní odchylku, tedy medián z {| xi −x0.5 |}n i=1. MAD je robustní mírou rozptýlenosti a na rozdíl od rozptylu nebo směrodatné odchylky je méně ovlivněna extrémními hodnotami a nevyžaduje normalitu dat. Analogicky jako v případě vícerozměrné hloubky můžeme definovat odlehlost obecně pro p-rozměrný prostor. Definice 9. Nechť X = {x1,x2,...,xn}, kde xi = {xi1,...,xip}T ∈ Rp pro i = 1,...,n, je datový soubor, u ∈ Rp, u = 1. Odlehlost bodu z ∈ Rp vzhledem k výběru X definujeme jako rp(z;X) = max u =1 r1(uT z;{uT xi}n i=1). (2.4.2) Kapitola 2. Bagplot 30 (a) (b) Obrázek 2.13: Porovnání hloubky s odlehlostí. Na obou grafech jsou vykresleny doby mezi erupcemi v závislosti na době trvání erupcí gejzíru Old Faithful v americkém národním parku Yellowstone. Data pochází z knihovny datasets v . V souboru bylo celkem 299 pozorování zaznamenaných od 1. do 15. srpna roku 1985. Hloubka (v tomto případě navíc dělena rozsahem výběru n) a odlehlost jednotlivých bodů byly vypočteny za pomocí funkcí depth a outlyingness z balíčku mrfDepth. Vlastnosti odlehlosti jsou analogické vlastnostem hloubky: 1. Odlehlost je invariantní vůči afinním zobrazením: rp(Ax+b;{AXi +b}) = rp(x;X) pro všechna b ∈ Rp a každé nesingulární lineární zobrazení A. 2. Kontury odlehlosti Or = {x ∈ Rp | rp(x;X) ≥ r} jsou konvexní a vnořené: Or+h ⊂ Or pro h > 0. 3. Pro symetrická data se minimální odlehlost blíží k 0. Platí, že čím je větší n, tím je vyšší pravděpodobnost konvergence. 4. Pro data z eliptického rozdělení kontury odlehlosti konvergují k eliptickému tvaru dat. Nevýhodou bagplotu je doba trvání jeho výpočtu, týká se to hlavně mediánu, jehož časová složitost činí O(n2(logn)2). Autoři článku [12] navrhli, aby se při větších souborech vypočítal medián (a následně i bag) pouze z menšího, náhodně vybraného vzorku původních dat (se 150 pozorováními). Výpočet ostatních částí grafu se pak provede na celém datovém souboru. Takto lze sestrojit bagplot pro výběr, jehož rozsah se pohybuje v rozmezí několika tisíců bodů. Bagplot lze také vykreslit za použití odlehlosti a výrazně se tím zkrátí doba jeho výpočtu, tento postup navrhli M. Hubert a S. van der Veeken v článku [4]. Místo mediánu se bere bod s nejnižší odlehlostí, bag tvoří 50 % pozorování s nejnižší odlehlostí. Takto sestrojený bagplot ovšem není tak robustní jako bagplot založený na poloprostorové hloubce a je tedy citlivější na větší množství odlehlých pozorování. Závěr V této práci jsme si představili dvě metody průzkumové analýzy dat sloužící k rychlému posouzení charakteristik dat jako je distribuce nebo korelace mezi dvěma proměnnými, a také k odhalení odlehlých hodnot, které jsou nutné před samotnou analýzou vyšetřit. V první kapitole jsme si popsali boxplot, který je známým a často používaným nástrojem vizualizace jednorozměrných dat. Jeho výhodou je především jednoduchost a kompaktnost. Využívá se hlavně při porovnávání více skupin dat. V dnešní době jsou však data často mnohorozměrného charakteru a boxplot je schopen vykreslit pouze vztah mezi kategoriálním a kvantitativním proměnným, ne však mezi dvěma kvantitativními proměnnými. Dvourozměrným zobecněním boxplotu je tzv. bagplot, kterým jsme se zabývali ve druhé kapitole. Nejprve jsme si popsali koncept poloprostorové hloubky zobecňující kvantily, na kterých byl založen boxplot. Popsali jsme si konstrukci bagplotu a ukázali jsme, jak se dá graf sestrojit v . Na závěr jsme si uvedli několik příkladů, na kterých jsme ilustrovali výhody použití bagplotu. Mnohé metody detekce odlehlých hodnot vyžadují, aby data byla z normálního rozdělení. Jednou z hlavních předností bagplotu, a také boxplotu, je ten, že nepředpokládá normalitu v datech. Tyto diagnostické grafy lze tedy vykreslit aniž bychom museli napřed něco ověřit a navíc nám poskytují užitečné informace ohledně zkoumaných dat. V případě bagplotu nám navíc část bag dává představu o tom, jaký tvar mají naše data. Použitím statistického softwaru je konstrukce otázka několika minut. Je tedy vhodné si je vykreslit před dalším zkoumáním dat. Cílem práce nebylo pouze grafy srozumitelně popsat, ale také poskytnout stručný návod, jak vykreslené grafy správně interpretovat. – 31 – Seznam použité literatury [1] DONOHO, D. L. a P. J. HUBER. The notion of breakdown point. V ”A Festschrift for Erich L. Lehmann”. Wadsworth, Belmont, CA, 1983, 157–184. [2] DONOHO, D. L. a M. GASKO. Multivariate Generalizations of the Median and Trimmed Mean, I. Technical Report 133, Dept. Statistics, Univ. California, Berkeley, 1987. [3] DONOHO, D. L. a M. GASKO. Breakdown Properties of Location Estimates Based on Halfspace Depth and Projected Outlyingness. The Annals of Statistics. 1992, 20(4), 1803–1827. DOI: 10.1214/aos/1176348890. ISSN 0090-5364. Dostupné také z: http://projecteuclid.org/euclid.aos/1176348890 [4] HUBERT, M. a S. VAN DER VEEKEN. Outlier detection for skewed data. Journal of Chemometrics. 2008, 22(3), 235–246. DOI: 10.1002/cem.1123. ISSN 08869383. Dostupné také z: http://doi.wiley.com/10.1002/cem.1123 [5] KONTTO, J. P. Visualizing large epidemiological data sets using depth and density. 2007. Diplomová práce. University of Helsinki, Faculty of Social Sciences, Statistics. [6] LIU, R. Y. On a notion of data depth based on random simplices. Annals of Statistics. 1990, 18(1), 405–414. DOI: 10.1214/aos/1176347507. [7] MILLER, Kim, S. RAMASWAMI, P. ROUSSEEUW, J. A. SELLARES, I. STREINU a A. STRUYF. Efficient computation of location depth contours by methods of computational geometry. Statistics and Computing. 2003, 13(2), 153-162. DOI: 10.1023/A:1023208625954. ISSN 09603174. Dostupné také z: http://link.springer.com/10.1023/A:1023208625954 [8] OJA, H. Descriptive Statistics for Multivariate Distributions. Statistics & Probability Letters. 1983, 327–332. [9] ROUSSEEUW, P. J. a I. RUTS. Algorithm AS 307: Bivariate Location Depth. Applied Statistics. 1996, 45(4). DOI: 10.2307/2986073. ISSN 00359254. Dostupné také z: https://www.jstor.org/stable/10.2307/2986073?origin=crossref [10] ROUSSEEUW, P. J. a I. RUTS. The Bagplot: A Bivariate Box-and-Whiskers Plot. Technical report. Universitaire Instelling Antwerpen, Belgium, 1997. [11] ROUSSEEUW, P. J. a I. RUTS. Constructing the bivariate Tukey median. Statistica Sinica. 1998, 8(3), 827–839. – 32 – Seznam použité literatury 33 [12] ROUSSEEUW, P. J., I. RUTS a J. W. TUKEY. The Bagplot: A Bivariate Boxplot. The American Statistician. 1999, 53(4), 382–387. [13] RUTS, I. a P. ROUSSEEUW. Computing Depth Contours of Bivariate Point Clouds. Computational Statistics & Data Analysis. 1996, 23, 153–168. DOI: 10.1016/S0167-9473(96)00027-8. [14] SERFLING, R. A Depth Function and a Scale Curve Based on Spatial Quantiles. In: Dodge Y. (eds) Statistical Data Analysis Based on the L1-Norm and Related Methods. Statistics for Industry and Technology. Birkhäuser, Basel, 2002, , 25–38. DOI: https://doi.org/10.1007/978-3-0348-8201-9 3. [15] TUKEY, J. W. Mathematics and the Picturing of Data. Proceedings of the International Congress of Mathematicians. 1975, 2, 523–531. [16] TUKEY, J. W. Exploratory Data Analysis. Addison-Wesley, 1977. [17] TUKEY, J. W., R. MCGILL a W. A LARSEN. Variations of Box Plots. The American Statistician. 1987,32(1), 12–16. DOI: 10.2307/2683468. [18] ZUO, Y. a R. SERFLING. General notions of statistical depth function. The Annals of Statistics. 2000, 28(2), 461–482.