Metoda maximální věrohodnosti

Autor: MILAN

Tohle je matematicky poměrně náročná metoda. Takže musíme začít opatrně.

Představme si, že jsme detektivem a máme za úkol zjistit, kdo z našich podezřelých mohl spáchat zločin. Máme k dispozici několik střípků důkazů, ale nejsme si jisti, který z našich podezřelých je viníkem.

Takže co uděláme? Začneme zkoumat každého podezřelého zvlášť a pokusíme se zjistit, jak pravděpodobné je, že by tento podezřelý mohl spáchat zločin na základě důkazů, které máme. To je přesně to, co dělá metoda maximální věrohodnosti. Jen místo toho, abychom se snažili najít "viníka", snažíme se najít "nejlepší předpověď" nebo "nejlepší odhad" pro nějaký parametr (nebo soubor parametrů) na základě dat, která máme k dispozici, např. průměr a směrodatná odchylka, pravděpodobnost úspěchu, lambda u Poissonova rozdělení (viz) atd. Tyto parametry pomáhají definovat tvar a vlastnosti konkrétního rozdělení pravděpodobnosti. Odhadování těchto parametrů je často klíčovým krokem v mnoha statistických analýzách.

Metoda maximální věrohodnosti tedy provádí následující: 

  1. Bere všechna data, která máme (například výsledky testu, výšky lidí, počet prodejů v obchodě atd.).

  2. Potom předpokládá, že tato data pocházejí z určitého statistického modelu (například normálního rozdělení, binomického rozdělení atd.), ale nevíme přesně, jaké jsou parametry tohoto modelu (například průměr a směrodatná odchylka pro normální rozdělení).

  3. Poté se MLE pokusí najít hodnoty těchto parametrů, které by "nejlépe vysvětlily" data, která máme. "Nejlépe" v tomto kontextu znamená, že jsou to hodnoty parametrů, které by dělaly naše data "nejpravděpodobnějšími".

  4. Konečně, tyto "nejlepší" hodnoty parametrů jsou naším výstupem. Tyto hodnoty můžeme pak použít k vytvoření předpovědí nebo k další analýze dat.

Nyní se podívejme na matematické vyjádření této metody a zkusme si spočítat jednoduchý příklad. 

Příklad 1:

Představme si, že provádíme experiment s mincí. Mincí hodíme 10krát a sledujeme, kolikrát padne hlava a kolikrát orel. Počet hodů hlavou označíme jako "úspěch". Z 10 hodů mincí padla 7krát hlava. Chtěli bychom odhadnout pravděpodobnost, že při dalším hodu padne hlava, označíme ji jako θ.

Podle metody maximální věrohodnosti chceme najít takovou hodnotu θ, která maximalizuje pravděpodobnost (prostě potřebujeme tu co nejvyšší pravděpodobnost) toho, že pozorujeme přesně 7 hlav z 10 hodů. To je totiž přesně to, co jsme pozorovali. Rozumíte mi? Ne? Tak ještě jednodušeji. Představm si, že hrajeme hru. Máme minci a hodíme ji 10krát do vzduchu. Každý hod, kdy padne hlava, je pro nás jako malá výhra. V naší hře se ale stalo něco zajímavého - z 10 hodů mincí padla 7krát hlava. To je super, ale teď se ptáme: Jaká je šance, že když hodíme mincí příště, padne zase hlava? Ale na základě toho, že jsme z 10 hodů měli 7 hlav. Už tomu rozumíte? Takže co dělá metoda maximální věrohodnosti? Snaží se najít takovou hodnotu θ, která by dávala největší smysl pro to, co jsme viděli - tedy pro to, že padla 7krát hlava ze 10 hodů. To je totiž přesně to, co se stalo ve hře, kterou jsme hráli. A v našem příkladu je θ pravděpodobnost, že při jednom hodu mincí padne hlava. Ale pořád čerpáme z té zkušenosti, že 7krát z 10 padla hlava. Můžeme tedy říct, že θ je hádanka: jaká je šance, že když hodíme mincí, padne hlava. Tento odhad jsme vytvořili na základě výsledků naší hry, kdy padla 7krát hlava ze 10 hodů. Napsal jsem po sobě dvakrát to samé, já vím, ale to nevadí. Jen ať si to dobře zapamatujete. 

Dobře, co dál? Jaké rozdělení potřebujeme pro pravděpodobnost v binomických datech - buď, nebo? Potřebujeme Bernoulliho rozdělení. To má následující vzorec:

