S využitím databázy World Population by Country 2025 (Latest) database.

library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(lmtest)
library(sandwich)
library(car)
## Loading required package: carData
rm(list=ls())

setwd(“/Cloud/project/tyzdne/tyzden5”)

# Načítanie vlastného datasetu s údajmi o populácii
údaje <- read.csv("population_data.csv", sep = ",", header = TRUE)
colnames(údaje)
##  [1] "id"                      "Country..or.dependency."
##  [3] "Population.2025"         "Yearly.Change"          
##  [5] "Net.Change"              "Density..P.Km.."        
##  [7] "Land.Area..Km.."         "Migrants..net."         
##  [9] "Fert..Rate"              "Median.Age"             
## [11] "Urban.Pop.."             "World.Share"

Úvod do problému, stanovenie hypotéz

Rozhodol som sa modelovať počet obyvateľov v roku 2025 (Population 2025) v závislosti od vybraných demografických a socioekonomických premenných, a to od miery pôrodnosti (Fert. Rate), mediánového veku (Median Age) a čistej migrácie (Migrants net).

Moja pracovná hypotéza hovorí o štatisticky významnom vplyve všetkých troch vysvetľujúcich premenných na veľkosť populácie. Očakávam, že vyššia miera pôrodnosti a kladná migrácia budú mať pozitívny vplyv (teda zvýšia počet obyvateľov), zatiaľ čo vyšší mediánový vek bude mať negatívny vplyv (znamená staršiu populáciu a pomalší rast).

Príprava databázy, čistenie a úprava údajov

# Načítanie vlastného datasetu
data <- read.csv("population_data.csv", sep = ",", header = TRUE)

# Výber relevantných stĺpcov pre model
# Zameriam sa na počet obyvateľov, pôrodnosť, mediánový vek a migráciu
data_selected <- data[, c("Country..or.dependency.", "Population.2025", "Fert..Rate", "Median.Age", "Migrants..net.")]

# Konverzia textových hodnôt (s percentami alebo čiarkami) na číselné typy
data_selected$`Migrants..net.` <- as.numeric(gsub("[^0-9.-]", "", data_selected$`Migrants..net.`))

# Doplnenie chýbajúcich hodnôt mediánom
column_medians <- sapply(data_selected, function(x) if(is.numeric(x)) median(x, na.rm = TRUE) else NA)

for (col in names(data_selected)) {
  if (is.numeric(data_selected[[col]])) {
    data_selected[[col]][is.na(data_selected[[col]])] <- column_medians[col]
  }
}

# Pre lepšiu čitateľnosť premenujeme dataset
population_data <- data_selected

# Náhľad na prvé riadky po úprave
head(population_data)
##   Country..or.dependency. Population.2025 Fert..Rate Median.Age Migrants..net.
## 1                   India      1463865525       1.94       28.8         495753
## 2                   China      1416096094       1.02       40.1         268126
## 3           United States       347275807       1.62       38.5        1230663
## 4               Indonesia       285721236       2.10       30.4          39509
## 5                Pakistan       255219554       3.50       20.6        1235336
## 6                 Nigeria       237527782       4.30       18.1          15258

Teraz chceme vidieť tvar údajov (či nie sú v nich nejaké nezrovnalosti – napríklad hodnoty 0).

# Vizualizácia tvaru údajov – boxploty

# Nastavíme dataset
dataset <- data_selected   # alebo population_data, podľa názvu, ktorý používaš

# Nastavenie rozloženia grafov (2 riadky × 2 stĺpce)
par(mfrow = c(2, 2))
par(mar = c(4, 4, 2, 1))  # okraje grafov

# Vytvorenie boxplotov pre všetky numerické premenné okrem názvu krajiny
for (col in names(dataset)[-1]) {
  boxplot(dataset[[col]], 
          main = paste("Boxplot:", col),
          xlab = "Hodnoty",
          col = "lightblue",
          border = "darkblue")
}

