Budeme pracovať s regresným modelom z minulých cvičení, pričom \[ Unemployment_Rate_i = \beta_0 + \beta_1 GDP_Growth_Annual_i + \beta_2 Inflation_CPI_i + \beta_3 Public_Debt_i + u_i \]
Údaje máme z databázy Global Economic Indicators (2010–2025)- World bank. V analýze budeme pracovať iba s údajmi z roku 2015.
udaje <- read.csv("data.csv",dec=".",sep=";",header = TRUE)
udaje.2015 <- udaje[udaje$Year==2015,c("Unemployment_Rate","GDP_Growth_Annual","Inflation_CPI","Public_Debt")]
column_medians <- sapply(udaje.2015, median, na.rm = TRUE)
udaje_imputed <- udaje.2015
for (col in names(udaje.2015)) {
udaje_imputed[[col]][is.na(udaje_imputed[[col]])] <- column_medians[col]
}
udaje.2015 <- udaje_imputed
model <- lm(Unemployment_Rate ~ GDP_Growth_Annual + Inflation_CPI + Public_Debt,
data = udaje)
summary(model)
##
## Call:
## lm(formula = Unemployment_Rate ~ GDP_Growth_Annual + Inflation_CPI +
## Public_Debt, data = udaje)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.2732 -0.8633 0.1133 1.3498 3.3413
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.8882 6.1905 4.667 0.00117 **
## GDP_Growth_Annual -0.2263 0.3389 -0.668 0.52100
## Inflation_CPI -0.4022 0.2290 -1.756 0.11289
## Public_Debt -0.2739 0.0888 -3.085 0.01304 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.556 on 9 degrees of freedom
## Multiple R-squared: 0.578, Adjusted R-squared: 0.4373
## F-statistic: 4.109 on 3 and 9 DF, p-value: 0.04308
Regresný model skúmajúci faktory ovplyvňujúce mieru nezamestnanosti v roku 2015 je ako celok štatisticky významný (p = 0.043), čo znamená, že použité premenné spoločne vysvetľujú časť variability nezamestnanosti. Model dosiahol R² = 0.578, takže približne 58 % variability nezamestnanosti je vysvetlených zahrnutými premennými.
Zo závislých premenných sa ako štatisticky významná preukázala iba premenná verejný dlh (p = 0.013). Jej negatívny koeficient naznačuje, že vyšší verejný dlh je spojený s nižšou mierou nezamestnanosti – zvýšenie dlhu o 1 percentuálny bod znižuje nezamestnanosť približne o 0.27 p. b. Ostatné premenné, ročný rast HDP a inflácia, štatisticky významné neboli, a preto ich vplyv v rámci tohto modelu nemožno považovať za preukázaný.
Vo výsledkoch nepozorujeme žiadne výrazné rádové rozdiely medzi odhadmi regresných koeficientov. Všetky vysvetľujúce premenné majú koeficienty v porovnateľnom rozsahu, čo znamená, že model pracuje s premennými vyjadrenými v podobných jednotkách.
xvars <- udaje[, c("GDP_Growth_Annual", "Inflation_CPI", "Public_Debt")]
round(cor(xvars), 3)
## GDP_Growth_Annual Inflation_CPI Public_Debt
## GDP_Growth_Annual 1.000 -0.286 -0.366
## Inflation_CPI -0.286 1.000 -0.018
## Public_Debt -0.366 -0.018 1.000
Korelačná analýza ukazuje, že medzi vysvetľujúcimi premennými sa nenachádzajú silné lineárne vzťahy. Korelácia medzi rastom HDP a infláciou je slabá a negatívna (–0.286), rovnako slabý negatívny vzťah je aj medzi rastom HDP a verejným dlhom (–0.366). Inflácia a verejný dlh spolu prakticky vôbec nesúvisia (–0.018). Keďže všetky korelačné koeficienty sú výrazne pod hranicou 0.8, dá sa konštatovať, že medzi premennými nie je prítomná multikolinearita.
pairs(xvars,
main = "Scatterplotová matica – premenné GDP_Growth_Annual, Inflation_CPI, Public_Debt")
Scatterplotová matica naznačuje, že medzi premennými GDP_Growth_Annual, Inflation_CPI a Public_Debt sa nenachádzajú žiadne výrazné lineárne vzťahy. Body v jednotlivých grafoch sú rozptýlené bez jasného smerového trendu, čo podporuje výsledky z korelačnej analýzy. Slabšie náznaky negatívneho vzťahu možno vidieť medzi rastom HDP a infláciou či medzi rastom HDP a verejným dlhom, avšak tieto vzťahy nie sú výrazné. Celkovo scatterplotová matica potvrdzuje, že medzi premennými v modeli pravdepodobne nevzniká multikolinearita.
library(car)
vif(model)
## GDP_Growth_Annual Inflation_CPI Public_Debt
## 1.281456 1.109811 1.177131
Hodnoty VIF pre všetky premenné v modeli sú veľmi nízke – pohybujú sa medzi 1.10 a 1.28. Keďže za problémové sa považujú hodnoty VIF vyššie ako 5 (pri prísnom kritériu) alebo 10 (pri menej prísnom kritériu), možno jednoznačne konštatovať, že v modeli sa nevyskytuje multikolinearita. Vysvetľujúce premenné nie sú navzájom výrazne lineárne späté a každá z nich prináša do modelu vlastnú informáciu.
X <- model.matrix(model)[, -1]
XtX <- t(X) %*% X
eig <- eigen(XtX)
condition_number <- sqrt(max(eig$values) / min(eig$values))
condition_number
## [1] 26.76653
Vypočítaný condition number má hodnotu 26.77, čo spadá do intervalu 10–30, teda do kategórie miernej multikolinearity. Ide o úroveň, ktorá síce naznačuje určitú prítomnosť lineárnych vzťahov medzi premennými, no spravidla nepredstavuje vážny problém pre odhad regresného modelu. Výsledok je tak konzistentný s predchádzajúcimi zisteniami – model neobsahuje silnú multikolinearitu a odhady koeficientov sú spoľahlivé.
Vzhľadom na to, že v modeli sa neprejavila multikolinearita (nízke korelácie, nízke hodnoty VIF a nízky condition number), nie je potrebné vynechávať žiadnu premennú. Model neobsahuje premenné, ktoré by sa navzájom silno prekrývali, a preto nie je potrebné testovať alternatívne modely bez jednotlivých premenných.
Keďže v modeli sa neprejavila multikolinearita (nízke korelácie, nízke hodnoty VIF a nízky condition number), nie je potrebné použiť škálovanie premenných. Škálovanie sa používa ako riešenie multikolinearity, ktorá však v našom modeli nevznikla.
Úprava premenných na nové jednotky nie je potrebná, keďže všetky premenné v modeli sú vyjadrené v porovnateľných rádoch (v percentách) a neexistuje medzi nimi multikolinearita. Transformácia premenných by v tomto prípade nepriniesla zlepšenie modelu ani interpretácie.
Keďže v modeli nebola identifikovaná multikolinearita (nízke korelácie, nízke VIF a nízky condition number), nie je potrebné aplikovať PCA. PCA sa využíva ako riešenie multikolinearity zlúčením korelovaných premenných do jedného komponentu, čo však v našom prípade nie je potrebné, keďže premenné navzájom nekorelujú a sú dobre interpretovateľné.
Ridge regresia sa v našom prípade nepoužila, keďže v modeli nebola identifikovaná multikolinearita. Hrebeňová regresia slúži na stabilizáciu koeficientov pri silnej korelácii vysvetľujúcich premenných. Keďže hodnoty korelácie, VIF a condition number potvrdili, že multikolinearita sa v našom modeli nevyskytuje, použitie ridge regresie by neprinieslo žiadny prínos a koeficienty by boli zbytočne skreslené.
V tejto úlohe sme sa zamerali na diagnostiku multikolinearity v regresnom modeli, v ktorom bola miera nezamestnanosti vysvetľovaná ročným rastom HDP, infláciou a verejným dlhom. Na základe korelačnej matice, hodnôt VIF a condition number bolo zistené, že medzi vysvetľujúcimi premennými sa nevyskytuje multikolinearita. Korelácie medzi premennými boli nízke, hodnoty VIF sa pohybovali okolo 1 a condition number bol pod hranicou, ktorá by signalizovala problém. Z tohto dôvodu nebolo potrebné uplatniť žiadne postupy na riešenie multikolinearity, ako je vynechávanie premenných, škálovanie, transformácia jednotiek, PCA či hrebeňová regresia. Model je z hľadiska multikolinearity stabilný a jednotlivé premenné sú interpretovateľné bez potreby ďalších úprav.