Vyberte si statistickou metodu. Naprogramovali jsme ji pro vás

30.01.2023

Autor: Milan

Intervalové odhady

Pokud potřebujete z vašeho souboru odhadnout parametr populace (střední hodnota, rozptyl), musíte realizovat intervalový odhad. K čemu že to použijte? Pokud máte vzore dat, třeba 20 hodnot, nemůžete spočítat průměr a říct, že populace má takový a makový např. průměrný věk apod. Musíte vypočítat intervalový odhad a říct, že s pravděpodobností 0,95 (95%) spadá věkový průměr populace do nějakého intervalu. Zde je pár příkladů pro lepší pochopení:

  1. Odhad středního výdělku pracovníků v nějaké společnosti.
  2. Odhad střední délky života dané populace (v nějaké oblasti, třeba města, kraje apod.).
  3. Odhad středního hodnocení filmů dle hodnotení uživatelů.
  4. Odhad středního věku zákazníků pro nějaký typ produktu (nafukovací panna, bambusové ponožky, ...).
  5. Odhad středního počtu návštěvníků určité turistické lokality.

Zde vám napíšu program v Pythonu, který vám spočítá oboustranný intervalový odhad. Musíte si tam akorát vypsat svá data. 

Nejprve odhadneme střední hodnotu. Já jsem si tu vymyslel data velikosti bot u mužů. Naměřil jsem je a teď mě zajímá, v jakém intervalu se pohybuje střední hodnota velikosti bot u mužů. 

Pokud budete chtít program použít pro svá data, akorát si místo mých velikostí bot nakopírujete nebo vypíšete svá data, která si samozřejmě musíte oddělit čárkou. 

Nyní vám poskytnu program pro intervalový odhad variačního rozptylu celé populace. Prostě rozptylu. Takže máme nějaký vzorek dat a chceme na jeho základě určit, jaký rozptyl má celá populace. To taky bývá častá úloha a můžete ji používat v diplomkách. Ještě vám zase uvedu příklady použití:

  1. Odhad rozptylu cen bytů v nějaké oblasti (ak se mohou lišit).
  2. Odhad rozptylu měsíčních/ročních úspor nějaké rodiny.
  3. Odhad rozptylu velikosti plodů u nějakého stromu třeba.
  4. Odhad rozptylu doby reakce populace na nějaký typ zprávy, např. na internetu.
  5. Odhad rozptylu výkonu zaměstnanců na konkrétní pozici ve firmě (výkon bychom ale museli nějak měřit).

Zde je prográmek v Pythonu. Opět si tam jen dejte svá data. Já tam mám třbea výšky lidí v nějaké oblasti.

Podíváme se na další věc, která se používá v diplomkách. Je jí testování, jestli má něco normální rozdělení. Co to je a proč to děláme? Prostě normální rozdělení je klasický klobouček. Tímto statistickým rozděléním se řídí snad všechno možné u populace (nejen lidí). Ve zkratce znamená, že průměrných lidí je nejvíce a těch dobrých a špatných už méně. Často se to používá v psychologii a pedagogice, takže používejte ve svých diplomkách. Když třeba realizuji nějaký test pro středoškoláky, musím otestovat, jestli má adekvátní úroveň. Otestuji třeba 400 žáků a zkontroluji, jestli výsledky mají normální rozdělení. Pokud ano, asi jsem ho vymyslel dobře. Ukážeme si tři testy normality a 2 grafické metody. Všechny můžete použít, není to nic těžkého.

Testy normality

První si řekněme, co je to vlastně to normální rozdělení a kde jej můžeme využít. Všichni si pamatujeme, že ve škole bylo vždycky nejvíce takových těch trojkařů, už méně výborných žáků a těch úplně hlupých (dnes je to v realitě asi trochu jinak). Tak jako obrovských a maličkých lidí je daleko méně než těch průměrně vysokých. Stejně je to i s váhou, velikostí nohou, prstů a... Prostě všechno, co je extrémní, je počtem minoritní. U populace lidí to tak prostě je. Sice dnes je strašně moc idiotů na světě, ale pořád to nemáme úplně jak vhodně změřit. Museli bychom mít např. medotu, která zjistí míru nekritičnosti či reprodukce dezinformací apod. Normální rozdělení vypadá následovně. 

Většina lidí už takový graf někdy viděla, říká se mu klobouček, ale je to Gaussovo rozdělení, často také normální rozdělení. Co nám ten graf říká? Abychom to pochopili, ukážeme si ještě jeden. Představte si, že budeme měřit lidem veliskost nohy. Podle velikosti (s přesností na milimetry) se budou řadit vedle sebe. Kdyby následující graf byl pohled shora na tu řadu lidí, mohlo by to vypadat asi takto.

Jak vidíte, nejvíce lidí se vyskytuje někde kolem 28 cm (tam je jejich hlouček nejhustší) a směrem k větší i menší velikosti nohy se počet jedinců zmenšuje. To přesně ukazuje normální rozdělení. Průměrných hodnot je nejvýce a extrémních už méně. Všimněte si, člověk s 36cm nohou tam už stojí sám, stejně jako s 21cm. Kdybychom si udělali skupinky podle intervalů, třeba 21 až 25 cm, 25,1 až 29 cm, 29,1 ž 31 cm, 31,1 až 35 cm a 35,1 a více, a do každé lidi zařadili podle toho, jak velkou mají nohu, pak nejvíce lidí bude ve skupinkách někde v intervalech 25,1 až 29 a 29,1 až 31,1. Asi je to ale nešťastné rozdělení. Takové špatně vycentrované. lepší by bylo udělat intervaly tak, jak je to na obrázku níže. Máme tam tedy intervaly a v nich výška sloupečku představuje, kolik těch lidiček do příslušného intervalu spadá.