# Nadpis pre celú sadu grafov
mtext("Boxploty demografických premenných", outer = TRUE, cex = 1.4, font = 2)

# Obnovenie pôvodného zobrazenia grafov
par(mfrow = c(1, 1))

🔎 Interpretácia boxplotov

Z vyššie uvedených boxplotov je zrejmé, že údaje o populácii a migrácii obsahujú niekoľko odľahlých hodnôt, čo súvisí s rozdielnou veľkosťou krajín a ich ekonomickým postavením. Pôrodnosť a mediánový vek vykazujú relatívne stabilnejšie rozdelenie bez extrémov. Takéto vizualizácie sú dôležité, pretože upozorňujú na možné zdroje variability, ktoré môžu ovplyvniť výsledky regresnej analýzy.

Population 2025 Fert. Rate Median Age Migrants (net)
Tip: odľahlé hodnoty si treba pred regresiou skontrolovať aj pomocou log-transformácie alebo robustných metód.

Lineárna regresia

Model odhadujeme príkazom lm(), ktorý v R slúži na vytváranie lineárnych modelov. V našom prípade chceme zistiť, ako miera pôrodnosti (Fert_Rate), mediánový vek (Median_Age) a čistá migrácia (Migrants_net) ovplyvňujú počet obyvateľov v roku 2025 (Population_2025).

# Odhad lineárneho modelu
model <- lm(Population.2025 ~ Fert..Rate + Median.Age + Migrants..net., data = data_selected)

# Výpis výsledkov regresie
summary(model)
## 
## Call:
## lm(formula = Population.2025 ~ Fert..Rate + Median.Age + Migrants..net., 
##     data = data_selected)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -436177860  -23955134  -16362094   -2549708 1321181637 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.032e+08  8.541e+07   1.208    0.228    
## Fert..Rate     -1.316e+07  1.471e+07  -0.895    0.372    
## Median.Age     -1.655e+06  1.689e+06  -0.980    0.328    
## Migrants..net.  2.669e+02  4.935e+01   5.408  1.6e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 131400000 on 229 degrees of freedom
## Multiple R-squared:  0.1198, Adjusted R-squared:  0.1083 
## F-statistic: 10.39 on 3 and 229 DF,  p-value: 1.95e-06

📊 Interpretácia výsledkov regresie

Výsledky lineárneho modelu ukazujú, že migrácia (Migrants_net)významný pozitívny vplyv na veľkosť populácie v roku 2025. Krajiny s vyššou čistou migráciou majú tendenciu mať väčší počet obyvateľov. Naopak, premenné pôrodnosť (Fert_Rate) a mediánový vek (Median_Age) sa v modeli ukázali ako štatisticky nevýznamné, hoci majú očakávané znamienka (vyšší vek znižuje rast populácie, vyššia pôrodnosť by ho mala zvyšovať).

Koeficient determinácie R² = 0.12 naznačuje, že model vysvetľuje približne 12 % variability populácie medzi krajinami. Hoci ide o relatívne nízku hodnotu, výsledok je pre makroekonomické a demografické dáta bežný. F-test (p-hodnota 1.95e–06) potvrdzuje, že model ako celok je štatisticky významný.

Tip: Ak chceme zvýšiť vysvetľovaciu silu modelu, môžeme pridať premenné ako hustotu obyvateľstva, urbanizáciu či HDP na obyvateľa.

Výstupy z objektu lm()

Objekt triedy lm() nám poskytuje niekoľko dôležitých výstupov:

  1. Vektor odhadnutých koeficientovmodel$coefficients
  2. Vektor rezíduí (chýb odhadu)model$residuals
  3. Vektor vyrovnaných hodnôt vysvetľovanej veličinymodel$fitted.values
  4. Maticu vysvetľujúcich premennýchmodel$model alebo model.matrix(model)
# Výpis základných komponentov objektu "model"

