library(broom)
library(knitr)
library(kableExtra)
library(ggplot2)
library(dplyr)Econometrics in R - cvičenie 5
Základná diagnostika modelu
Pokračujeme s využívaním WHO Life Expactancy Data databázy.
Príprava databázy
udaje <- read.csv("udaje/Life_Expectancy_Data.csv",dec=".",sep=",",header = TRUE)
# select just the record from 2015
udaje.2015 <- udaje[udaje$Year==2015,c("Life.expectancy","BMI","GDP","Schooling")]
# data imputation
# Compute column medians
#column_medians <- sapply(udaje.2015, median, na.rm = TRUE)
# Impute missing values with column medians
# Compute column medians
column_medians <- sapply(udaje.2015, median, na.rm = TRUE)
# Impute missing values with column medians
udaje_imputed <- udaje.2015
for (col in names(udaje.2015)) {
udaje_imputed[[col]][is.na(udaje_imputed[[col]])] <- column_medians[col]
}
udaje.2015 <- udaje_imputedUloženie všetkých objektov môjho workspace, čistenie workspace
- Ak nechcem do každého projektu dávať opätovné importovanie a čistenie databázy, odožím si celý obsah - všetky objekty - pamäte (workspace) do súboru a ten na začiatku zadania nabudúce nadčítam:
save.image("pamat.Rdata")- Mazanie niektorých objektov z pamäte:
aaa <- 6
bbb <- "text" # aaa a bbb chcem vymazat
rm(list = c("aaa", "bbb")) # vynazem tieto dva objekty
ls() # v pamati zostalo[1] "col" "column_medians" "udaje" "udaje_imputed"
[5] "udaje.2015"
- Čistenie pamäte - celej
rm(list=ls())
ls()character(0)
- Opätovne si nadčítam uložený obsah pamäte - workspace
load("pamat.Rdata")Samozrejme, load() budem v budúcnosti používať na začiatku dokumentu a save.image() na konci dokumentu - tak, aby som si prenášal celý obsah pamäte z jedného cvičenia na druhé.
To predpokladá, že si budete robiť priebežne poriadok v pamäti a nepotrebné objekty budete mazať príkazom rm(). - pozrite príklad uvedený vyššie.
Lineárna regresia
Odhadujeme regresný model:
\[ LifeExpectancy_i = \beta_0+\beta_1 BMI_i + \beta_2 GDP_i + \beta_3 Schooling_i+u_i \]
Model odhadujeme príkazom lm(). V našom prípade predpokladáme, že
model <- lm(Life.expectancy ~ +1 + BMI + GDP + Schooling,data=udaje.2015)Výsledky regresie - odhady regresných koeficientov - môžeme vidieť v tabuľke
tidy(model) |>
mutate(
Significance = case_when(
p.value < 0.001 ~ "***",
p.value < 0.01 ~ "**",
p.value < 0.05 ~ "*",
p.value < 0.10 ~ ".",
TRUE ~ ""
)
) |>
kable(
digits = 4,
col.names = c(
"Variable",
"Estimate",
"Std. Error",
"t value",
"p-value",
"Significance"
),
caption = "Regression coefficients",
escape = TRUE
) |>
kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)| Variable | Estimate | Std. Error | t value | p-value | Significance |
|---|---|---|---|---|---|
| (Intercept) | 44.1936 | 1.8389 | 24.0332 | 0.0000 | *** |
| BMI | 0.0495 | 0.0214 | 2.3078 | 0.0222 | * |
| GDP | 0.0001 | 0.0000 | 1.8132 | 0.0715 | . |
| Schooling | 1.9210 | 0.1645 | 11.6762 | 0.0000 | *** |
Interpretácia výsledkov regresného modelu
Funkcia broom::tidy(model) poskytuje tabuľku odhadnutých regresných koeficientov a výsledkov testovania ich štatistickej významnosti.
Vysvetlenie jednotlivých stĺpcov
| Stĺpec | Vysvetlenie |
|---|---|
| Variable | Názov premennej, ku ktorej sa vzťahuje regresný koeficient. (Intercept) predstavuje absolútny člen regresnej rovnice. |
| Estimate | Bodový odhad regresného koeficientu \(\hat{\beta}_j\). Vyjadruje zmenu očakávanej hodnoty vysvetľovanej premennej pri jednotkovej zmene vysvetľujúcej premennej, za predpokladu nezmenených ostatných premenných. |
| Std. Error | Štandardná chyba odhadu regresného koeficientu \(SE(\hat{\beta}_j)\). Vyjadruje neistotu odhadu. Čím je štandardná chyba menšia, tým je odhad presnejší. |
| t value | Hodnota testovacej štatistiky Studentovho t-testu. Používa sa na testovanie hypotézy o nulovej hodnote regresného koeficientu. |
| p-value | Pravdepodobnosť získania rovnako alebo viac extrémnej hodnoty testovacej štatistiky za predpokladu platnosti nulovej hypotézy. Malá p-hodnota predstavuje dôkaz proti nulovej hypotéze. |
| Significance | Symbolické vyjadrenie štatistickej významnosti regresného koeficientu pomocou hviezdičiek. |
Testovanie štatistickej významnosti koeficientov
Pre každý regresný koeficient testujeme hypotézy:
\[ H_0:\beta_j=0 \]
\[ H_1:\beta_j\neq 0 \]
Testovacia štatistika má tvar:
\[ t_j=\frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \]
Za platnosti klasických predpokladov vrátane normality náhodných chýb má testovacia štatistika pri platnosti nulovej hypotézy Studentovo t-rozdelenie s \(n-k\) stupňami voľnosti, kde \(n\) predstavuje počet pozorovaní a \(k\) počet odhadovaných regresných koeficientov vrátane absolútneho člena.
Rozhodovacie pravidlo: Ak je p-hodnota menšia ako zvolená hladina významnosti \(\alpha\), zamietame nulovú hypotézu.
Označenie štatistickej významnosti
| Symbol | p-hodnota | Interpretácia |
|---|---|---|
*** |
\(p < 0.001\) | Štatisticky významný na hladine 0,1 % |
** |
\(p < 0.01\) | Štatisticky významný na hladine 1 % |
* |
\(p < 0.05\) | Štatisticky významný na hladine 5 % |
. |
\(p < 0.10\) | Štatisticky významný na hladine 10 % |
| Bez symbolu | \(p \geq 0.10\) | Štatisticky nevýznamný na hladine 10 % |
Interpretácia koeficientov nášho modelu
Koeficient pri GDP:
Pri zvýšení HDP na obyvateľa o 1 dolár sa očakávaná dĺžka života zmení približne o \(\hat{\beta}_1/1000\) roka, za predpokladu nezmenených hodnôt ostatných premenných - ceteris paribus`. Dá sa to ale lepšie interpretovať aj ako ak HDP na obyvateľa narastie o 1000 dolárov, potom očakávaná dĺžka dožitia narastie o 1 rok.
Koeficient pri Schooling:
Ak je školská dochádzka meraná v rokoch, zvýšenie jej hodnoty o jeden rok je spojené so zmenou očakávanej dĺžky života takmer o \(2\) roky (ceteris paribus).
Absolútny člen (Intercept):
Koeficient \(\hat{\beta}_0\) predstavuje predikovanú hodnotu očakávanej dĺžky života pri nastavení všetkých vysvetľujúcich premenných na nulovú hodnotu. V našom modeli má skôr význam, pretože uvedená kombinácia hodnôt nemusí byť ekonomicky realistická. Ide o priesečník regresnej nadroviny so zvislou osou.
Koeficient pri BMI Ak premenná BMI narastie o 1 jednotku, potom sa očakávaná dĺžka života zvýši takmer o 5 stotín roka - t.j. približne o 15 dní. Je to ekonomicky neinterpretovateľné, preto sme túto premennú v ďaších analýzach vylúčili.
Kvalita vyrovnania modelu
Kvalita vyrovnania sa dá posúdiť pomocou \(R^2\), ale aj výsledku F-testu (pozri p.value vedľa F stat.)
# Model summary without deviance
glance(model) |>
select(-deviance) |>
kable(
digits = 4,
col.names = c(
"R.squared",
"Adj.R.squared",
"Sigma",
"F Stat.",
"p.value",
"df",
"logLik",
"AIC",
"BIC",
"df.residual",
"N"
),
caption = "Model summary"
) |>
kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)| R.squared | Adj.R.squared | Sigma | F Stat. | p.value | df | logLik | AIC | BIC | df.residual | N |
|---|---|---|---|---|---|---|---|---|---|---|
| 0.6224 | 0.6161 | 5.0334 | 98.3632 | 0 | 3 | -553.3884 | 1116.777 | 1132.824 | 179 | 183 |
Interpretácia súhrnných charakteristík regresného modelu
Funkcia broom::glance(model) poskytuje súhrnné štatistické charakteristiky odhadnutého regresného modelu. Na rozdiel od funkcie tidy(), ktorá poskytuje informácie o jednotlivých regresných koeficientoch, funkcia glance() charakterizuje model ako celok.
Vysvetlenie jednotlivých stĺpcov
| Stĺpec | Vysvetlenie |
|---|---|
| R.squared | Koeficient determinácie \(R^2\). Vyjadruje podiel variability vysvetľovanej premennej, ktorý vysvetľuje regresný model. |
| Adj.R.squared | Upravený koeficient determinácie \(\bar R^2\). Zohľadňuje počet vysvetľujúcich premenných a počet pozorovaní. Penalizuje pridávanie premenných, ktoré dostatočne nezlepšujú vysvetľovaciu schopnosť modelu. |
| Sigma | Reziduálna štandardná chyba \(\hat\sigma\). Predstavuje odhad smerodajnej odchýlky náhodnej zložky regresného modelu. |
| F Stat. | Hodnota F-štatistiky testujúcej spoločnú štatistickú významnosť vysvetľujúcich premenných. |
| p.value | P-hodnota celkového F-testu regresného modelu. Používa sa na rozhodnutie o zamietnutí nulovej hypotézy, že všetky smernicové regresné koeficienty sú nulové. |
| df | Počet vysvetľujúcich premenných v modeli, bez absolútneho člena. Zodpovedá počtu stupňov voľnosti v čitateli celkového F-testu. |
| logLik | Hodnota logaritmu vierohodnostnej funkcie modelu. Používa sa pri porovnávaní modelov a výpočte informačných kritérií. |
| AIC | Akaikeho informačné kritérium. Hodnotí model na základe jeho vierohodnosti a počtu odhadovaných parametrov. Pri porovnávaní modelov uprednostňujeme nižšiu hodnotu AIC. |
| BIC | Bayesovské informačné kritérium. Podobá sa AIC, ale spravidla prísnejšie penalizuje zložitosť modelu, najmä pri väčšom počte pozorovaní. |
| df.residual | Reziduálne stupne voľnosti \(n-k\), kde \(n\) je počet pozorovaní a \(k\) počet odhadovaných regresných koeficientov vrátane absolútneho člena. |
| N | Počet pozorovaní použitých pri odhade regresného modelu. |
| deviance | Reziduálny súčet štvorcov (RSS). Táto charakteristika bola z výslednej tabuľky vynechaná, ale je dôležitá pri výpočte reziduálnej štandardnej chyby a koeficientu determinácie. |
1. Koeficient determinácie – R.squared
Koeficient determinácie vyjadruje, akú časť variability vysvetľovanej premennej dokážeme vysvetliť pomocou regresného modelu.
\[ R^2=1-\frac{RSS}{TSS} \]
kde:
- \(RSS=\sum_{i=1}^{n}(y_i-\hat y_i)^2\) je reziduálny súčet štvorcov,
- \(TSS=\sum_{i=1}^{n}(y_i-\bar y)^2\) je celkový súčet štvorcov.
Pri OLS modeli s absolútnym členom platí:
\[ 0\leq R^2\leq 1 \]
Interpretácia: Ak \(R^2=0.62\), potom regresný model vysvetľuje 62 % variability vysvetľovanej premennej. Zvyšných 38 % variability zostáva nevysvetlených modelom.
Vysoká hodnota \(R^2\) sama osebe nezaručuje správnu špecifikáciu modelu ani kauzálny vzťah medzi premennými.
2. Upravený koeficient determinácie – Adj.R.squared
Upravený koeficient determinácie zohľadňuje počet vysvetľujúcich premenných.
\[ \bar R^2 = 1-(1-R^2)\frac{n-1}{n-k} \]
kde \(k\) predstavuje počet odhadovaných regresných koeficientov vrátane absolútneho člena.
Na rozdiel od obyčajného \(R^2\) nemusí po pridaní ďalšej vysvetľujúcej premennej vzrásť.
Interpretácia: Upravený koeficient determinácie je vhodný pri porovnávaní modelov s rôznym počtom vysvetľujúcich premenných a rovnakou vysvetľovanou premennou, odhadnutých na rovnakých pozorovaniach.
Jeho hodnota môže byť aj záporná. V našom prípade je táto hodnota blézka pôvodnému koeficientu determinácie, nakoľko máme veľké množstvo pozorovaní a málo vysvetľujúcich premenných.
3. Reziduálna štandardná chyba – Sigma
Reziduálna štandardná chyba predstavuje odhad smerodajnej odchýlky náhodnej zložky regresného modelu.
\[ \hat\sigma= \sqrt{\frac{\sum_{i=1}^{n}e_i^2}{n-k}} \]
alebo
\[ \hat\sigma=\sqrt{\frac{RSS}{n-k}} \]
Interpretácia: Vyjadruje typickú veľkosť reziduálnych odchýlok od regresnej funkcie. Má rovnakú jednotku merania ako vysvetľovaná premenná.
V našom modeli očakávanej dĺžky života je vyjadrená v rokoch a hovoríme, že chyba modelu je v priemere približne 5 rokov (teda odhadovaná smerodajná odchýlka náhodnej zložky predstavuje približne 5 rokov).
4. F-štatistika – F Stat.
F-test overuje spoločnú štatistickú významnosť vysvetľujúcich premenných.
Pre náš model:
\[ LifeExpectancy_i= \beta_0+\beta_1\ln(GDP_i)+\beta_2Schooling_i+u_i \]
testujeme hypotézy:
\[ H_0:\beta_1=\beta_2=0 \]
\[ H_1:\text{aspoň jeden z koeficientov }\beta_1,\beta_2\neq 0 \]
Testovacia štatistika má tvar:
\[ F= \frac{R^2/(k-1)} {(1-R^2)/(n-k)} \]
Pri platnosti nulovej hypotézy a klasických predpokladov vrátane normality chýb má F-rozdelenie s \(k-1\) a \(n-k\) stupňami voľnosti.
Interpretácia: Vysoká hodnota F-štatistiky predstavuje dôkaz proti nulovej hypotéze, že všetky vysvetľujúce premenné majú nulové smernicové koeficienty. Táto štatistika nemá špecifickú ekonomickú interpretáciu a má technický charakter.
5. P-hodnota celkového F-testu – p.value
P-hodnota vyjadruje pravdepodobnosť získania rovnako alebo viac extrémnej hodnoty F-štatistiky za predpokladu platnosti nulovej hypotézy
\[H_0: \beta_i = 0 \quad \forall (i>0)\] \[H_0: (\exists i>0) \quad \beta_i \neq 0 \]
Tradičné rozhodovacie pravidlo:
- Ak \(p<0.05\), zamietame nulovú hypotézu na 5 % hladine významnosti.
- Ak \(p\geq 0.05\), nulovú hypotézu na tejto hladine významnosti nezamietame.
Zamietnutie nulovej hypotézy znamená, že aspoň jedna vysvetľujúca premenná má štatisticky významný smernicový koeficient.
Pozor: Táto p-hodnota sa vzťahuje na celý regresný model, nie na jednotlivé regresné koeficienty. Ich významnosť testujeme pomocou t-testov.
6. Stupne voľnosti F-testu – df
V prípade štandardného OLS modelu s absolútnym členom predstavuje df počet vysvetľujúcich premenných.
\[ df=k-1 \]
V našom modeli máme tri vysvetľujúce premenné a preto
\[ df=3 \]
Táto hodnota predstavuje počet stupňov voľnosti v čitateli F-štatistiky.
7. Logaritmická vierohodnosť – logLik
Logaritmická vierohodnosť vyjadruje, ako dobre odhadnutý pravdepodobnostný model zodpovedá pozorovaným údajom.
\[ \ell(\theta)=\ln L(\theta) \]
kde \(L(\theta)\) je vierohodnostná funkcia a \(\theta\) označuje parametre modelu.
Pri lineárnom regresnom modeli sa štandardne vychádza z predpokladu normálneho rozdelenia náhodných chýb.
Interpretácia: Pri porovnávaní modelov odhadnutých na rovnakých údajoch a pre tú istú vysvetľovanú premennú znamená vyššia hodnota maximálnej logaritmickej vierohodnosti lepšie prispôsobenie modelu údajom.
Samotná hodnota logLik však nepenalizuje počet parametrov modelu.
8. Akaikeho informačné kritérium – AIC
Akaikeho informačné kritérium má tvar:
\[ AIC=-2\ell(\hat\theta)+2K \]
kde:
- \(\ell(\hat\theta)\) je maximálna hodnota logaritmickej vierohodnosti,
- \(K\) je počet odhadovaných parametrov pravdepodobnostného modelu.
Pri normálnom lineárnom regresnom modeli sa do \(K\) započítavajú regresné koeficienty aj parameter rozptylu náhodnej zložky.
Interpretácia: Pri porovnávaní vhodných modelov uprednostňujeme model s nižšou hodnotou AIC.
AIC zohľadňuje kompromis medzi kvalitou prispôsobenia modelu údajom a jeho zložitosťou.
9. Bayesovské informačné kritérium – BIC
Bayesovské informačné kritérium má tvar:
\[ BIC=-2\ell(\hat\theta)+K\ln(n) \]
kde:
- \(K\) je počet odhadovaných parametrov,
- \(n\) je počet pozorovaní.
Interpretácia: Rovnako ako pri AIC uprednostňujeme nižšiu hodnotu BIC.
BIC spravidla penalizuje zložité modely prísnejšie ako AIC, pretože penalizačný člen závisí od počtu pozorovaní.
Poznámka: Hodnoty AIC a BIC majú význam predovšetkým pri porovnávaní modelov odhadnutých na porovnateľných údajoch a s rovnakou vysvetľovanou premennou.
10. Reziduálne stupne voľnosti – df.residual
Reziduálne stupne voľnosti vypočítame:
\[ df_{\mathrm{residual}}=n-k \]
kde:
- \(n\) je počet pozorovaní,
- \(k\) je počet odhadovaných regresných koeficientov vrátane absolútneho člena.
Napríklad pri \(n=100\) pozorovaniach a štyroch regresných koeficientoch:
\[ df_{\mathrm{residual}}=183-4=179 \]
Reziduálne stupne voľnosti využívame pri odhade rozptylu náhodnej zložky, pri t-testoch aj F-testoch.
11. Počet pozorovaní – N
Charakteristika N predstavuje počet pozorovaní skutočne použitých pri odhade regresného modelu.
V R zodpovedá:
nobs(model)[1] 183
Pozor: Počet použitých pozorovaní môže byť nižší ako počet riadkov pôvodného dátového súboru, napríklad ak niektoré pozorovania obsahujú chýbajúce hodnoty.
12. Reziduálny súčet štvorcov – deviance
Táto charakteristika bola z našej tabuľky vynechaná, ale patrí medzi základné charakteristiky OLS regresie.
Pre model odhadnutý pomocou lm() platí:
\[ deviance=RSS=\sum_{i=1}^{n}(y_i-\hat y_i)^2 \]
alebo
\[ RSS=\sum_{i=1}^{n}e_i^2 \]
Interpretácia: Reziduálny súčet štvorcov meria celkovú veľkosť štvorcov odchýlok pozorovaných hodnôt od hodnôt predikovaných regresným modelom.
Metóda najmenších štvorcov (OLS) hľadá také odhady regresných koeficientov, ktoré minimalizujú práve túto veličinu.
Z reziduálneho súčtu štvorcov následne vypočítame reziduálnu štandardnú chybu:
\[ \hat\sigma=\sqrt{\frac{deviance}{df_{\mathrm{residual}}}} \]
V R si tento vzťah môžeme overiť:
deviance(model)[1] 4534.949
sigma(model)[1] 5.03338
sqrt(deviance(model) / df.residual(model))[1] 5.03338
Posledné dva príkazy poskytujú rovnaký výsledok, s výnimkou prípadných numerických rozdielov spôsobených zaokrúhľovaním.
Záverečné zhrnutie
Pri interpretácii regresného modelu rozlišujeme tri základné skupiny charakteristík:
- Vysvetľovacia schopnosť modelu:
R.squared,Adj.R.squared. - Štatistická významnosť a presnosť modelu:
Sigma,F Stat.,p.value,df,df.residual. - Porovnávanie modelov a ďalšie informácie:
logLik,AIC,BIC,N,deviance.
Funkcia broom::glance() teda dopĺňa funkciu broom::tidy() o informácie potrebné na posúdenie regresného modelu ako celku.
Grafická analýza kvality modelu
Ak hovoríme o vlastnostiach modelu ako celku, pozrime sa najskôr na nasledujúce obrázky. Na základe Q-Q grafu získavame dojem o možných problémoch porušenia normality rezíduí.
# Nastaviť rozloženie 2 x 2
par(mfrow = c(2, 2))
# Vykresliť všetky 4 diagnostické grafy modelu
plot(model)# (Voliteľné) pridať spoločný nadpis
#mtext("Diagnostické grafy regresného modelu", outer = TRUE, cex = 1.2, font = 2)
# Resetovať layout
par(mfrow = c(1, 1))Residuals vs. fitted
Interpretácia vášho konkrétneho grafu
Centrovanie okolo nuly
Reziduály kolíšu približne okolo 0 – to je dobré.
Naznačuje to, že model nemá výrazné skreslenie v predikciách.
Červená hladká čiara je mierne zakrivená (vpravo sa ohýba nadol a uprostred nahor), to naznačuje možnú miernu nelinearitu – modelu môže chýbať nelineárny tvar nejakej premennej.
Rozptyl rezíduí - Vertikálny rozptyl (variancia rezíduí) sa javí ako približne konštantný v rámci prispôsobených hodnôt čo je dobrý dôkaz homoscedasticity.
Ak by sa rezíduá rozprestierali (tvorili kónus), naznačovalo by to heteroskedasticitu.
Odľahlé hodnoty - Niekoľko bodov (napr. v blízkosti −20) leží ďaleko od ostatných – ide o potenciálne odľahlé hodnoty alebo vplyvné pozorovania.
Môžeme ich preskúmať pomocou outlierTest(model) (z balíka car).
Q-Q plot
Čo ukazuje
- Os X: Teoretické kvantily – čo by sme očakávali, ak by rezíduá boli dokonale normálne rozložené.
- Os Y: Štandardizované rezíduá – skutočné kvantily z vašej vzorky.
- 45° prerušovaná čiara: Ideálny prípad – ak sú rezíduá normálne rozložené, body by mali ležať tesne pozdĺž tejto čiary.
Interpretácia vášho konkrétneho grafu
Celkový tvar
Väčšina bodov leží blízko priamky — to naznačuje, že rezíduá sú približne normálne.
To je dobré: predpoklad normality sa zdá byť vo veľkej miere splnený.
Krajné hodnoty (extrémy)
Body na oboch koncoch (vľavo dole a vpravo hore) sa mierne odchyľujú od priamky.
To naznačuje miernu nenormálnosť v koncoch – možno niekoľko odľahlých hodnôt alebo ťažšie konce, ako je normálne (trochu špicatosť).
Stredná oblasť
Stredná časť grafu (−1 až +1 kvantily) sa veľmi dobre zhoduje – čo znamená, že väčšina rezíduí pekne zapadá do normálneho rozdelenia.
Zároveň vykonávame následné testy, v ktorých zamietame hypotézu o normálnom rozložení modelových chýb, ako aj prítomnosť extrémnych hodnôt.
Scale location plot
Čo to znázorňuje
Os X: Vyrovnan0 hodnoty Os Y: Druhá odmocnina absolútnych štandardizovaných rezíduí Červená čiara: LOESS (vyhladený) trend cez body
Interpretácia nášho konkrétneho grafu
Horizontálne rozptýlenie
- Body sú rovnomerne rozptýlené po osi x bez vytvorenia lievika alebo krivky. To naznačuje približne konštantnú varianciu – rezíduá sú homoscedastické.
- Červená hladká čiara je takmer rovná – ďalší znak, že pri zvyšovaní vyrovnaných hodnôt nedochádza k žiadnej systematickej zmene variancie.
- Odľahlé hodnoty - niekoľko bodov je mierne nad 1,5, ale žiadny z nich nie je extrémny – takže nedochádza k žiadnym závažným anomáliám variancie.
residuals vs leverage
Čo znázorňuje graf
Os X: Pákový efekt — meria, ako ďaleko je prediktorový vektor bodu od stredu všetkých 𝑥 x.
Os Y: Štandardizované rezíduá — ako ďaleko je pozorovaná hodnota od vyrovnanej hodnoty v jednotkách štandardnej odchýlky.
Bodkované krivky: Kontúry Cookovej vzdialenosti, ktoré udávajú, do akej miery pozorovanie ovplyvňuje regresnú priamku.
Červená čiara: Hladká LOESS čiara prechádzajúca rezíduami.lm
Interpretácia vášho konkrétneho grafu
Rozloženie vplyvu
Väčšina pozorovaní má nízky vplyv (pod 0,05) — typické pre veľké vzorky alebo dobre vyvážené údaje.
Jeden alebo dva body (napr. okolo 0,2) vynikajú – ide o pozorovania s vysokou pákou, čo znamená, že ich hodnoty sú ďaleko od väčšiny údajov.
Veľkosť rezíduí
Štandardizované rezíduá väčšinou medzi −2 a +2 – to je dobré (žiadne závažné výnimky v 𝑦 y).
Pozorovanie označené číslom 113 má zdanlivo stredný vplyv a relatívne veľkú rezíduálnu hodnotu – potenciálne vplyvný prípad.
Kontúry Cookovej vzdialenosti
Žiaden z bodov jasne neprekračuje vonkajšie línie Cookovej vzdialenosti (≈0,5 alebo 1,0).
Preto sa nezdá, že by niektoré pozorovanie neprimerane ovplyvňovalo regresné koeficienty.
Testy normality rezíduí
Keďže rezíduá \(\mathbf e\) sú lineárnou kombináciou náhodných ložiek \(mathbf u\), teda
\[\mathbf e = \mathbf y - \hat{\mathbf y} = \mathbf X \beta + \mathbf u - \mathbf X \hat{\beta} = \mathbf X \beta + \mathbf u - \mathbf X (\mathbf X^T \mathbf X)^{-1} \mathbf X^T \mathbf y = \] \[ = (\mathbf I - \mathbf X (\mathbf X^T \mathbf X)^{-1} \mathbf X^T\mathbf X) \mathbf u \]
a vieme, 6e linerárna kombinácia lineárne rozdelených veličím (pozrime sa na výraz dole) je tiež lineárne rozdelená veličina, potom predpoklad normálne rozdelených (nepozorovateľných) veličín \(\mathbf u\) môžeme testovať sprostredkovane cez normalitu pozorovatených veličín - rezíduí \(\mathbf e\).
Jarqueov–Berov test normality rezíduí
Jarqueov–Berov test (JB test) overuje, či rozdelenie rezíduí regresného modelu zodpovedá normálnemu rozdeleniu. Test vychádza z dvoch charakteristík rozdelenia: šikmosti (skewness) a špicatosti (kurtosis).
Pri normálnom rozdelení je šikmosť rovná nule a špicatosť má hodnotu 3.
Testujeme hypotézy:
- \(H_0\): Rozdelenie rezíduí je normálne.
- \(H_1\): Rozdelenie rezíduí nie je normálne.
Testovacia štatistika:
\[ JB = \frac{n}{6}\left(S^2+\frac{(K-3)^2}{4}\right) \]
kde:
- \(n\) – počet pozorovaní,
- \(S\) – výberová šikmosť rezíduí,
- \(K\) – výberová špicatosť rezíduí.
Pri platnosti nulovej hypotézy má testovacia štatistika asymptoticky chí-kvadrát rozdelenie s dvoma stupňami voľnosti:
\[ JB \overset{a}{\sim} \chi^2(2) \]
Rozhodovacie pravidlo:
Ak je \(p < 0.05\), zamietame nulovú hypotézu o normalite rezíduí na 5 % hladine významnosti.
Ak je \(p \geq 0.05\), nulovú hypotézu nezamietame. To však neznamená, že sme normalitu rezíduí dokázali.
# Jarque-Bera normality test
res <- residuals(model)
jb_test <- tseries::jarque.bera.test(res)
broom::tidy(jb_test) |>
dplyr::select(statistic, p.value, method) |>
knitr::kable(
digits = 4,
col.names = c("JB statistic", "p-value", "Test"),
caption = "Jarque-Bera test of residual normality"
) |>
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)| JB statistic | p-value | Test |
|---|---|---|
| 21.3907 | 0 | Jarque Bera Test |
Poznámka: Existujú aj ďalšie testy normality, napríklad Shapirov–Wilkov test, Andersonov–Darlingov test alebo Kolmogorovov–Smirnovov test. Jarqueov–Berov test volíme najmä pre jeho jednoduchú interpretáciu a časté využitie v ekonometrii. Umožňuje identifikovať odchýlky od normality prostredníctvom šikmosti a špicatosti, ktoré študenti už poznajú z opisnej štatistiky. Keďže test využíva asymptotické rozdelenie a nie je citlivý na všetky typy odchýlok od normality, je vhodné jeho výsledky doplniť napríklad Q-Q grafom.
Test odľahlých pozorovaní – outlierTest()
Test odľahlých pozorovaní slúži na identifikáciu pozorovaní, ktorých hodnoty vysvetľovanej premennej sa výrazne odlišujú od hodnôt predikovaných regresným modelom.
Funkcia car::outlierTest() využíva externe študentizované rezíduá, ktoré sa vypočítajú ako:
\[ t_i = \frac{e_i}{\hat{\sigma}_{(i)}\sqrt{1-h_{ii}}} \]
kde:
- \(e_i = y_i-\hat{y}_i\) – rezíduum \(i\)-teho pozorovania,
- \(h_{ii}\) – diagonálny prvok Hat matice (leverage),
- \(\hat{\sigma}_{(i)}\) – odhad smerodajnej odchýlky náhodnej zložky získaný po vynechaní \(i\)-teho pozorovania.
Testované hypotézy:
- \(H_0\): Pozorovanie nie je odľahlé vzhľadom na špecifikovaný regresný model.
- \(H_1\): Pozorovanie je odľahlé vzhľadom na špecifikovaný regresný model.
Za predpokladu normálne rozdelených nezávislých chýb má externe študentizované rezíduum pri nulovej hypotéze Studentovo t-rozdelenie s \(n-k-1\) stupňami voľnosti, kde \(k\) je počet regresných koeficientov vrátane absolútneho člena.
Keďže testujeme viacero pozorovaní súčasne, funkcia používa Bonferroniho korekciu p-hodnôt:
\[ p_{i,\mathrm{Bonf}}=\min(1,n\cdot p_i) \]
kde \(p_i\) predstavuje neupravenú p-hodnotu individuálneho testu a \(n\) počet testovaných pozorovaní.
Rozhodovacie pravidlo:
Ak \(p_{i,\mathrm{Bonf}}<0.05\), príslušné pozorovanie identifikujeme ako štatisticky významne odľahlé na hladine významnosti 5 %.
# Outlier test with Bonferroni correction
outlier_test <- car::outlierTest(model)
if (is.null(outlier_test)) {
cat("No observations returned by outlierTest.")
} else {
outlier_table <- data.frame(
Observation = names(outlier_test$rstud),
rstudent = unname(outlier_test$rstud),
unadjusted.p = unname(outlier_test$p),
bonf.p = unname(outlier_test$bonf.p)
)
outlier_table |>
knitr::kable(
digits = 4,
col.names = c(
"Observation",
"Studentized residual",
"Unadjusted p-value",
"Bonferroni p-value"
),
caption = "Outlier test with Bonferroni correction"
) |>
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)
}| Observation | Studentized residual | Unadjusted p-value | Bonferroni p-value |
|---|---|---|---|
| 433 | -3.643 | 4e-04 | 0.0647 |
Poznámka: Odľahlé pozorovanie nemusí byť chybné. Môže obsahovať dôležitú ekonomickú informáciu, a preto by sme ho nemali automaticky odstrániť. Test identifikuje predovšetkým nezvyčajné hodnoty vysvetľovanej premennej vzhľadom na regresný model. Na posúdenie vplyvu pozorovania na odhad regresných koeficientov môžeme použiť napríklad Cookovu vzdialenosť.
3. Interpretácia jednotlivých stĺpcov
| Stĺpec | Význam |
|---|---|
Observation |
Identifikátor pozorovania, pri ktorom sa skúma možná odľahlosť. |
Studentized residual |
Externe študentizované rezíduum, pri ktorom sa rozptyl odhaduje bez príslušného pozorovania. |
Unadjusted p-value |
P-hodnota individuálneho testu bez korekcie na viacnásobné testovanie. |
Bonferroni p-value |
P-hodnota upravená Bonferroniho korekciou, ktorá zohľadňuje viacnásobné testovanie odľahlých pozorovaní. |
Dôležité: Pri identifikácii odľahlých pozorovaní by sme sa mali rozhodovať podľa Bonferroni p-value. Ak je menšia ako 0,05, príslušné pozorovanie považujeme za štatisticky významne odľahlé na 5 % hladine významnosti.
Štatisticky významne odľahlé pozorovanie však nemusí byť chybné a nemali by sme ho automaticky odstrániť z dátového súboru.
Poznámka: Funkcia
car::outlierTest()štandardne zobrazuje len najextrémnejšie pozorovania, nie všetky riadky dátového súboru. Ak nenájde Bonferroniho významné pozorovanie, môže napriek tomu zobraziť pozorovanie s najväčším absolútnym študentizovaným rezíduom.
V našom prípade je p-hodnota testu 433. pozorovania mierne nad 0.06, čo nepovažujeme za vážny problém. Napriek tomu sa pokúsime tento problém redukovať.
Úprava modelu
Problém nelinearity, alebo odľahlých hodnôt sa dá efektívne retukovať s logaritmickými transformáciami jednotlivých premenných.
\[ Life\_Expectancy_t = \beta_0 + \beta_1 \ln(GDP_t) + \beta_2 Schooling_t + u_t\] Logaritmicá transformácia zároveň znamená zmenu interpretácie zodpovedajúceho regresného koeficientu. V našom prípade by sa \(\beta_1\) interpretovalo nasledovne. Ak \(GDP_t\) sa zmení o 1 percento, potom očakávaná dĺžka života sa zmení o \(\beta_1\) rokov.
library(broom)
library(knitr)
library(kableExtra)
model2 <- lm(
Life.expectancy ~ log(GDP) + Schooling,
data = udaje.2015
)
tidy(model2) |>
kable(
digits = 4,
col.names = c(
"Variable",
"Estimate",
"Std. Error",
"t value",
"Pr(>|t|)"
),
caption = "Regression results – Life expectancy"
) |>
kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)| Variable | Estimate | Std. Error | t value | Pr(>|t|) |
|---|---|---|---|---|
| (Intercept) | 40.0434 | 2.1992 | 18.2079 | 0.0000 |
| log(GDP) | 0.6338 | 0.3002 | 2.1115 | 0.0361 |
| Schooling | 2.0561 | 0.1557 | 13.2028 | 0.0000 |
Graphical diagnostic of the model
# Nastaviť rozloženie 2 x 2
par(mfrow = c(2, 2))
# Vykresliť všetky 4 diagnostické grafy modelu
plot(model2)# (Voliteľné) pridať spoločný nadpis
#mtext("Diagnostické grafy regresného modelu", outer = TRUE, cex = 1.2, font = 2)
# Resetovať layout
par(mfrow = c(1, 1))Test nornality rezíduí upraveného modelu
# Jarque-Bera normality test
res <- residuals(model2)
jb_test <- tseries::jarque.bera.test(res)
broom::tidy(jb_test) |>
dplyr::select(statistic, p.value, method) |>
knitr::kable(
digits = 4,
col.names = c("JB statistic", "p-value", "Test"),
caption = "Jarque-Bera test of residual normality"
) |>
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)| JB statistic | p-value | Test |
|---|---|---|
| 30.1075 | 0 | Jarque Bera Test |
Logaritmická transformácia teda nevedie k priblíženiu rozdelenia rezíduí k normalite.
Test odľahlých hodnôt upraveného modelu
# Outlier test with Bonferroni correction
outlier_test <- car::outlierTest(model2)
if (is.null(outlier_test)) {
cat("No observations returned by outlierTest.")
} else {
outlier_table <- data.frame(
Observation = names(outlier_test$rstud),
rstudent = unname(outlier_test$rstud),
unadjusted.p = unname(outlier_test$p),
bonf.p = unname(outlier_test$bonf.p)
)
outlier_table |>
knitr::kable(
digits = 4,
col.names = c(
"Observation",
"Studentized residual",
"Unadjusted p-value",
"Bonferroni p-value"
),
caption = "Outlier test with Bonferroni correction"
) |>
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover"),
full_width = FALSE
)
}| Observation | Studentized residual | Unadjusted p-value | Bonferroni p-value |
|---|---|---|---|
| 433 | -3.8286 | 2e-04 | 0.0326 |
Záver
V tejto úlohe sme kvantifikovali viacnásobnú lineárnu regresiu a demonštrovali sme základnú diagnostiku modelu. Logaritmická transformácia spôsobila vznik odľahlej hodnoty a teda nezlepšila tech nické charakteristiky modelu. Mali by sme sa vrátiť k pôvodnému lineárnemu modelu s vynechaním neinterpretovateľnej vysvetľujúcej premennej \(BMI\).
save.image("pamat.Rdata")
rm(list=ls())