A teď vidíte, co ta modrá čára vlastně znamená. Ale Graf to není hezký, těch intervalů by mělo být více, není to moc vypovídající. Máte teď ovšem představu o tom, co je normální rozdělení. Zkusíme si napsat programy v R, které vám otestují, jestli jsou vaše data normálně rozdělena.

Prvním je Shapiro-Wilk test. Je poměrně citlivý na data, mže někdy poskytovat "falešný" výsledek, ale to nevadí, stejně si vždycky data musíte zkontrolovat graficky. Tentokrát vám poskytnu kód v jazyce R. Jen si přepnete jazyk na R. Je to ve videu úplně nahoře. 

Místo textu "vaše data oddělena čárkou" nahoře si vložíte vlastní data oddělená čárkou, takže pokud budete řešit výsledky testu studentů, bude tam třeba c(78,65,91,65,43,58,59 atd.). Důležité hodnoty vám to vypíše (p-value a tak), ale hlavně se vám zobrazí, jestli jsou data normálně rozdělena, nebo ne. Ovšem všechny testy normality potřebují fakt hodně dat, čím více, tím lépe. Nemusí poskytovat spolehlivé výsledky pro malé soubory třeba 20 hodnot. Ideální, když zadáte 200, 300, 400 a více hodnot. 

Dalším testem, kteří řeší to samé, je tzv. Kolmogorovův-Smirnovův test. Ten obecně posuzuje, jestli vaše data jsou z nějakého teoretického rozdělení, nemusí jít přímo o normální, ale třeba o stejnoměrné, Poissonovo apod.) Napíšeme ho ale tak, aby opravdu testoval, jestli data pocházejí z rozdělení normálního. Zadáte do RStudia následující jednoduchý kód.

Dalším statistickým testem, který můžeeme použít k testování normality našich dat, je Andersonův-Darlingův test. Ten obecně dokáže rozpoznat, jestli data pocházejí z nějakého rozdělení. My ale potřebujeme zjistit, jestli z normálního. Je to taková variace na předchozí K-S test. Jeho výsledek je trošku přísnější a citlivější na extrémy, krajní hodnoty či ocasy. Každopádně se nebojte jej použít. Určitě oslníte, protoŽe pokud není Váš vedoucí statistik, ví o tomhle úplné pd :D. Zde je kód v R.

Tady je to teda ošetřeno, abychom testovali normální rozdělení, použili jsme balíček "nortest". Opět si tam dejte vlastní data a oddělte je čárkou.

Ze statistických testů to bude vše, i když jich ještě pár pro normální rozdělení je, ale to zase příště. Nyní si ukážeme grafické metody pro normalitu. Totiž, testy jsou sice fajn, ale často stačí grafickou metodou posoudit, jestli může jít o data z normálního rozdělení. K tomu nám poslouží histogram, Q-Q graf a P-P graf. Hrozné, že?

Zde je Q-Q graf, podle kterého můžeme vizuálně posoudit, jestli jsou data normálně rozdělena nebo se tomu aspoň blíží. 

Z takového kódu dostaneme krásný Q-Q graf. Hlavně jde vidět, že není z Excelu, což každý profi vedoucí musí ocenit. 

Musíte se ale naučit v něm číst. Vidíte, že se tam nhodnoty (černé kuličky) kroutí kolem té čáry. My ale dokážeme z toho kroucení ledacos poznat. Hlavně tedy z tvau toho "hada". Náš graf ovšem nemá nějak specifický tvar. Jde opravdu o hodnoty, které jsou téměř přesně normálně rozděleny. Sám bych řekl, že jde o hodnoty, které pocházejí přímo z nějaké funkce, která generuje čísla z normálního rozdělení. Ukážeme si ale jiné specifické tvary.  Q-Q graf může mít následující tvar.

Tento tvar už o něčem vypovídá. Pokud jsou body v grafu ve tvaru takovéto prohlubně, pak jsou naše data jsou zešikmena vlevo. Co to znamená? Podívejte se na histogam, který přikládám níže. 

Takže máme nějaká data v intervalech (ve sloupečcích), je jich hodně někde mezi 1 a 2 a taky  celkem dost mezi 0 a 1. Od hodnoty 2 do 8 už jich tolik není. Modrá křivka nám v tomto intervalu ukazuje, jak by vypadalo normální rozdělení. Červená křivka s histogramem představuje počty našich naměřených dat.

Q-Q graf může vypadat taky jinak. Místo prohlubně tam budeme mít kopeček. Takže následovně.

To je zase opačná situace. Tentokrát máme data zešikmena vpravo. Už vám tam nemusím programovat čáry, vidíte sami, že je to zešikmeno vpravo oproti normálnímu rozdělení, ale jako hodně. 

To jsou případy jiné šikmosti. Ta samozřejmě nemusí být tak extrémní, ale vždy ji poznáte podle toho, že má graf tvar "U" nebo kopečku, alespoň přibližně. Vaše data mohou být také méně špičatá oproti normálnímu rozdělení, tohle je fakt extrém. 

Pokračování brzy:)