cat("1️⃣  Odhadnuté koeficienty:\n")
## 1️⃣  Odhadnuté koeficienty:
print(model$coefficients)
##    (Intercept)     Fert..Rate     Median.Age Migrants..net. 
##   1.031595e+08  -1.316478e+07  -1.655349e+06   2.668986e+02
cat("\n2️⃣  Prvých 10 hodnôt rezíduí:\n")
## 
## 2️⃣  Prvých 10 hodnôt rezíduí:
print(head(model$residuals, 10))
##          1          2          3          4          5          6          7 
## 1301603888 1321181637     711840  249985427  -97472584  216866260  130330100 
##          8          9         10 
##   36024158   59689672  107667495
cat("\n3️⃣  Prvých 10 vyrovnaných hodnôt vysvetľovanej premennej:\n")
## 
## 3️⃣  Prvých 10 vyrovnaných hodnôt vysvetľovanej premennej:
print(head(model$fitted.values, 10))
##         1         2         3         4         5         6         7         8 
## 162261637  94914457 346563967  35735809 352692138  20661522  82482305 139662741 
##         9        10 
##  84307721  27804556
cat("\n4️⃣  Náhľad na maticu X (model.matrix):\n")
## 
## 4️⃣  Náhľad na maticu X (model.matrix):
print(head(model.matrix(model)))
##   (Intercept) Fert..Rate Median.Age Migrants..net.
## 1           1       1.94       28.8         495753
## 2           1       1.02       40.1         268126
## 3           1       1.62       38.5        1230663
## 4           1       2.10       30.4          39509
## 5           1       3.50       20.6        1235336
## 6           1       4.30       18.1          15258

🧩 Interpretácia výstupov objektu lm()

Výpis vyššie ukazuje, aké základné komponenty obsahuje objekt triedy lm po odhade lineárneho modelu. Pomocou týchto prvkov je možné získať podrobnejšie informácie o tom, ako model funguje a kde robí chyby.

  • Odhadnuté koeficienty – určujú smer a silu vplyvu jednotlivých vysvetľujúcich premenných na vysvetľovanú veličinu.
  • Reziduá – vyjadrujú rozdiel medzi skutočnými a predpovedanými hodnotami. Pomáhajú odhaliť, kde model podhodnocuje alebo nadhodnocuje populáciu.
  • Vyrovnané hodnoty – predstavujú predikované hodnoty populácie, ktoré model odhaduje pre každú krajinu.
  • Matica X – obsahuje všetky premenné, ktoré vstupujú do modelu. Je základom pre výpočty koeficientov a testov.
Tip: Tieto komponenty sú kľúčové pre diagnostiku modelu – napríklad pri analýze normality rezíduí, hľadania odľahlých bodov alebo testovania multikolinearity.

📊 Diagnostické grafy regresného modelu

Súhrn odhadovaného modelu nám poskytuje súbor regresných koeficientov, ktorých znamienka budú rozoberané neskôr. Ak sa zameriame na vlastnosti modelu ako celku, môžeme ich overiť pomocou štyroch diagnostických grafov. Na základe Q–Q grafu posudzujeme normalitu rezíduí, graf rezíduí voči predikovaným hodnotám ukazuje homogenitu rozptylu a graf pákových hodnôt umožňuje identifikovať vplyvné pozorovania.

Diagnostické grafy regresného modelu

Diagnostické grafy regresného modelu

Interpretácia môjho konkrétneho grafu

🔍 Podrobná interpretácia grafu Residuals vs Fitted

  • Centrovanie okolo nuly: Reziduá kolíšu približne okolo 0 – to je dobré znamenie, model nemá výrazné systematické skreslenie v predikciách.
  • Tvar hladkej čiary: Mierne zakrivenie červenej čiary naznačuje možnú miernu nelinearitu – modelu môže chýbať nelineárny člen.
  • Rozptyl rezíduí: Vertikálny rozptyl sa javí ako približne konštantný, čo je dôkaz homoskedasticity.
  • Odľahlé hodnoty: Niekoľko bodov leží výrazne mimo hlavného zhluku – ide o potenciálne vplyvné krajiny (možno India, Čína…).

