Cvičenie 3 - Lineárna regresia¶
V R môžeme parametre lineárneho modelu vypočítať pomocou funkcie lm.
Nasledujúci príklad načíta dátovú množinu Iris, vyfiltruje iba príklady z triedy setosa, a vypočíta lineárny
model s jedným vstupným atribútom iris$Sepal.Length pre výstupnú hodnotu iris$Sepal.Width
data(iris)
setosa <- iris[iris$Species == "setosa", ]
attach(setosa)
setosa
sepal_lm <- lm(Sepal.Width ~ Sepal.Length) # y = b0 + b1x1 + b2x2 + b3x3 + ... + bmxm
sepal_lm
plot(Sepal.Length, Sepal.Width)
abline(sepal_lm)
V príklade je vykreslená regresná priamka, ktorá určuje predikovanú hodnotu f(x) . Ďalšie
vstupné atribúty je možné pridať do modelu pomocou operátora +, napr. lm(Y ~ X1 + X2 + X3) je lineárny model, ktorý predikuje atribút Y na základe troch vstupných atribútov X1, X2
a X3.
Pomocou funkcie summary si môžeme vypísať základné štatistiky o rezíduách a parametroch modelu:
summary(sepal_lm)
Popis funkcie summary¶
Rozdiely medzi predikovanou hodnotu a skutočnou hodnotou y sa označujú ako rezíduá.
V časti Residuals sú informácie o základných štatistikách rezíduí. Tieto rozdiely by mali byť
v absolútnej hodnote čo najmenšie. Rezíduá pre všetky trénovacie príklady môžete získať
pomocou funkcie residuals
residuals(sepal_lm)
Celkovú chybu (sumu štvorcov rezíduí – z čoho sa minimalizovanie kvadratickej chybovej funkcie označuje metóda najmenších štvorcov) môžete vypísať funkciou:
deviance(sepal_lm)
Coefficients¶
V prehľade viete ďalej zistiť hodnoty samotných parametrov v časti Coefficients. Parameter
$\beta_0$ sa označuje ako Intercept, pretože určuje v ktorom bode bude regresná priamka pretínať
os Y. Keďže ostatné parametre $\beta_1 ... \beta_m $ zodpovedajú jednotlivým vstupným atribútom,
parametre sú označené názvom zodpovedajúceho atribútu, napr. Sepal.Length.
To, ako jedôležitý atribút pre výslednú predikciu určuje absolútna veľkosť zodpovedajúceho parametra, ak sa parameter blíži k 0, atribút je možné z modelu vynechať bez toho aby sa výrazne zmenila predikcia. Významnosť atribútov sa testuje štatistickým testom ktorého hypotéza je, že sa zodpovedajúci parameter = 0. Čím menšia je táto pravdepodobnosť, tým dôležitejší je daný atribút (čo je označené vo výpise aj hviezdičkami, *** dôležitý atribút, ** stredne dôležitý, atď.)
Predikcia¶
Ak chcete vypočítať predikovanú hodnotu pre nové vstupné dáta, môžete použiť funkciu
predict:
predict(sepal_lm, newdata = data.frame(Sepal.Length=6))
Pomocou predikt môžeme vypočítať aj hodnoty pre viac príkladov naraz.
Podľa variancie vstupných dát vieme pri lineárnej regresii odhadnúť aj varianciu parametrov,
ktorá je uvedená ako štandardná odchýlka pri výpise summary pre každý parameter. Keďže
parametre sú odhadované iba s určitou varianciou, aj samotná predikcia je len odhad pre
ktorý môžeme určiť varianciu v akom rozsahu sa bude predikovaná hodnota
najpravdepodobnejšie pohybovať. Tento interval si môžete vypísať pomocou funkcie
predict:
predict(sepal_lm, newdata = data.frame(Sepal.Length=6), interval="prediction")
Pomocou predict je potom možné zobraziť aj intervaly spoľahlivosti pre predikciu (v tomto
intervale by sa mala s veľkou pravdepodobnosťou pohybovať skutočná hodnota).
Najprv si vygenerujeme vstupné dáta (interval od 4 do 6 s krokom 0.25) a potom vypočítame predikciu aj s intervalom:
lengths <- seq(from=4, to=6, by=0.25)
predictions <- predict(sepal_lm, newdata =data.frame(Sepal.Length=lengths), interval="prediction")
lengths
predictions
Hodnoty si zobrazíme v grafe ako interval pomocou horného a spodného ohraničenia:
plot(Sepal.Length, Sepal.Width)
lines(predictions[,1] ~ lengths, col=1)
lines(predictions[,2] ~ lengths, col=1, lty=2)
lines(predictions[,3] ~ lengths, col=1, lty=2)
Všimnite si, že sa pri krajných hodnotách 4 a 6 interval mierne rozširuje (tzn. pre krajné vstupné hodnoty môže byť predikovaná hodnota vypočítaná s väčšou varianciou).
Úlohy na cvičení¶
- Načítajte dátovú množinu
Iris, odfiltrujte príklady z triedysetosaa vytvorte lineárny model predikujúci atribútPetal.Widthpre vstupný atribútPetal.Length. Vizualizujte dáta a regresnú priamku
- Vypočítajte celkovú sumu kvadrátov rezíduí modelu z predošlého príkladu a korelačný koeficient medzi vstupným a výstupným atribútom. Zobrazte histogram rezíduí.
- Vypočítajte predikciu a interval spoľahlivosti pre trénovacie dáta. Zobrazte graf s dátami, regresnou priamkou a intervalovými hranicami.
- Z množiny iris odfiltrujte iba príklady z triedy versicolor, vypočítajte predikciu a intervalové odhady. Zobrazte graf s dátami, regresnou priamkou, a intervalovými hranicami.
- Vytvorte rozšírený model, ktorý bude mať okrem
Petal.Lengthna vstupe aj atribútSepal.Width. Zistite, ktoré parametre modelu sú štatisticky významné, a porovnajte chybu rozšíreného modelu s predchádzajúcim príkladom.
- Medzi vstupné atribúty môžete pridať aj faktory (nominálne atribúty). Ak má faktor
napr. 3 hodnoty,
setosa,versicoloravirginica, pri zahrnutí do modelu sa prvá hodnotasetosapoužije ako tzv. referenčná a pre zvyšné hodnotyversicoloravirginicasa vygenerujú binárne (tzv. kontrastné) atribúty, pre ktoré sa vypočítajú dodatočné parametre modelu. Načítajte celú množinu dátIrisa vytvorte model, ktorý bude predikovaťPetal.Widthna základe atribútovPetal.LengthaSpecies. Zistite, ktoré z kontrastných hodnôtversicolor, alebovirginicaje viac dôležitá pre predikciu.
- Vygenerujte si náhodné vektory
X1,X2aX3s 50 hodnotami podľa uniformného rozdelenia pravdepodobnosti z intervalu 1 až 10. Vytvorte vektor hodnôtY = 0.5 + 2*X1 + 1.5 *X2 + X3. K vektoru Y pripočítajte náhodný šum s normálnym rozdelením s 0 strednou hodnotou a štandardnou odchýlkou 0.5. Vypočítajte parametre lineárneho modelu priamo analyticky z výrazu $(X^TX)^{-1}X^Ty = \beta $. Vypočítajte pre každý príklad predikciu a rezíduá.
- Pridajte do predchádzajúceho modelu atribút
X4, ktorého hodnoty sú vždy dvojnásobkom atribútuX1(tzn.X4=2*X1). Vypočítajte znova analyticky parametre modelu (malo by dôjsť k chybe, pre maticuXby sa nemala dať vypočítať inverzná matica ak obsahuje lineárne závislé stĺpce). Vypočítajte korelačný koeficient medziX1aX4. Odstráňte atribútX1a zvona vypočítajte parametre lineárneho modelu, porovnajte vypočítané parametre s predchádzajúcim príkladom.