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

Autor: Lenka Fiřtová

Zde jsme si vysvětlili, jak udělat lineární regresi v R-ku, a také, co je to koeficient determinace.

V tomto článku si povíme, jak to udělat, když chceme do regrese zahrnout také kategoriální proměnné. Kategoriálními proměnnými mohou být například příslušnost k pohlaví (žena – muž), úroveň vzdělání (základní – střední – vysoké) apod. Zkrátka cokoli, co představuje příslušnost k nějaké skupině/kategorii. Kategoriální proměnné v regresi reprezentujeme obvykle tzv. umělými proměnnými, v angličtině dummy variables.

Umělé proměnné jsou často binární (tj. nabývají jen hodnot 0 a 1), ale lze použít i jinou škálu (např. 0, 1, 2), pokud dává smysl. V případě binárních proměnných označuje hodnota 1 přítomnost určitého znaku. Nula pak odpovídá základní kategorii (tzv. referenční skupině), se kterou se druhá skupina srovnává. Např. bychom mohli mít proměnnou pohlavi, která nabývá hodnot 0 = žena, 1 = muž. Ženy by pak představovaly referenční skupinu.

Jak zahrnout umělou proměnnou do lineárního modelu? Ukážeme si to napříkladu. V R-ku si vytvoříme následující dataset:

mzda = c(116,132,119,56,150,133,197,141,101,54,146,94,75,61,145,117,89,64,128,122,149,36,163,71,62,145,128,59,101,42,165,160,111,99,114,96,50,152,203,118,74,173,186,138,64,139,62,154,50,64)
pohlavi = c(0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0)
zkusenosti = c(19,6,17,0,16,16,19,18,3,2,16,11,0,3,14,13,10,7,19,10,17,0,16,7,7,14,15,1,7,1,14,17,8,6,18,7,6,14,20,17,5,15,17,16,9,19,10,16,0,10)
df = data.frame(mzda, pohlavi, zkusenosti)

Jedná se o dataset s názvem df (od data frame), který obsahuje tři proměnné pro 50 pozorování (osob). Data jsou smyšlená. Jednotlivé proměnné mají následující význam:

  • mzda je výše hodinové mzdy v Kč
  • pohlavi je kategoriální proměnná: 0 znamená, že osoba je žena, 1 znamená, že osoba je muž
  • zkusenosti je počet let pracovních zkušeností

Asi tušíme, že hodinová mzda bude záviset na počtu let zkušeností (zkušenější lidé mívají vyšší mzdu). Mzda také často závisí na pohlaví (muži mívají vyšší mzdu).

Předpis regresní přímky popisující závislost mzdy na počtu let zkušeností může vypadat takto: mzda = β0 + β1 · zkusenosti + náhodná složka.

Tuto regresi odhadneme v R:

> lm(mzda ~ zkusenosti, data = df)

Dostaneme následující výstup: mzda = 48,34 + 5,75 · zkusenosti + náhodná složka. Tedy: člověk s nulovým počtem let zkušeností má hodinovou mzdu 48,34 Kč, s každým dalším rokem zkušeností se mzda zvyšuje o 5,75 Kč. Koeficient determinace činí 0,68.

Existují tři základní způsoby, jak dostat do naší lineární regrese proměnnou pohlavi.

Umělá proměnná ovlivňující úrovňovou konstantu (intercept)

Představme si situaci, kdy hodinová mzda pro člověka bez zkušeností se v základu liší pro ženy a pro muže, ale s každým dalším rokem zkušeností již pro obě pohlaví roste stejným tempem. Taková regrese vypadá následovně:

mzda = β0 + δ · pohlavi + β1 · zkusenosti + náhodná složka.

Tedy pro ženy (pohlavi = 0) vypadá takto: mzda = β0 + β1 · zkusenosti + náhodná složka.

Pro muže (pohlavi = 1) vypadá takto: (β0 + δ) + β1 · zkusenosti + náhodná složka.

Závorku jsme přidali pouze pro přehlednost. Vidíme, že pohlavi zde ovlivňuje úrovňovou konstantu (hodnotu mzdy pro 0 let zkušeností). Graficky by lineární regresní přímky pro jednotlivá pohlaví mohly vypadat následovně:

Nyní tuto regresi odhadneme v R:

> lm(mzda ~ zkusenosti + pohlavi, data = df)