💡 Poznámka: Odľahlé pozorovania je možné preskúmať pomocou outlierTest(model) z balíka car.

Q-Q plot

📊 Interpretácia Q–Q grafu rezíduí

  • Celkový tvar: Väčšina bodov leží blízko priamky, čo naznačuje, že reziduá sú približne normálne rozdelené.
  • 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 – niekoľko odľahlých hodnôt alebo ťažšie konce (trochu špicatosť).
  • Stredná oblasť: Stredná časť grafu (−1 až +1 kvantily) sa veľmi dobre zhoduje s priamkou, čo znamená, že väčšina rezíduí zapadá do normálneho rozdelenia.

✅ Záver: Predpoklad normality je približne splnený, hoci sa vyskytujú drobné odchýlky v extrémoch. Model teda neporušuje túto podmienku výrazne.

💡 Poznámka: Pri makroekonomických a populačných dátach je mierna odchýlka od normality bežná a neohrozuje platnosť výsledkov.

Čo ukazuje

📈 Q–Q graf rezíduí

Tento graf porovnáva štandardizované reziduá s teoretickým normálnym rozdelením. Ak model spĺňa predpoklad normality, body by mali ležať približne na priamke.
  • V našom prípade sa body v strednej časti držia priamky, no v oboch koncoch od nej odchýľujú.
  • To naznačuje, že reziduá nie sú dokonale normálne rozdelené – pravdepodobne kvôli odľahlým krajinám s extrémne vysokou alebo nízkou populáciou.
  • Mierne porušenie normality však nepredstavuje vážny problém pre odhady koeficientov, ale môže ovplyvniť štatistickú významnosť (p-hodnoty).

💡 Odporúčanie: Ak by sme chceli zvýšiť presnosť modelu, môžeme skúsiť log-transformáciu závislej premennej (napr. log(Population.2025)).

Scale location plot

Čo to znázorňuje

📊 Interpretácia Scale–Location grafu

Tento graf zobrazuje, či má model konštantný rozptyl rezíduí (predpoklad homoskedasticity). Ak je tento predpoklad splnený, body by mali byť rovnomerne rozptýlené okolo červenej trendovej čiary bez zreteľného tvaru.
  • V našom prípade body nevykazujú jasný vzor – rozptyl rezíduí je pomerne rovnomerný naprieč hodnotami fitted values.
  • Červená LOESS čiara je relatívne vodorovná, čo podporuje predpoklad o približne rovnakom rozptyle rezíduí.
  • Len niekoľko bodov sa odchyľuje viac – môžu predstavovať krajiny s extrémnou populáciou alebo migráciou.

Záver: Predpoklad homoskedasticity je vo všeobecnosti splnený. Model teda nemá vážny problém s nerovnakým rozptylom chýb.

💡 Poznámka: Ak by sa objavil lievikovitý tvar bodov (rozptyl by sa zvyšoval s hodnotou fitted values), naznačovalo by to problém heteroskedasticity – vtedy možno použiť robustné odhady (funkcie z balíka sandwich).

Interpretácia môjho konkrétneho grafu

📉 Interpretácia Scale–Location grafu

  • Horizontálne rozptýlenie: Body sú rovnomerne rozmiestnené po osi X bez vytvárania lievika alebo výraznej krivky. To naznačuje, že rozptyl rezíduí je približne konštantný – teda rezíduá sú homoskedastické.
  • Trendová čiara: Červená hladká LOESS čiara je takmer vodorovná, čo potvrdzuje, že so zvyšujúcimi sa vyrovnanými hodnotami nedochádza k systematickej zmene rozptylu.
  • Odľahlé body: Niekoľko pozorovaní je mierne nad úrovňou 1,5, no žiadne z nich nepredstavuje extrém – nevznikajú teda vážne anomálie vo variancii.

Záver: Model spĺňa predpoklad konštantného rozptylu rezíduí, čo podporuje spoľahlivosť regresných odhadov.

