S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.

V tomto článku si vysvětlíme základní principy lineární regrese a ukážeme si, jak takovou regresi vytvořit v jazyce R.

Pokud vás zajímá, jak se lineární regrese řeší v Excelu, klikněte sem.

Budeme pracovat s datasetem women, který je v R volně k dispozici. Dataset obsahuje údaje o výšce a váze patnácti různých žen (podrobnosti viz https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/women.html).

Co je to vlastně regrese?

Když někdo řekne, že chce „udělat regresi“, má tím obvykle na mysli, že chce zachytit vztah mezi dvěma nebo více veličinami funkcí. Když mluvíme o „lineární regresi“, znamená to, že tímto funkčním předpisem má být přímka.

Pojďme si to ukázat na datasetu women. Graf níže zachycuje vztah výšky (horizontální osa) a váhy (vertikální osa) jednotlivých žen. Každá žena představuje jeden bod. (Neobvyklá čísla u výšky a váhy pozorujeme proto, že se jedná o data z USA: výška je tedy v palcích a váha v librách.) Pokud byste si takový graf také chtěli vytvořit, použijte následující příkaz:

> plot(weight ~ height, data = women, pch = 16,main = "Vztah výšky a váhy", xlab="výška",ylab = "váha")

Na první pohled je vidět, že mezi výškou a váhou existuje systematický vztah: čím vyšší je výška, tím vyšší je váha. Regrese je způsobem, jak tento vztah přesně matematicky popsat. Díky tomu můžeme pak odpovědět například na otázku, jakou váhu můžeme nejpravděpodobněji očekávat u ženy o výšce 70 palců. Proč „nejpravděpodobněji“? Protože váhu kromě výšky ovlivňují i další faktory (genetická výbava, životní styl apod.). Váha konkrétního člověka s danou výškou proto může být vyšší nebo nižší, než jakou předpoví regrese.

Jak udělat jednoduchou lineární regresi v R?

„Jednoduchou“ lineární regresí se má na mysli regrese, kdy pracujeme právě se dvěma veličinami neboli proměnnými: vysvětlovanou (závislou) proměnnou, což bude v našem případě váha, a vysvětlující (nezávislou) proměnnou, což bude v našem případě výška. Na základě výšky tedy budeme předpovídat váhu, ne naopak. Je možné pracovat i s více vysvětlujícími proměnnými (například bychom mohli vzít v potaz i věk), ale tím se v tomto článku zabývat nebudeme.

Regresi odhadneme následujícím příkazem:

> regrese = lm(weight ~ height, data = women)

Používáme funkci lm a výsledek ukládáme do proměnné s názvem „regrese“ (mohla by se jmenovat i jakkoli jinak). Nutným argumentem funkce lm je vysvětlovaná proměnná (před vlnovkou) a vysvětlující proměnná (za vlnovkou). Argument data = women určuje, z jakého datasetu tyto proměnné pocházejí.

Výstup lineární regrese

Základní výstup lineární regrese vypadá takto:

> regrese

Call:

lm(formula = weight ~ height, data = women)

Coefficients:

(Intercept)       height  

     -87.52         3.45  

Co v něm najdeme? Call nám připomene původně zadaný příkaz. Pod Coefficients nalezneme dvě čísla, která jednoznačně určují hledanou přímku. Předpis přímky tedy vypadá takto:

weight = –87,52 + 3,45 ∙ height + náhodná složka

Náhodná složka v sobě zahrnuje veškeré faktory kromě výšky, které váhu ovlivňují.

Koeficient –87,52 je intercept neboli úrovňová konstanta. Říká nám, jakou váhu máme nejpravděpodobněji očekávat u ženy s výškou 0 palců. Je vidět, že ne vždy mívá úrovňová konstanta smysluplnou interpretaci (zde ji například nemá: ženy s výškou 0 palců a zápornou váhou pochopitelně neexistují). 

