Loni v září napsal Ray Light mini how-to, jak vyrobit v GoodData směrodatnou odchylku (dneska už tam je přímo vlastní funkce). S nástupem GoodData AQE se hřiště s metrikama krapet rozšířilo a začne se ukazovat, kdo nad věcma jak přemýšlí.
Směrodatná odchylka mě trochu trápí, resp. její skutečná aplikace. Pořád jsem si říkal, k čemu je mi dobré vědět, že nějaké věci jsou větší než 2 směrodatné odchylky? V Rayově grafu to vypadá takhle:
Pak mě Ondra Popelka přivedl hláškou “to je celý na prd, když nevíš rozložení dat” k tomu, trochu si to pro sebe sesumírovat. Nuže…
Co je směrodatná odchylka?
Matematickou definici si můžete najít na wikipedii. Humpolácky řečeno, je směrodatná odchylka číslo, které lze použít dvěma způsobama:
- definuje nám interval, do kterého spadá určité % událostí/hodnot/…; pokud sledovaná data mají navíc tzv. "normální rozložení”, víme o tomhle intervalu i pár dalších vlastností
- za všech okolností nám říká, o kolik je nějaká množina dat uvnitř různá
Pokud si vyneseme data do grafu tak, že na Y-ose budeme mít četnost a na X-ose budeme mít hodnotu (teplota, prodejní cena, barva vlasů, značka ukradeného auta, …), vyrobíme graf, který nám ukazuje, jak máme data rozprostřená. Pokud bude tvar připomínat zvoneček (bell curve), máme normální rozložení. U něj platí, že vrcholek udává nejčetnější výskyt (osa Y) a zároveň je tohle číslo průměrem (a i mediánem). Takovéhle rozložení dat má spousta dějů v biologii, chyby měření v nějaké laboratoři nebo třeba počty lidí podle jejich IQ.
Všichni víte, že se říká, že IQ 100 je průměr. Pak platí, že nejvíc lidí má IQ 100 a čím menší/větší IQ, tím méně lidí jej má.
Pokud spočítáme směrodatnou odchylku nad daty, které mají normální rozložení, získáme super věc: interval +/- 1 směrodatná odchylka od průměru bude pásmo, do kterého se nám vejde 68% všech hodnot. Pokud vezmeme pásmo +/- 2 směrodatné odchylky, získáme pásmo ve kterém máme 95% všech hodnot.
(2) Různorodost dat
Mám-li mnoho dat, nemůžu je většinou vidět všechny najednou. Kdyby mi někdo odečítal teplotu každou minutu, měl bych 1440 naměřených hodnot za jeden den. Přitom mi stačí vědět, že dopoledne bylo 11 stupňů a odpoledne 16. V určitých situacích ocením doplnění takto zprůměrované (zagregované) hodnoty o směrodatnou odchylku, spočítanou ze všech hodnot v intervalu, který mě zajímá. Směrodatná odchylka totiž bude nulová, pokud jsou všechny data shodná. Čím víc se data od sebe liší, tím vyšší bude jejich směrodatná odchylka. Příklad s teplotou by vypadal takto:
Průměrná teplota v 10 i 11 hodin byla 22.03 stupně Celsia. Směrodatná odchylka mi ale poví, že v 10 hodin byl rozkmit dat veliký, zatímco v 11 hodin se naměřené teploty téměř neliší.
Co s tím?
Znám-li charakteristiku rozložení dat, mohu směrodatnou odchylku použít k snadnému izolování nejméně pravděpodobných dějů (anomálií).
“Ukaž mi věci, které jsou vyšší/nižší jak 2 směrodatné odchylky!”
= dostanu množinu dat zabírající (statisticky) 2.5% nejnižších a 2.5% nejvyšších hodnot, vím totiž, co mi směrodatná odchylka reprezentuje
Na webu mathisfun.com ukazují jak rozdělit psy na skupinu s “normální” výškou kohoutku a na skupinu s nenormální. Graficky to vypadá takhle:
Celý trik je v tom, že nám směrodatná odchylka pomáhá říct, “kolik” má být horní a dolní interval. Pokud ale budu zkušený chovatel, střelím to asi prostě od oka a nebudu se s tím jakkoliv zdržovat :-)
Lidi bohužel často inklinují k tomu, že začnou směrodatnou odchylku používat bez znalosti charakteristiky jejich dat. Pak má ovšem směrodatná odchylka pro takové použití význam shodný s “bulharskou konstantou”, protože neumím kvantifikovat, vůči čemu je “odchylkou”. Jakákoliv interpretace je v takové chvíli dost na tenkém ledě a snadno se mi stane, že vyleju dítě s vaničkou, protože mi směrodatná odchylka blbě nastavila hranice.
A teď babo raď ! Může to mít v zásadě 2 použitelné interpretace:
- přes všechny objednávky nemám normální rozložení a směrodatní odchylka mě zavede spíš na scestí
- mám v objednávkách 2 (zatím neznámé) druhy dat, které se mi překrývají
V případě, že se mi povede prokázat, že mám v datech množiny, které mají “něco” společného a v rámci tohoto “něčeho” mají normální průběh, mám docela vyhráno. Otevírá mi to pak snadnou cestu k další pokročilé statistice. Možná jsou objednávky z histogramu třeba takovéhle:
Najdu-li takové množiny - mohou tím být dvě skupiny sobě podobných produktů nebo chování levičáků vs. pravičáků - má velký smysl s nima pracovat odděleně. Kdo to myslí s BI vážně, měl by si na to dát pozor (reklama: detekce průběhů dat je v Keboola Connection hotová, zákazníkům to spouštíme během února).
Ať pracuje stroj!
Jak jsem nakous nahoře, směrodatná odchylka mi poví, jak jsou jednotlivé hodnoty dat od sebe rozdílné. Mám-li například data o tom, jak mi na youtoube kanále fanoušci komentůjí produktové video, můžu pomocí směrodatné odchylky detekovat příliš velký zájem. Hezké na tom pak je, že bude-li se kadence komentářů zvedat plynule, bude se odchylka podle toho adaptovat. To je jedna z jejích výhod oproti tvrdě nastavenému pásmu, nad/pod kterým chci dostávat notifikaci (ať jde o vlnu na sociálních sítích nebo počty vratek v e-shopu).
V praxi bych například mohl říct, že budu počítat medián (Percentile 50%) po hodinách a z posledních 10ti mediánů spočítám směrodatnou odchylku. Překročení takto nadefinované hranice pak bude důvodem k upozornění na zvláštní událost:
Pomocí toho jde velmi snadno definovat takový “alertovací rukáv” nebo statické pásmo. Jeho schopnost adaptovat se na průběh dat pak ovlivní období, za které počítáme z mediánů směrodatnou odchylku.
Kdo dočetl až sem, má můj obdiv! Kdyby se někomu chtělo postavit v GoodData praktické příklady na použití směrodatné odchylky, bude mít obdivy dva :-)