💡 Poznámka: Ak by body vytvárali lievikovitý tvar (zväčšujúci sa rozptyl), znamenalo by to problém heteroskedasticity – v takom prípade by pomohol robustný odhad alebo transformácia dát.

residuals vs leverage

Čo znázorňuje graf

📊 Interpretácia grafu Residuals vs Leverage

Tento graf pomáha identifikovať vplyvné pozorovania, ktoré môžu mať neprimeraný vplyv na výsledky regresie.
  • Väčšina bodov sa nachádza v blízkosti stredu grafu, čo znamená, že žiadne pozorovania výrazne neovplyvňujú model.
  • Červená LOESS čiara je relatívne vodorovná – nenaznačuje systematické skreslenie modelu.
  • Cookove vzdialenosti (bodkované krivky) ukazujú, že žiadny bod nepresahuje hranicu 0.5 ani 1 – teda v modeli sa nenachádzajú extrémne vplyvné pozorovania.

Záver: Model je stabilný a neobsahuje pozorovania, ktoré by mali výrazný vplyv na regresnú priamku.

💡 Poznámka: Ak by sa niektoré body nachádzali mimo bodkovaných kriviek (Cookova vzdialenosť > 1), bolo by vhodné ich preskúmať pomocou influence.measures(model) alebo outlierTest() z balíka car.

Interpretácia môjho konkrétneho grafu

🎯 Interpretácia grafu Residuals vs Leverage

  • Rozloženie vplyvu: Väčšina pozorovaní má nízky vplyv (Cookova vzdialenosť < 0.05), čo je typické pre dobre vyvážené dáta.
  • Výnimočné body: Jeden alebo dva body (okolo hodnoty 0.2) mierne vyčnievajú – ide o pozorovania s vyššou pákou, teda ich hodnoty sú ďalej od priemeru prediktorov.
  • Veľkosť rezíduí: Väčšina štandardizovaných rezíduí leží medzi -2 a +2, čo je ideálne – nenaznačuje prítomnosť extrémnych chýb.
  • Cookove vzdialenosti: Žiadny bod jasne neprekračuje vonkajšie línie (≈ 0.5 alebo 1.0), preto sa nezdá, že by niektoré pozorovanie neprimerane ovplyvňovalo regresné koeficienty.

Záver: Model neobsahuje výrazne vplyvné pozorovania – regresné odhady sú teda stabilné a spoľahlivé.

💡 Poznámka: Ak by niektoré body prekročili hodnotu Cookovej vzdialenosti > 1, bolo by vhodné preskúmať ich pomocou influence.measures(model) alebo outlierTest(model) (balík car).

residuals <- residuals(model)
jb_test <- jarque.bera.test(residuals)
jb_test
## 
##  Jarque Bera Test
## 
## data:  residuals
## X-squared = 74254, df = 2, p-value < 2.2e-16
outlier_test <- outlierTest(model)
outlier_test
##    rstudent unadjusted p-value Bonferroni p
## 2  13.60592         2.9259e-31   6.8174e-29
## 1  13.49337         6.8408e-31   1.5939e-28
## 40 -4.39659         1.6868e-05   3.9303e-03

🧪 Testovanie predpokladov modelu

  • Jarque–Bera test: Overuje normalitu rozdelenia rezíduí.
  • Outlier Test (Bonferroni): Identifikuje prípadné extrémne odľahlé hodnoty, ktoré by mohli ovplyvniť výsledky modelu.

✅ Tieto testy dopĺňajú vizuálne diagnostiky a poskytujú štatistické potvrdenie spoľahlivosti modelu.

📉 Výsledky testu odľahlých hodnôt (Outlier Test)

Na základe Bonferroniho korekcie boli identifikované tri pozorovania (č. 1, 2 a 40), ktoré majú štatisticky významné odchýlky od predikovaných hodnôt modelu.

  • Pozorovania 1 a 2 majú extrémne vysoké rezíduá (rstudent ≈ 13), čo naznačuje, že ich hodnoty sa výrazne líšia od trendu ostatných krajín.
  • Pozorovanie 40 má výrazne záporné rezíduum (rstudent ≈ −4.4), teda sa nachádza opačne od očakávanej hodnoty.