Dostaneme následující výstup: mzda = 31,67 + 38,32 · pohlavi + 5,73 · zkusenosti + náhodná složka. Tedy: žena s nulovým počtem let zkušeností má hodinovou mzdu 31,67 Kč, muž s nulovým počtem let zkušeností má hodinovou mzdu 31,67 + 38,32 = 69,99 Kč, s každým dalším rokem zkušeností se u obou pohlaví zvyšuje hodinová mzda o 5,73 Kč. Koeficient determinace činí 0,87.

Umělá proměnná ovlivňující sklon přímky

Představme si situaci, kdy hodinová mzda pro člověka bez zkušeností je pro ženy i pro muže stejná, ale s každým dalším rokem zkušeností roste jiným  tempem. Taková regrese vypadá následovně:

mzda = β0 + β1 · zkusenosti + γ · zkusenosti · pohlavi + náhodná složka.

Tedy pro ženy (pohlavi = 0) vypadá takto: β0 + β1 · zkusenosti + náhodná složka.

Pro muže (pohlavi = 1) vypadá takto: mzda = β0 + β1 · zkusenosti + γ · zkusenosti + náhodná složka = β0 + (β1 + γ) · zkusenosti + náhodná složka.

Závorku jsme přidali pouze pro přehlednost. Vidíme, že pohlavi zde ovlivňuje sklon přímky. Graficky by lineární regresní přímky pro jednotlivá pohlaví mohly vypadat následovně:

Nyní tuto regresi odhadneme v R (součin pohlaví a zkušeností musíme napsat tak, jak je ukázáno na následujícím řádku):

> lm(mzda ~ zkusenosti + I(zkusenosti * pohlavi), data = df)

Dostaneme následující výstup: mzda = 50,2 + 4,25 · zkusenosti + 3,01 · zkusenosti · pohlavi + náhodná složka. Tedy: člověk s nulovým počtem let zkušeností má hodinovou mzdu 50,2 Kč. U žen se s každým dalším rokem zkušeností zvyšuje hodinová mzda o 4,25 Kč. U mužů se s každým dalším rokem zkušeností zvyšuje hodinová mzda o 4,25 + 3,01 = 7,26 Kč. Koeficient determinace činí 0,87.

Umělá proměnná ovlivňující úrovňovou konstantu i sklon přímky

Oba přístupy můžeme samozřejmě zkombinovat. Pro jednotlivá pohlaví se může lišit i výchozí hodinová mzda (při nulových zkušenostech), i tempo jejího růstu.

Taková regrese vypadá následovně:

mzda = β0 + δ · pohlavi + β1 · zkusenosti + γ · zkusenosti · pohlavi + náhodná složka.

Tedy pro ženy (pohlavi = 0) vypadá takto: β0 + β1 · zkusenosti + náhodná složka.

Pro muže (pohlavi = 1) vypadá takto: mzda = β0 + δ + β1 · zkusenosti + γ · zkusenosti + náhodná složka = (β0 + δ) + (β1 + γ) · zkusenosti + náhodná složka.

Graficky by lineární regresní přímky pro jednotlivá pohlaví mohly vypadat následovně:

Nyní tuto regresi odhadneme v R:

> lm(mzda ~ zkusenosti + pohlavi + I(zkusenosti * pohlavi), data = df)

Dostaneme následující výstup: mzda = 39,97 + 21,4 · pohlavi + 4,97· zkusenosti + 1,54 · zkusenosti · pohlavi + náhodná složka. Tedy: žena s nulovým počtem let zkušeností má hodinovou mzdu 39,67 Kč a s každým dalším rokem zkušeností její mzda vzroste o 4,97 Kč. Muž s nulovým počtem let zkušeností má hodinovou mzdu 39,97 + 21,4 = 61,37 Kč, s každým dalším rokem zkušeností jeho mzda vzroste o 4,97 + 1,54 = 6,51 Kč. Koeficient determinace činí 0,887.

Následujícím příkazem se můžeme podívat o podrobnosti na regresi. Zjistíme tak například to, že všechny proměnné jsou statisticky významné.

> summary(lm(mzda ~ zkusenosti + pohlavi + I(zkusenosti * pohlavi), data = df))

Popsanou situaci nejlépe popisuje poslední uvedená regresní přímka.

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