Druhý koeficient udává sklon přímky. Říká nám, o kolik liber se v průměru zvýší váha, pokud se za jinak nezměněných okolností výška zvýší o jednu jednotku (jeden palec). V našem případě je tedy nárůst výšky o jeden palec (= cca 2,5 cm) spojen s nárůstem váhy v průměru o 3,45 liber (= cca 1,5 kg). Čím je tedy toto číslo vyšší, tím je přímka strmější.

Dosazením konkrétní hodnoty výšky do předpisu této přímky získáme odhad odpovídající váhy. Například když dosadíme za výšku 70 palců (178 cm), vyjde nám odpovídající váha 154 liber (70 kg).

Pokud byste chtěli zakreslit přímku do výše uvedeného grafu, stačí do R přidat příkaz abline. Celý příkaz k vytvoření grafu by tedy vypadal takto:

> plot(weight ~ height, data = women, pch = 16,main = "Vztah výšky a váhy", xlab="výška",ylab = "váha")

> abline(a = -87.52, b = 3.45)

Abline je funkce, která do existujícího grafu přidává přímku. Ta, jak už víme, je určena dvěma parametry: úrovňovou konstantou a sklonem. Oba tyto parametry můžeme převzít z výstupu naší regrese a funkci abline je zadáme pod názvy a a b. Výsledný graf vypadá takto:

Proč má přímka právě tento a ne jiný předpis? Proč není třeba strmější? R (a jiné statistické programy) hledají vždy takovou přímku, která je napozorovaným bodům co možná nejblíže.

Koeficient determinace – R2

Koeficient determinace nám, velmi zjednodušeně, říká, „jak dobrá naše regrese je“. Je-li v regresi pouze jedna vysvětlující proměnná, jedná se o druhou mocninu Pearsonova korelačního koeficientu.

Pokusme se popsat koeficient determinace o něco méně zjednodušeně.

Mohli bychom snadno spočítat, že průměrná hodnota proměnné weight je přibližně 134 liber. Některé z pozorovaných patnácti žen však mají váhu vyšší, než je průměr, a jiné naopak nižší. Jinak řečeno, proměnná weight není vždy stejná, ale má určitou variabilitu. Tato variabilita je dána dvěma faktory: zaprvé výškou, kterou jsme zahrnuli do regrese jako vysvětlující proměnnou, a za druhé „náhodou“ (což je například genetická výbava, životní styl apod.).

Následujícím příkazem zobrazíme tzv. koeficient determinace (R2) naší regrese:

> summary(regrese)$r.squared

[1] 0.9910098

Koeficient determinace nám říká, jaký podíl variability vysvětlované proměnné jsme podchytili prvním faktorem – vysvětlující proměnnou.  Jinak řečeno, udává nám, do jaké míry dokážeme proměnlivost váhy vysvětlit tím, že lidé mají různou výšku.

Koeficient determinace může nabývat hodnot od nuly do jedné. Je-li nulový, pak je chování vysvětlované proměnné v podstatě náhodné, nezávislé na vysvětlující proměnné. Je-li roven jedné, pak náhoda naopak žádnou roli nehraje – hodnoty vysvětlované proměnné jsou naprosto přesně určeny hodnotami proměnné vysvětlující. Čím vyšší je koeficient determinace, tím více se body představující jednotlivá pozorování pohybují „poblíž“ regresní přímky. Ukázat si to můžeme na obrázku níže: jsou zde znázorněny dvě situace: regrese s koeficientem determinace 0,99, a regrese s koeficientem determinace 0,62.

Velikost koeficientu determinace může být ovlivněna funkčním tvarem regrese (například by bylo možné použít jiný tvar než přímku) a vysvětlujícími proměnnými v regresi. Regresi obvykle děláme proto, abychom dokázali co nejlépe predikovat hodnoty vysvětlované proměnné. Přirozeně bychom si tedy přáli, aby koeficient determinace byl co nejvyšší. Je ale třeba vždy zvážit, zda zvýšení koeficientu determinace stojí za zvýšení složitosti modelu. Přidáním další vysvětlující proměnné se totiž koeficient determinace sice obvykle zvýší, nechtěli bychom ale nejspíš mít model s příliš mnoha proměnnými – byl by příliš složitý.

Autor článku: Lenka Fiřtová

S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.