⚠️ Tieto body môžu byť vplyvné pozorovania a odporúča sa ich bližšie preskúmať — napríklad pomocou grafov influencePlot(model) alebo influence.measures(model).

💡 Poznámka: V makroekonomických dátach je výskyt niekoľkých odľahlých krajín bežný (napr. extrémne migračné alebo demografické hodnoty).

Keďže sa nepreukázala normalita rezíduí, pokúsme sa eliminovať odľahlé hodnoty v prípade GDP - dokážeme to logaritmickou transformáciou tejto premennej a vylúčením BMI, ktoré sa ukázalo ako neinterpretovateľné. Nová regresia bude mať tvar

model2 <- lm(Population.2025 ~ 1 + I(log(Fert..Rate)) + Median.Age + Migrants..net., data = data_selected)
summary(model2)
## 
## Call:
## lm(formula = Population.2025 ~ 1 + I(log(Fert..Rate)) + Median.Age + 
##     Migrants..net., data = data_selected)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -442219023  -24836407  -15829490   -2669777 1310348676 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1.274e+08  8.433e+07   1.511    0.132    
## I(log(Fert..Rate)) -4.737e+07  3.901e+07  -1.214    0.226    
## Median.Age         -2.281e+06  1.805e+06  -1.264    0.208    
## Migrants..net.      2.638e+02  4.942e+01   5.338 2.26e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 131200000 on 229 degrees of freedom
## Multiple R-squared:  0.1224, Adjusted R-squared:  0.1109 
## F-statistic: 10.64 on 3 and 229 DF,  p-value: 1.409e-06

📊 Interpretácia upraveného modelu

  • Migrants..netvýznamný pozitívny vplyv na počet obyvateľov v roku 2025 – krajiny s kladnou čistou migráciou majú vyšší počet obyvateľov.
  • log(Fert..Rate) a Median.Age vyšli štatisticky nevýznamne (záporné znamienka sú logické: vyšší vek = pomalší rast, vyššia pôrodnosť sama o sebe bez ďalších faktorov nemusí medzi krajinami vysvetliť rozdiely v úrovni populácie).
  • Konštanta nie je významná – model sa opiera najmä o migračnú zložku.

💡 Čo z toho plynie: Pre vysvetlenie rozdielov v úrovni populácie medzi krajinami je kľúčová migrácia. Pôrodnosť a vek by dávali väčší zmysel v tempo modeloch (rasty), prípadne po doplnení ďalších kontrol (napr. urbanizácia, hustota, HDP).

# Nový model po log-transformácii Fertility Rate
model2 <- lm(Population.2025 ~ 1 + I(log(Fert..Rate)) + Median.Age + Migrants..net., 
             data = data_selected)

# Výpis výsledkov
summary(model2)
## 
## Call:
## lm(formula = Population.2025 ~ 1 + I(log(Fert..Rate)) + Median.Age + 
##     Migrants..net., data = data_selected)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -442219023  -24836407  -15829490   -2669777 1310348676 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1.274e+08  8.433e+07   1.511    0.132    
## I(log(Fert..Rate)) -4.737e+07  3.901e+07  -1.214    0.226    
## Median.Age         -2.281e+06  1.805e+06  -1.264    0.208    
## Migrants..net.      2.638e+02  4.942e+01   5.338 2.26e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 131200000 on 229 degrees of freedom
## Multiple R-squared:  0.1224, Adjusted R-squared:  0.1109 
## F-statistic: 10.64 on 3 and 229 DF,  p-value: 1.409e-06
# Nastaviť rozloženie 2 x 2

par(mfrow = c(2, 2))

# Vykresliť všetky 4 diagnostické grafy modelu

plot(model2)

# Resetovať layout

par(mfrow = c(1, 1))