p(X = x | θ) = θ^x * (1 - θ)^(1 - x).

Tohle je tradiční vzorec pro Bernoulliho funkci. To, co je na pravé straně od rovnítka, je prostě prostě matematický výraz, kde máme x a θ. Ale ti, kteří se nezajímají o pravděpodobnost, mohou mít problém s levou stranou, která vypadá takto: p(X = x | θ). Znamená to, že proměnná X nabývá hodnoty x za předpokladu, že platí θ. "θ" je naše předpokládaná pravděpodobnost, že při hodu mincí padne hlava. Toto číslo může být někde mezi 0 a 1. Pokud je mince férová, θ by měla být 0,5, protože hlava a orel mají stejnou šanci. Pokud bychom měli nějaký důvod věřit, že mince je zmanipulovaná tak, že hlava padá častěji, θ by mohla být větší než 0,5.

"X" je výsledek našeho konkrétního hodu mincí. Když hodíme mincí, X může být buď 1 (pokud padne hlava) nebo 0 (pokud padne orel). Takže malé "x" může být 1, nebo 0. 

Výraz "p(X = x | θ)" tedy znamená "Jaká je pravděpodobnost, že při hodu mincí padne hlava (nebo orel), pokud očekáváme, že pravděpodobnost hlavy je θ?"

Teď do té funkce musíme dosadit, co známe. Takže x = 7 a 1 - x = 3, protože x je počet hlav, těch chceme 7 a 1 - x je vlastně opačný případ, takže počet orlů, což je 3. Pak bude naše funkce vypadat následovně: 

P(X = 7 | θ) = θ^7 * (1 - θ)^3.

A tohle je vlastně naše věrohodnostní funkce. Zapisuje se obvykle takto: 

L(θ | X) = θ^7 * (1 - θ)^3. 

Nyní trochu matematiky. Neděste se. Zkusím to nějak hezky, ale bude zapotřebí znát pojem derivace a extrém funkce. Pokud to nechcete číst, přeskočte. Budeme to počítat i přes program, kde se s matematikou nesetkáme. Chceme, aby θ nabývalo maximální hodnoty, ze všech možných v tomto případě. To znamená, že hledáme extrém funkce L(θ | X) = θ^7 * (1 - θ)^3., kde θ bereme jako proměnnou a budeme podle ní derivovat. Extrém funkce zjistíme tak, že derivujeme funkci,  v tomto případě podle θ, a tuto derivaci položíme rovnu nule. Výsledek derivace tedy poloźíme roven nule: 

dL/dθ = 7θ^6 * (1 - θ)^3 - 3θ^7 * (1 - θ)^2 = 0.

Abychom našli hodnotu θ, která maximalizuje naši funkci věrohodnosti, musíme najít hodnotu θ, pro kterou je derivace rovna nule. To uděláme tak, že rovnici 7θ^6 * (1 - θ)^3 - 3θ^7 * (1 - θ)^2 = 0 upravíme na

7θ^6 * (1 - θ) - 3θ^7 = 0.

Výraz můžeme zapsat jako

θ^6 * (7(1 - θ) - 3θ) = 0.

Tento výraz je roven nule pouze pokud je θ = 0 nebo (7(1 - θ) - 3θ) = 0. Ale θ = 0 by neodpovídalo našim pozorovaným datům (máme přece nějaké nějaké hlavy), takže se musíme soustředit na druhou část rovnice:

7(1 - θ) - 3θ = 0.

 Vyřešením pro θ získáme:

θ = 7/10 = 0,7.

Tu samozřejmě můžeme dosadit a získat tak

L(0,7 | X) = 0,7^7 * (1 - 0,7)^3 = 0,7^7 * 0,3^3 = 0,00102.

Ale to není v tomto kontextu důležité. Ale dobře, já to jako vsuvku vysvětlím. 

V rámci metody maximální věrohodnosti je konkrétní hodnota věrohodnosti L(0,7 | X) důležitá v kontextu srovnání s věrohodností pro jiné potenciální hodnoty parametru θ. V tomto příkladu s mincí nám L(0,7 | X) = 0,00102 říká, že pokud by byla pravděpodobnost padnutí hlavy (θ) rovna 0,7, tak by naše pozorovaná data (7 hlav z 10 hodů) měla pravděpodobnost 0,00102. Pokud bychom spočítali věrohodnost pro nějakou jinou hodnotu θ (řekněme 0,6 nebo 0,8), dostali bychom jiné hodnoty věrohodnosti. Když potom porovnáme všechny tyto věrohodnosti, můžeme říci, že θ = 0,7 je "nejvěrohodnější" hodnota parametru pro naše data, protože pro ni máme nejvyšší hodnotu věrohodnosti.