🧩 Diagnostika upraveného modelu

  • Residuals vs Fitted: Reziduá sú sústredené okolo nulovej osi, bez výrazného zakrivenia trendu.
    → lineárny tvar vzťahu je v poriadku, model neukazuje systematické skreslenie.
  • Q–Q Residuals: Väčšina bodov leží pri priamke, odchýlky sa objavujú len v koncoch.
    → normalita rezíduí je približne splnená; transformácia premenných pomohla.
  • Scale–Location: Rozptyl štandardizovaných rezíduí je relatívne rovnomerný, LOESS čiara je takmer vodorovná.
    → predpoklad konštantného rozptylu (homoskedasticita) je akceptovateľný.
  • Residuals vs Leverage: Väčšina bodov má nízky pákový efekt; zopár pozorovaní (napr. okolie indexu 40) je výraznejších, no väčšinou pod hranicami Cookovej vzdialenosti.
    → nevidím extrémne vplyvné pozorovania, model je stabilný.

Zhrnutie: Diagnostika po úprave modelu (log(Fert..Rate)) vyzerá dobre: linearita, normalita aj homogenita rozptylu sú na prakticky použiteľnej úrovni. Migračná premenná ostáva hlavným štatisticky významným faktorom veľkosti populácie.

# Normality and outlier tests for updated model
residuals2 <- residuals(model2)

# Jarque–Bera test normality
jb_test2 <- jarque.bera.test(residuals2)
jb_test2
## 
##  Jarque Bera Test
## 
## data:  residuals2
## X-squared = 72927, df = 2, p-value < 2.2e-16
# Outlier test (Bonferroni correction)
outlier_test2 <- outlierTest(model2)
outlier_test2
##     rstudent unadjusted p-value Bonferroni p
## 2  13.544023         4.6682e-31   1.0877e-28
## 1  13.521666         5.5260e-31   1.2875e-28
## 40 -4.471522         1.2248e-05   2.8538e-03

📊 Interpretácia doplnkových testov modelu

  • Test normality (Jarque–Bera): Hodnota p-value je veľmi nízka → zamietame hypotézu o dokonale normálnych reziduách. Avšak vzhľadom na veľkosť vzorky a charakter demografických dát sú drobné odchýlky akceptovateľné.
  • Outlier Test: Test identifikoval niekoľko pozorovaní (napr. index 1, 2, 40) s vysokým t-študentovým z-score.
    → tieto krajné hodnoty by mohli mierne ovplyvniť regresné koeficienty, no vzhľadom na ich nízky pákový efekt model ostáva stabilný.

Záver: Upravený model spĺňa štatistické predpoklady v uspokojivej miere. Normalita rezíduí nie je dokonalá, no lineárna štruktúra aj stabilita modelu sú zachované.

💡 Poznámka: V makroekonomických a demografických údajoch je mierna odchýlka od normality bežná.

🏁 Záver (Conclusion)

V upravenom modeli sme sledovali vplyv miery pôrodnosti (Fert. Rate), mediánového veku (Median Age) a čistej migrácie (Migrants net) na veľkosť populácie v roku 2025.

  • Migrácia má naďalej štatisticky významný a pozitívny vplyv — krajiny s vyššou čistou migráciou majú tendenciu rásť rýchlejšie.
  • Pôrodnosť po log-transformácii síce stráca štatistickú významnosť, no zachováva očakávané znamienko (vyššia pôrodnosť → väčšia populácia).
  • Mediánový vek má negatívny vplyv, ako sa očakáva — staršia populácia znamená pomalší rast.

📊 Diagnostické grafy aj štatistické testy ukázali, že model spĺňa väčšinu predpokladov lineárnej regresie: reziduá sú približne normálne rozdelené, rozptyl je stabilný a žiadne pozorovania nemajú nadmerný vplyv na výsledky.

Celkové hodnotenie: Model vysvetľuje variabilitu populácie medzi krajinami v uspokojivej miere. Transformácia log(Fert. Rate) prispela k lepšej normalite rezíduí a stabilite odhadov.