Podstatné je, že θ = 0,7. Takže můžeme celou odpověď interpretovat tak, že máme minci, kterou hodíme 10krát. 7krát padla hlava. Přirozeně si klademe otázku - jaká je pravděpodobnost, že při dalším hodu padne hlava? Měla by být přece asi 7/10 = 0,7, protože to je poměr hodů, kdy padla hlava, k celkovému počtu hodů. Metoda maximální věrohodnosti nám tento intuitivní odhad potvrzuje matematicky. Hledáme hodnotu θ (pravděpodobnost padnutí hlavy), která by "nejvěrohodněji" vysvětlila naše pozorovaná data (7 hlav z 10 hodů). A tahle hodnota je opravdu 0,7. Jinak řečeno, pokud by pravděpodobnost padnutí hlavy byla 0,7, pak by naše data (7 hlav z 10 hodů) byla "nejvíce pravděpodobná", nebo "nejvěrohodnější". A to je přesně to, co hledáme v metodě maximální věrohodnosti - nejvěrohodnější hodnotu parametru, která vysvětluje naše data.

Končíme tedy s matematikou a pojďme se podívat na softwarová řešení. Jak tedy budeme postupovat, když chceme tohle všechno spočítat, ale chceme to naložit do nějakého statistického software. Uvedeme si složitější příklad. Ten by se nám ručně počítal už trošku obtížněji. Není to ale důležité. Potřebujeme znát hlavně princip, počítač za nás pak vše spočítá. 

Příklad 1. 

Představte si, že chceme zkoumat, jak dlouho auta vydrží bez poruchy. Toto je obecně zajímavé pro jakékoli odvětví, kde je důležitá spolehlivost produktu, jako je automobilový průmysl, elektronika, letectví atd. To je skutečný problém, který řeší inženýři a analytici dat.

Pro tento příklad budeme předpokládat, že doba mezi poruchami automobilů sleduje exponenciální rozdělení. Toto je běžný předpoklad v analýze spolehlivosti a přežití. Exponenciální rozdělení je definováno jedním parametrem λ, který je roven střednímu času mezi poruchami.

Nyní si představte, že máme data o době mezi poruchami pro soubor automobilů, a chceme odhadnout parametr λ exponenciálního rozdělení. To bychom mohli udělat právě pomocí metody maximální věrohodnosti. Máme například soubor dat, nazvěme jej 'time_to_failure', což tedy bude v našem příkladu představovat dobu, která uplyne od daného okamžiku (například od poslední údržby nebo od doby výroby auta) do okamžiku, kdy auto vykáže nějakou poruchu. Třeba to nějaký inženýr v autorizovaném servise zkoumá proto, aby mohl naplánovat servisní intervaly tak, aby bylo minimalizováno riziko vážných poruch. Zde jsou data:

V analýze spolehlivosti, jak již bylo řečeno, je exponenciální rozdělení naprosto běžné, např. u poruchovosti. Takže jej u těchto dat předpokládáme nebo jsme si to ověřili. To je teď jedno. Exponenciální rozdělení má následující předpis.

Obecně pro exponenciální rozdělení je λ rychlostí událostí, například četností poruch. Pokud vezmeme v našem příkladu λ = 2, znamená to, že k poruše dojde dvakrát za nějakou jednotku času. Jednotka času může být jakákoli a je určena kontextem problému, který se zrovna řeší. Může to být den, hodina, měsíc, rok atd. Hodnoty x reprezentují čas do nějaké události. V našem příkladu je to čas do poruchy - čas, který uplyne od počátečního bodu (například od výroby nebo od poslední údržby) do momentu, kdy se auto porouchá. Tato hodnota "x" může nabývat jakéhokoli kladného reálného čísla, protože předpokládáme, že událost může nastat kdykoli po počátečním bodu. Takže v tomto případě pro nás x menší nebo rovno nule nehraje roli. Hodnoty "x" máme v tabulce. Takže potřebujeme na základě těchto hodnot zjisti parametr λ. Ten neznáme. Princip je obdobný jako v předchozím případě, kdy jsme to řešili matematicky. Akorát teď to za nás udělá software. Potřebujeme akorát dataset našich hodnot, tedy tabulku s daty o poruchách. Tu vložíme do metody MLE v nějakém software, já zase používám Rstudio.